The Databento team is currently working on this article.
CME Globex MDP 3.0
The CME Group Market Data Platform (MDP) 3.0 disseminates event-based bid, ask, trade, and statistical data for CME Group markets (CME, CBOT, NYMEX, and COMEX).
Databento's coverage for CME starts in May 2017, when MDP 3.0 introduced full granularity for every order event (MBOFD) in addition to providing aggregated depth at a limited number of price levels (MBP).
Databento's data is based on the MBOFD data coverage; we do not normalize CME's incremental MBP messages. CME makes the details of their specification available on their website here.
Timestamps
CME MDP 3.0 messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | CME Tag | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
60-TransactTime | The matching-engine-received timestamp. |
ts_in_delta |
52-SendingTime | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
MBO normalization
F_LAST
flag in MBO
When interpreting MBO data, the F_LAST
flag (0x80
, 128) is used to mark the last record in a single event for each instrument_id
.
This flag is based on CME's "End of event" flag in tag 5799-MatchEventIndicator.
However, CME only sets this flag on one single message, even if the event spanned multiple instruments.
Instead, we set the F_LAST
flag on the last record for each instrument, so that the data can be interpreted consistently with any subset of instruments.
Records with action
None may carry F_LAST
.
Across all of Databento's feeds, it is important to use the F_LAST
flag when calculating the best bid and offer, like our MBP-1 schema.
Between records without the F_LAST
flag, the book is in the process of updating, and the apparent best bid and offer may have already been traded.
This is accounted for when we construct our other schemas, such as MBP-1 and Trades. Outside of MBO, this flag can be ignored.
Order events
Records in the MBO schema with Add, Modify, and Cancel actions are normalized from Market Data Incremental Refresh - MBOFD, and records with Trade and Fill actions are normalized from Market Data Incremental Refresh - Trade Summary messages, and records with the cleaR action are normalized from Market Data Incremental Refresh - Channel Reset messages.
Trade events
The MBO schema includes detailed information about both sides of the trade by normalizing Market Data Incremental Refresh - Trade Summary messages from CME into Trade and Fill actions. The MBP-n and trades schemas include Trade records, but do not include Fill detail records.
Each CME MDP 3.0 Market Data Incremental Refresh - Trade Summary message from CME contains two repeating groups: a set of trade summaries, followed by a set of order ID entries.
Each trade summary in the message is normalized into one Trade record.
If there is a defined aggressor for the trade, its corresponding order ID entry from the second set is used to populate the order_id
field.
This commonly happens when an incoming order partially executes, leaving the remaining quantity to rest on the book.
Following each Trade record, the remaining (passive) order ID entries are normalized into Fill records. These records correspond to resting orders in the order book, but do not modify the orders.
If the aggressing order existed on the book, then a Fill record will be emitted for it. This can happen if a resting order was modified to cross the book. If the aggressing order did not already exist on the book then its Fill record is suppressed, however its order ID is still reported in the Trade record as described above.
Side
Implied trades may not have an aggressing side set. These trades will normalized with side set to None.
Order Priority
Although Databento does not expose tag 37707-MDOrderPriority in the MBO schema, first in, first out priority (FIFO) can be determined from message order.
Messages for a single instrument_id
are never reordered, even if they have the same timestamps.
Our daily MBO snapshots also preserve FIFO order priority.
CME MBO snapshot
At the beginning of the weekly trading session, CME publishes a MBO order snapshot.
This snapshot contains any orders that persisted from the previous trading session, such as Good 'Till Cancelled orders.
The event timestamp (ts_event
) for these orders corresponds to the time the snapshot is generated by CME.
It does not reflect the original time the order was entered or last modified.
These orders are not published by CME in priority order. As Databento does not expose tag 37707-MDOrderPriority, if these MBO records were published by Databento in the same order they were sent from CME, it would not be possible to determine the correct order priority. In order to publish the records in priority order, Databento buffers the orders from the first CME event of the trading session, per instrument.
Once the End of Event is reached, Databento sorts the records in priority order and then publishes them.
Therefore, the order priority is correctly reflected by the order of publishing.
The ts_recv
for these records will be set to the ts_recv
of the final record of the event.
As the records have been slightly delayed and the ts_recv
of the initial records may not match the original ts_recv
, the flag F_BAD_TS_RECV
is set on these records.
The F_SNAPSHOT
flag is also set on these records to indicate that they are from the CME snapshot.
Weekly Sessions
Although CME pauses trading daily, the market follows a weekly session structure with most instruments accepting orders from Sunday night to Friday night (local time). To make it easier to work with historical MBO data, Databento includes an order book snapshot at 00:00:00 UTC each weekday (Monday-Friday).
Before the trading session begins, or during the daily pause, it is normal for order books to be locked or crossed: CME will accept orders but won't execute any trades until the opening uncrossing.
Details about the trading hours and sessions for each product group are available on the Trading hours page of CME's website.
Statistics normalization
Databento normalizes the following daily statistics from Market Data Incremental Refresh - Daily Statistics:
- Settlement price
- Cleared volume
- Open interest
- Fixing price
The exact times these statistics are published will vary. Cleared volume and open interest statistics will normally publish on the following UTC date, unless they are for Friday's session, in which case they will be published on the following Sunday.
Databento normalizes the following session statistics from Market Data Incremental Refresh - Session Statistics:
- Opening and indicative opening price
- Trading session high and low price
- Trading session highest bid and lowest offer
These statistics are published throughout the trading session as the values change.
Reference timestamp (ts_ref
)
CME includes tag 5796-TradingReferenceDate, the trading session date, with daily statistics.
This field is normalized to ts_ref
as a nanosecond-precision UNIX timestamp for consistency with other timestamps.
Because the source only has date precision, users should avoid localizing ts_ref
to their time zone.
Multiple records for the same date
CME often publishes multiple messages for the same trading session date (indicated by ts_ref
) and daily statistic.
The initial messages indicate preliminary values, and the final message for the trading session date indicates the final value.
The final message is always the most accurate and the one you should use, when available.
Stat flags
Settlement price statistics normalize the bit field tag 731-SettlPriceType to the stat_flags
field.
Value | Decimal | Description |
---|---|---|
1 << 0 |
1 | Whether the settlement price is final, as opposed to preliminary. |
1 << 1 |
2 | Whether the settlement price is actual, as opposed to theoretical. |
1 << 2 |
4 | Some products have a different trading tick size than their clearing tick size. 1 if settling at the trading tick and 0 if at the clearing tick. |
1 << 3 |
8 | Whether the price is an intraday settlement price and disseminated before the official end-of-day settlement calculation. |
The CME documentation on settlement prices expands on the meaning of each flag value.
Symbology
Databento normalizes the asset
field from tag 6937-Asset of the Market Data Security Definition message.
The asset
field is used when requesting data with parent symbology.
Databento normalizes the raw_symbol
field from tag 55-Symbol of the Security Definition message.
This symbol contains the product code, followed by the month code, followed by the year.
Previously, this field would only contain a 1-digit year, e.g. ESZ3
for the E-mini S&P 500 December 2023 contract.
In some recently listed contracts, CME has begun using a 2-digit year, e.g. NGN25
for the Henry Hub Natural Gas July 2025 contract.
Spreads and combos
In addition to futures and options on futures, this dataset also contains data for both exchange-listed spreads and user-defined spreads (UDS).
Spreads and combinations consisting only of futures (such as exchange-listed calendar spreads) are considered part of the futures parent symbols.
For example, ESH4-ESZ4
is a calendar spread contained in ES.FUT
.
These spreads can have negative prices.
Spreads and combinations containing options (such as butterfly or covered spreads) are considered part of the option parent symbols.
For example, UD:1V: VT 2533938
is a vertical option spread contained in ES.OPT
.
The CME documentation on spreads and combinations contains an exhaustive list of the different spread types.
The instrument_class
field in the definition schema can be used to identify spread instruments generically.
The SecuritySubType
field in the exchange documentation is normalized to the secsubtype
field in the definition
schema and can be used to identify the exchange-specific spread type.
To identify the parent symbol of strategies and user-defined spreads, the asset
field in the definition schema should be used.
Status normalization
Status records are normalized from Market Data Security Status messages.
A single status message from CME may the update status of all instruments in a group
, all instruments in a group
and asset
, or an individual instrument.
To support requesting data for individual instruments, Databento normalizes all these messages into instrument-level status messages.
When requesting status schema data for multiple instruments in the same group
, there will be status records that are identical minus the instrument_id
.
The state fields of the status schema: is_trading
, is_quoting
, and is_short_sell_restricted
are based solely on the status updates from CME.
Group-level status updates generate a status record for each instrument with a definition, regardless of activation or expiration,
as a result, before activation the status state fields may be incorrect.
Matching Algorithms
CME implements various matching algorithms across its universe of products, with FIFO being the most common.
Specific details on the different algorithms can be found on the Supported Matching Algorithms page on the CME website.
MDP 2 data
On 2017-05-21, CME introduced full granularity for every order event (MBOFD). Data prior to this date is based on the MDP 2, level-aggregated FIX protocol. This leads to some differences in the data.
Timestamps
MDP 2 data is sourced from FIX flat files.
Because of this, capture timestamps (commonly available as ts_recv
) are not available.
The ts_recv
field on all MDP 2 data is set to the same value as ts_event
.
Because of this, all records on MDP 2 data have the F_BAD_TS_RECV
flag set.
This is normal and expected.
Nanosecond-resolution timestamps have been introduced by CME on 2015-11-20. Timestamps prior to that date are limited to millisecond resolution.
Databento Field | CME Tag | Description |
---|---|---|
ts_recv |
52-SendingTime | The matching-engine-sending timestamp. |
ts_event |
52-SendingTime | The matching-engine-sending timestamp. |
MBO format
MDP 2 data predates the introduction of full-depth MBO by CME. Because of this, the MBO schema is not available. The highest granularity schema available for MDP 2 data is MBP-10.
Status schema
There's significantly less status data prior to 2015, this is expected. Before November 2015, status changes from the normal trading schedule did not result in a status message.
Cboe BYX Depth
Cboe BYX disseminates full depth-of-book data for their exchange through their Pitch Feed, which Databento receives over UDP multicast in our NY4 data center.
The Multicast Depth of Book (Pitch) Specification is available as a PDF from Cboe's website.
Info
Timestamps
Cboe messages received by Databento will generally include one timestamp with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pitch Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Time + TimeOffset | The matching-engine-received timestamp. |
ts_in_delta |
None | The difference between ts_recv and ts_event . Redundant and can be safely ignored. |
More details about our timestamps are available in our timestamping guide.
Statistics
Databento provides Opening Price and Closing Price statistics, normalized from the Auction Summary message. These statistics have the auction uncrossing price and quantity for the respective event.
Imbalance normalization
Cboe BYX provides information about opening and closing cross imbalances in their Imbalance message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | Pitch Field | Description |
---|---|---|
ref_price |
ReferencePrice | Collared price at which the periodic auction would trade. |
paired_qty |
min(BuyShares, SellShares) | The number of shares that are eligible to match at the ref_price . |
total_imbalance_qty |
abs(SellShares - BuyShares) | The number of shares not paired at the ref_price . |
auction_type |
AuctionType | P: Periodic auction. |
side |
BuyShares, SellShares | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
Cboe BYZ Depth
Cboe BYZ disseminates full depth-of-book data for their exchange through their Pitch Feed, which Databento receives over UDP multicast in our NY4 data center.
The Multicast Depth of Book (Pitch) Specification is available as a PDF from Cboe's website.
InfoThe Databento team is currently working on this article.
Timestamps
Cboe messages received by Databento will generally include one timestamp with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pitch Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Time + TimeOffset | The matching-engine-received timestamp. |
ts_in_delta |
None | The difference between ts_recv and ts_event . Redundant and can be safely ignored. |
More details about our timestamps are available in our timestamping guide.
Statistics
Databento provides Opening Price and Closing Price statistics, normalized from the Auction Summary message. These statistics have the auction uncrossing price and quantity for the respective event.
Imbalance normalization
Cboe BYX provides information about opening and closing cross imbalances in their Imbalance message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | Pitch Field | Description |
---|---|---|
ref_price |
ReferencePrice | The BBO collared auction price. |
cont_book_clr_price |
IndicativePrice | Price at which the auction book and the continuous book would match. |
auct_interest_clr_price |
AuctionOnlyPrice | Price at which the auction book would match using only Eligible Auction Orders. |
paired_qty |
min(BuyShares, SellShares) | The number of shares that are eligible to match at the ref_price . |
total_imbalance_qty |
abs(SellShares - BuyShares) | The number of shares not paired at the ref_price . |
auction_type |
AuctionType | O: Opening auction. C: Closing auction. H: Halt auction. I: IPO auction. M: Cboe Market Close. |
side |
BuyShares, SellShares | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
Cboe EDGA Depth
Cboe EDGA disseminates full depth-of-book data for their exchange through their Pitch Feed, which Databento receives over UDP multicast in our NY4 data center.
The Multicast Depth of Book (Pitch) Specification is available as a PDF from Cboe's website.
InfoThe Databento team is currently working on this article.
Timestamps
Cboe messages received by Databento will generally include one timestamp with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pitch Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Time + TimeOffset | The matching-engine-received timestamp. |
ts_in_delta |
None | The difference between ts_recv and ts_event . Redundant and can be safely ignored. |
More details about our timestamps are available in our timestamping guide.
Cboe EDGX Depth
Cboe EDGX disseminates full depth-of-book data for their exchange through their Pitch Feed, which Databento receives over UDP multicast in our NY4 data center.
The Multicast Depth of Book (Pitch) Specification is available as a PDF from Cboe's website.
InfoThe Databento team is currently working on this article.
Timestamps
Cboe messages received by Databento will generally include one timestamp with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pitch Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Time + TimeOffset | The matching-engine-received timestamp. |
ts_in_delta |
None | The difference between ts_recv and ts_event . Redundant and can be safely ignored. |
More details about our timestamps are available in our timestamping guide.
Flags
For Cboe EDGX Depth, the F_PUBLISHER_SPECIFIC
flag is used in the MBO schema to indicate Retail Priority Orders (RPOs). MBO messages with action A
will have the F_PUBLISHER_SPECIFIC
flag set if the order is an RPO. This flag will not repeat on subsequent modifications or cancellations.
Retail Priority changes the order allocation priority model on EDGX to price-retail priority-time priority. Thus, Retail Priority Orders will have priority ahead of all other available interest at a price level.
Databento US Equities Basic
InfoDatabento Equities Basic was deprecated on January 13, 2025. Its datasets are now offered individually through our Databento US Equities Service. Existing users can access the legacy DBEQ.BASIC feed until March 1, 2025.
Databento US Equities Basic is a bundle of proprietary market data feeds from three US equities exchanges: NYSE Texas, NYSE National, and IEX.
Details for each underlying dataset are available on the following pages:
Venues
Databento US Equities bundles include data from multiple venues.
The publisher_id
field on every record can be used to identify the venue associated with the event.
The values corresponding to these IDs are available through the metadata.list_publishers endpoint.
Symbology
The constituent feeds of Databento US Equities use different symbol suffixes and different numerical IDs to refer to instruments. This page on ticker symbol conventions from Nasdaq outlines the four most common suffix patterns used for US equities, with the "Nasdaq Integrated Platform Suffix" being the most common, and the "CMS Suffix" used by NYSE-owned feeds such as NYSE Texas.
Databento US Equities bundles standardize on using the "Nasdaq Integrated Platform Suffix" for the raw symbol, regardless of which suffix is originally used by the venue.
However, in the definition schema, the raw_symbol
field will be based on the original value from the venue.
Additionally, Databento US Equities bundles use internally-assigned instrument IDs.
These IDs are assigned strictly from the raw symbol string; they do not take into account corporate actions like renames, relistings, or mergers.
The upstream-publisher-assigned instrument IDs are available in the raw_instrument_id
field of the definition schema.
Databento US Equities Mini
Databento US Equities Mini is a derived top-of-book dataset, sourced from the proprietary market data feeds of both alternative trading systems (ATS) and RegNMS venues.
Schemas
The following schemas are available for this dataset: MBP-1, BBO, TBBO, Trades, OHLCV-1s, OHLCV-1m, OHLCV-1h, OHLCV-1d, and Definitions.
Aggregated BBO
Databento US Equities Mini is an aggregated dataset, quotes are not provided for the individual component venues. A single aggregated BBO is printed for each instrument.
To provide this aggregated BBO, Databento calculates the best bid and best ask prices across the component venues of the feed, adding together all quantity (including odd lots) at the price of the BBO regardless of venue.
We do not aggregate the order counts across the component venues, so bid_ct_00
and ask_ct_00
will always be 0.
Venues
To qualify as a derived dataset, trade and BBO data are anonymized from the original venues' data.
Due to this, the publisher_id
of a trade does not identify the original venue of the trade, and will always have the value EQUS.MINI.EQUS
. The sequence
field is set to 0 on all messages.
Aggregated OHLCV
The OHLCV schemas for Databento US Equities Mini aggregate prices and volume across all the component venues. A single aggregated OHLCV message is printed per instrument, per interval.
Timestamps
Messages received by Databento from component venues will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
The ts_in_delta
field is not populated for this dataset and will always be set to 0.
Databento Field | Description |
---|---|
ts_recv |
The capture-server-received timestamp. |
ts_event |
The matching-engine-received timestamp. |
More details about our timestamps are available in our timestamping guide.
Databento US Equities Summary
Nasdaq disseminates consolidated volume and end-of-day statistics via their Nasdaq NLS+ feed. Databento receives these over UDP multicast in our NY4 data center.
PDF specifications are available on Nasdaq's website for the NLS+ feed.
Schemas
Databento normalizes the consolidated volume provided by the Nasdaq NLS+ feed on every trade into the statistics
schema. This volume is consolidated across all US exchanges.
Databento normalizes the end-of-day summary provided by the Nasdaq NLS+ feed into the ohlcv-1d
schema.
No other schemas are available on this dataset.
Timestamps
Nasdaq NLS+ messages received by Databento have at most one timestamp, which has nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
The extra field ts_in_delta
does not convey any additional information for this dataset, and is equivalent to ts_recv - ts_event
.
Databento Field | TotalView Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Timestamp | The matching-engine-received timestamp. |
More details about our timestamps are available in our timestamping guide.
End-of-day Summary
Nasdaq NLS+ disseminates an end-of-day summary via their API at three different times:
- Once at approximately 16:30 ET
- Once at approximately 17:20 ET
- Once at approximately 20:10 ET
Each of those summaries reflects the summary at the publishing time.
Databento only provides the last summary (from 20:10 ET) on the ohlcv-1d
schema, which includes the total post-market volume, published as a single OHLCV-1d message per date. This can lead to discrepancies when comparing against other data sources that use the other earlier summaries.
The first two preliminary summaries are disseminated by Databento under the statistics
schema. The stat_flags
field is set to 1 for the first summary and 2 for the second summary.
Eurex Exchange
Eurex Exchange disseminates full depth-of-book data for their exchange through their EOBI (Enhanced Order Book Interface) Feed, which Databento receives over UDP multicast in our FR2 data center.
The latest EOBI Specification is available from Eurex website.
Trading hours
The regular trading hours for Eurex are:
- 08:00 CET to 17:30 CET (European hours)
- 17:30 CET to 22:00 CET (U.S. hours)
The extended trading hours for Eurex are:
- 01:00 CET to 08:00 CET (Asian hours)
Extended (Asian) trading hours only include a subset of instruments, including European indices, interest rate futures, and cryptocurrency futures.
Timestamps
Eurex EOBI messages received by Databento include multiple timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server. More details about our timestamps are available in our timestamping guide.
Databento Field | Eurex EOBI Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
RequestTime, TransactTime | RequestTime (Gateway request in timestamp) when available. TransactTime otherwise. |
ts_in_delta |
TransactTime from PacketHeader | Time when the feed handler writes packet on the wire. |
EOBI RequestTime
field is not available for the off-market trades (EOBI message TES Trade Report
), manual and auction trades (EOBI message Trade Report
), and cross request (EOBI message Cross Request
). Thus ts_event
is populated with TransactTime
field, which corresponds to the time when the transaction was processed by the exchange's matching engine.
The ts_event
for passive trade messages (EOBI messages Partial Order Execution
and Full Order Execution
) is populated with the RequestTime
from the aggressive order.
Definition normalization
Definition records are sourced daily from Reference Data Interface snapshot. Definition records for intra-day instruments are sourced from EOBI incremental feed.
Databento Field | Eurex RDI Field | Description |
---|---|---|
appl_id |
PartitionId | Identifies the instrument's partition. |
asset |
MarketSegment | Identifies the instrument's market segment. This field is used by parent and continuous symbology. |
raw_symbol |
SecurityDesc | Instrument identifier (See Symbology section below). |
secsubtype |
ProductComplex | Identifies the type of instrument (See Symbology section below). |
underlying |
MarketSegment | The market segment of the underlying (if there is an underlying). |
Symbology
Raw symbols are sourced from SecurityDesc
string field. The semantics varying according to the type of instrument (secsubtype
in the normalized message). The table below describes each instrument type, based on the venue's documentation.
Value | Instrument type | Format |
---|---|---|
1 |
Simple Instrument | PROD SI YYYYMMDD SM ES C/P StrikePrice VN |
2 |
Standard option strategy | PROD.O.YYMMDD.IST.SEQ-NO |
3 |
Non-standard option strategy | PROD.O.YYMMDD.IST.SEQ-NO |
4 |
Volatility strategy | PROD.V.YYMMDD.IST.SEQ-NO |
5 |
Futures spread | PROD.S.MONYY.MONYY.SPD |
6 |
Inter-product spread | PROD.I.YYMMDD.IST.SEQ-NO |
7 |
Standard futures strategy | PROD.F.YYMMDD.IST.SEQ-NO |
8 |
Pack and bundle | PROD.B.MONYY.IST |
9 |
Strip | PROD.T.YYMMDD.SEQ-NO |
10 |
Flexible instrument | PROD FI YYYYMMDD SM ES C/P StrikePrice VN for options. PROD FI YYYYMMDD SM for futures. |
11 |
Commodity strip | PROD.C.YYMMDD.IST.SEQ-NO |
12 |
Scaled simple instrument | PROD SI YYYYMMDD SM ES C/P StrikePrice VN QSF |
13 |
Non-standard volatility strategy | PROD.D.YYYYMMDD.SEQ-NO |
14 |
Total return future strategy | PROD.R.YYYYMMDD.IST.SEQ-NO |
The acronyms from the table above correspond to:
SM
: Settlement method (CS
for cash,PS
for Physical).ES
: Exercise style (EU
for European,AM
for American).VN
: Version number of an option. The version changes as a result of corporate events.IST
: Standard strategy type for complex instrument, as detailed in the Trading parameters document.SEQ-NO
: Unique sequence number of 6 characters per product.QSF
: Quantity scaling factor of scaled simple instruments.YYYYMMDD
: Contract date.MONYY
: Contract month-year.YYMMDD
: Creation date.O
,N
,V
,D
,F
: Identify different strategy types.I
: Identify inter-product spreads instruments.T
: Identify strip instruments.C
: Identify commodity strip instruments .
Expirations
Eurex only provides date-granularity expiration data in MaturityDate
field from the reference data.
As a result, the expiration
field in the definition schema will always be at UTC midnight, even when the instrument expires during or after the trading day.
Eurex also provides the MaturityMonthYear
field in the reference data, which corresponds to the instrument expiration month, and may be in a different month than the MaturityDate
field.
The MaturityMonthYear
field is mapped to the fields maturity_year
and maturity_month
in the definition schema (maturity_day
is not populated).
Statistics normalization
Databento provides the following statistics:
- Opening price: Published on the instrument's first trade (or in the end of the day if no trade occurs).
- Trading session high price: Published at the end of the day.
- Trading session low price: Published at the end of the day.
- Close price: Published at the end of the day.
- Cleared volume: Published at the end of the day.
- Settlement price: Published during the day, as soon as they are available. Different products have different schedules.
- Adjusted Open Interest : Published daily around 13:30:00 CET.
The end-of-day statistics are published around 20:00:00 CET, when the session transitions into a closed state. Some instruments might have end-of-day statistics on a different schedule.
Manual trades do not affect price statistics.
Stat flags
Settlement price statistics normalize the field tag 731-SettlPriceType
to the stat_flags
field.
Value | Decimal | Description |
---|---|---|
1 << 0 |
1 | Final settlement |
1 << 1 |
2 | Theoretical (daily) settlement |
Off-market trades
Trades reported in TES Trade Report
and in Trade Report
(with MatchType
equal to ManualTradeEntry
) EOBI messages are considered off-market.
Off-market trades have their publisher_id
set to XEUR.EOBI.XOFF
to distinguish them from on-exchange trades, which have their publisher_id
set to XEUR.EOBI.XEUR
.
This distinction is also reflected on the OHLCV schemas - if an interval contains both on-market and off-market trades for an instrument, two OHLCV messages will be published for that instrument on that interval, one with XEUR.EOBI.XEUR
as the publisher_id
and one with XEUR.EOBI.XOFF
.
Order Identifier
EOBI does not provide an order identifier (order_id
) field. Instead, it relies on two fields to uniquely identify an order of a given instrument: TrdRegTSTimePriority
(priority timestamp) and Side
.
Databento normalizes the order_id
field in MBO schema by combining both priority timestamp and side. To extract the priority timestamp from the order_id
, the most-significant bit can be masked, as below:
priority_timestamp = order_id & 0x7FFFFFFFFFFFFFFF
European Energy Exchange
European Energy Exchange (EEX) disseminates full depth-of-book data for their exchange through their EOBI (Enhanced Order Book Interface) feed, which Databento receives over UDP multicast in our FR2 data center. The XEEE.EOBI
dataset does not disseminate data for EEX spot market, only for derivatives market.
The latest EOBI Specification is available from Eurex website.
Trading hours
The base trading hours on the EEX derivatives take place on weekdays from 08:00:00 CET to 17:00:00 CET. These trading hours can vary depending on the type of market.
EEX Japanese power futures trading hours are from 16:00 JST to 18:00 JST (08:00 CET to 10:00 CET).
EEX provides holiday calendars across different market types.
Timestamps
EEX EOBI messages received by Databento include multiple timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server. More details about our timestamps are available in our timestamping guide.
Databento Field | EEX EOBI Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
RequestTime, TransactTime | RequestTime (Gateway request in timestamp) when available. TransactTime otherwise. |
ts_in_delta |
TransactTime from PacketHeader | Time when the feed handler writes packet on the wire. |
EOBI RequestTime
field is not available for the off-market trades (EOBI message TES Trade Report
), manual and auction trades (EOBI message Trade Report
), and cross request (EOBI message Cross Request
). Thus ts_event
is populated with TransactTime
field, which corresponds to the time when the transaction was processed by the exchange's matching engine.
The ts_event
for passive trade messages (EOBI messages Partial Order Execution
and Full Order Execution
) is populated with the RequestTime
from the aggressive order.
Definition normalization
Definition records are sourced daily from Reference Data Interface snapshot. Definition records for intra-day instruments are sourced from EOBI incremental feed.
Databento Field | EEX RDI Field | Description |
---|---|---|
appl_id |
PartitionId | Identifies the instrument's partition. |
asset |
MarketSegment | Identifies the instrument's market segment. This field is used by parent and continuous symbology. |
raw_symbol |
SecurityDesc | Instrument identifier (See Symbology section below). |
secsubtype |
ProductComplex | Identifies the type of instrument (See Symbology section below). |
underlying |
MarketSegment | The market segment of the underlying (if there is an underlying). |
Symbology
Raw symbols are sourced from SecurityDesc
string field. The semantics varying according to the type of instrument (secsubtype
in the normalized message). The table below describes each instrument type, based on the venue's documentation.
Value | Instrument type | Format |
---|---|---|
1 |
Simple Instrument | PROD SI YYYYMMDD SM ES C/P StrikePrice VN |
2 |
Standard option strategy | PROD.O.YYMMDD.IST.SEQ-NO |
3 |
Non-standard option strategy | PROD.O.YYMMDD.IST.SEQ-NO |
4 |
Volatility strategy | PROD.V.YYMMDD.IST.SEQ-NO |
5 |
Futures spread | PROD.S.MONYY.MONYY.SPD |
6 |
Inter-product spread | PROD.I.YYMMDD.IST.SEQ-NO |
7 |
Standard futures strategy | PROD.F.YYMMDD.IST.SEQ-NO |
8 |
Pack and bundle | PROD.B.MONYY.IST |
9 |
Strip | PROD.T.YYMMDD.SEQ-NO |
10 |
Flexible instrument | PROD FI YYYYMMDD SM ES C/P StrikePrice VN for options. PROD FI YYYYMMDD SM for futures. |
11 |
Commodity strip | PROD.C.YYMMDD.IST.SEQ-NO |
12 |
Scaled simple instrument | PROD SI YYYYMMDD SM ES C/P StrikePrice VN QSF |
13 |
Non-standard volatility strategy | PROD.D.YYYYMMDD.SEQ-NO |
14 |
Total return future strategy | PROD.R.YYYYMMDD.IST.SEQ-NO |
The acronyms from the table above correspond to:
SM
: Settlement method (CS
for cash,PS
for Physical).ES
: Exercise style (EU
for European,AM
for American).VN
: Version number of an option. The version changes as a result of corporate events.IST
: Standard strategy type for complex instrument, as detailed in the Trading parameters document.SEQ-NO
: Unique sequence number of 6 characters per product.QSF
: Quantity scaling factor of scaled simple instruments.YYYYMMDD
: Contract date.MONYY
: Contract month-year.YYMMDD
: Creation date.O
,N
,V
,D
,F
: Identify different strategy types.I
: Identify inter-product spreads instruments.T
: Identify strip instruments.C
: Identify commodity strip instruments .
Expirations
EEX only provides date-granularity expiration data in MaturityDate
field from the reference data.
As a result, the expiration
field in the definition schema will always be at UTC midnight, even when the instrument expires during or after the trading day.
EEX also provides the MaturityMonthYear
field in the reference data, which corresponds to the instrument expiration month, and may be in a different month than the MaturityDate
field.
The MaturityMonthYear
field is mapped to the fields maturity_year
and maturity_month
in the definition schema (maturity_day
is not populated).
Statistics normalization
Databento provides the following statistics:
- Opening price: Published on the instrument's first trade (or in the end of the day if no trade occurs).
- Trading session high price: Published at the end of the day.
- Trading session low price: Published at the end of the day.
- Close price: Published at the end of the day.
- Cleared volume: Published at the end of the day.
- Final Settlement price: Published daily around 19:25:00 CET.
- Open Interest : Published daily around 21:10:00 CET.
Settlement price and open interest are only provided for options and futures outrights that had any trades during the day. Settlement price and open interest are not provided for Freight Futures and Options.
Most end-of-day statistics are published around 18:45:00 CET, when the session transitions into a closed state. Some instruments have end-of-day statistics on a different schedule, such as the Japanese power futures.
Manual trades do not affect price statistics.
Off-market trades
Trades reported in TES Trade Report
and in Trade Report
(with MatchType
equal to ManualTradeEntry
) EOBI messages are considered off-market.
Off-market trades have their publisher_id
set to XEEE.EOBI.XOFF
to distinguish them from on-exchange trades, which have their publisher_id
set to XEEE.EOBI.XEEE
.
This distinction is also reflected on the OHLCV schemas - if an interval contains both on-market and off-market trades for an instrument, two OHLCV messages will be published for that instrument on that interval, one with XEEE.EOBI.XEEE
as the publisher_id
and one with XEEE.EOBI.XOFF
.
Order Identifier
EOBI does not provide an order identifier (order_id
) field. Instead, it relies on two fields to uniquely identify an order of a given instrument: TrdRegTSTimePriority
(priority timestamp) and Side
.
Databento normalizes the order_id
field in MBO schema by combining both priority timestamp and side. To extract the priority timestamp from the order_id
, the most-significant bit can be masked, as below:
priority_timestamp = order_id & 0x7FFFFFFFFFFFFFFF
ICE Endex iMpact
ICE disseminates FOD (full order depth), MBP (market by price), TOB (top-of-book) and market statistics data for futures, spot contracts and options on futures via their iMpact feed, which Databento receives over UDP multicast in our Aurora DC3 data center.
For futures and spot, ICE publishes both FOD and MBP-5. Databento only normalizes the FOD messages. For options, ICE publishes MBP-10, MBP-5 and top-of-book. Databento only normalizes the MBP-10 messages.
This means that for options, only the top 10 levels of the book are available even in the MBO schema. For futures the full market is shown.
Timestamps
ICE iMpact messages received by Databento will generally include two timestamps with microsecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | ICE Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
TransactDateTime and SequenceWithinMillis | The matching-engine-processed timestamp with sub-microsecond sequence number. |
ts_in_delta |
SentDateTime | The matching-engine-sending timestamp. |
ICE provides microsecond granularity timestamps along with sub-microsecond sequence numbers for ordering that are normalized as nanosecond timestamps for consistency in ordering with other datasets.
More details about our timestamps are available in our timestamping guide.
Matching Engine Location
ICE Endex has matching engines both in Chicago and Basildon. Databento captures the data for both matching engines in our Aurora DC3 location.
MBO normalization
For options, the ICE iMpact feed only includes market-by-price, which matches Databento's MBP-10 schema. We do not offer these messages in our MBO schema. They are only available on MBP-10 and other downstream schemas.
Each ICE "Trade Message" is normalized into a single MBO record with the Trade action, and the message's "TradeID" field is used as the order_id
.
ICE does not disseminate information about the passive side of the trade. The corresponding Fill record will have side
equal to N
and the same order_id
value as the Trade record.
When ICE does not specify the aggressing side, Trade records will have side
equal to N
.
System priced legs
A system priced leg is the result of a trade in the outright spread. These trades, as published by the exchange, can have prices that are 10% or more off from the best bid and offer. ICE recommends that the price of these trades isn't counted towards market statistics.
Databento normalizes system priced legs as a Trade record with side
equal to N
and an UNDEF_PRICE
(0x7fffffffffffffff
, 9223372036854775808) value for the price.
These trades are counted towards OHLCV volume, but not towards the open, high, low or close values. This means that OHLCV messages can have some (or even all) price values as UNDEF_PRICE
.
Off-market trades
Trades marked by the exchange as off-market have their publisher_id
set to NDEX.IMPACT.XOFF
to distinguish them from on-exchange trades.
This distinction is also reflected on the OHLCV schemas - if an interval contains both on-market and off-market trades for an instrument, two OHLCV messages will be published for that instrument on that interval, one with NDEX.IMPACT.NDEX
as the publisher_id
and one with NDEX.IMPACT.XOFF
.
Statistics
Stat flags
The IsOfficial
field in the ICE iMpact Settlement Price Message and IsSettlePriceOfficial
in
the Market Snapshot Message are normalized to the first (least-significant) bit of stat_flags
where the bit is set if
IsOfficial
is Y
.
This is consistent with the behavior for CME Globex MDP 3.0.
Symbology
ICE uses separate symbology for outrights and strategies.
Outrights
For outrights — individual futures and options — raw symbols are sourced from ContractSymbol
field.
If ContractSymbolExtra
is present, it's appended to the ContractSymbol
.
Outright contract symbols are composed of several parts indicating different aspects of the instrument.
For example, the Dutch TTF Natural Gas August 2024 futures contract's symbol is TFM FMQ0024!
.
This can be broken down as follows:
Component | Name | Description |
---|---|---|
TFM |
Contract code | The parent symbol or product this instrument belongs to. |
F |
Contract type | Indicates whether the instrument is a future (F ), swap, or other type of contract. |
M |
Term | The contract term, usually month (M ). |
Q |
Month | The expiration month, e.g. Q for August. |
00 |
Day | The effective date of the contract. 00 for monthly contracts. |
24 |
Year | The two-digit expiration year. |
! |
Switch character | Indicates additional distinguishing information about the contract. ! indicates no additional data. |
Options begin with their underlying future's symbol followed by an underscore (_
) and the option block.
Using the Dutch TTF Natural Gas August 2024 87.00 call TFO FMQ0024_OMCE0000045002072624
as an example, the option block breaks down as:
Component | Name | Description |
---|---|---|
O |
Option indicator | Will always be O for options. |
M |
Option type | The option term, e.g. M onthly or W eekly. |
C |
Put or call | Whether the option is a C all or P ut. |
E |
Option style | The exercise style of the option, e.g. E for European. |
000004500 |
Strike | The zero-padded nine-digit strike price. |
2 |
Strike decimal | The number of decimal places in the strike price. Applying two decimal places to 4500 gives a strike price of 45.00. |
072624 |
Expiration date | The MMDDYY expiration date of the option. TFO options expire before the contract month, in this case the August options expire July 26, 2024. |
Refer to ICE's Instrument Naming Convention document for a full explanation of the format of contract symbols. Because each dataset has a separate symbology namespace, Databento omits the MIC code from the fully-qualified symbol in ICE's examples.
Spots
Endex spots have neither a ContractSymbol
nor a StrategySymbol
, instead raw symbols are sourced from MarketDesc
.
Strategies
For spreads and strategies where ICE does not define a ContractSymbol
, raw symbols are sourced from `StrategySymbol``.
Strategy symbols are composed of several parts, however, due to the use of numeric identifiers, strategy raw symbols are harder to interpret than those for outrights.
The Dutch TTF Natural Gas year calendar strip TFO 800 108281469
can be broken down as follows:
Component | Name | Description |
---|---|---|
TFO |
Contract code | The parent symbol or product this instrument belongs to. |
800 |
Strategy code | A left space-padded three-digit number identifying the type of strategy, e.g. 900 for year calendar strip. Refer to the table in this document for a complete list of strategy codes. |
108281469 |
Market ID | A left space-padded 10-digit unique identifier. The same as instrument_id . |
Definitions
MarketTypeId
is normalized tomarket_segment_id
MICCode
is normalized toexchange
when it is provided: only for futures and future strategies
Expirations
ICE only provides date-granularity expiration data in OptionsExpirationDate
and ScreenLastTrade
fields.
As a result, the expiration
field in the definition schema will always be at UTC midnight, even when the option expires during or after the trading day.
ICE Europe Commodities iMpact
ICE disseminates FOD (full order depth), MBP (market by price), TOB (top-of-book) and market statistics data for futures and options on futures via their iMpact feed, which Databento receives over UDP multicast in our Aurora DC3 data center.
For futures, ICE publishes both FOD and MBP-5. Databento only normalizes the FOD messages. For options, ICE publishes MBP-10, MBP-5 and top-of-book. Databento only normalizes the MBP-10 messages.
This means that for options, only the top 10 levels of the book are available even in the MBO schema. For futures the full market is shown.
Timestamps
ICE iMpact messages received by Databento will generally include two timestamps with microsecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | ICE Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
TransactDateTime and SequenceWithinMillis | The matching-engine-processed timestamp with sub-microsecond sequence number. |
ts_in_delta |
SentDateTime | The matching-engine-sending timestamp. |
ICE provides microsecond granularity timestamps along with sub-microsecond sequence numbers for ordering that are normalized as nanosecond timestamps for consistency in ordering with other datasets.
More details about our timestamps are available in our timestamping guide.
Matching Engine Location
ICE Europe Commodities has matching engines both in Chicago and Basildon. Currently, the products offered by Databento all trade in the ICE silo, located in 350 E Cermak, Chicago. Databento captures the data in our Aurora DC3 location.
MBO normalization
For options, the ICE iMpact feed only includes market-by-price, which matches Databento's MBP-10 schema. We do not offer these messages in our MBO schema. They are only available on MBP-10 and other downstream schemas.
Each ICE "Trade Message" is normalized into a single MBO record with the Trade action, and the message's "TradeID" field is used as the order_id
.
ICE does not disseminate information about the passive side of the trade. The corresponding Fill record will have side
equal to N
and the same order_id
value as the Trade record.
When ICE does not specify the aggressing side, Trade records will have side
equal to N
.
System priced legs
A system priced leg is the result of a trade in the outright spread. These trades, as published by the exchange, can have prices that are 10% or more off from the best bid and offer. ICE recommends that the price of these trades isn't counted towards market statistics.
Databento normalizes system priced legs as a Trade record with side
equal to N
and an UNDEF_PRICE
(0x7fffffffffffffff
, 9223372036854775808) value for the price.
These trades are counted towards OHLCV volume, but not towards the open, high, low or close values. This means that OHLCV messages can have some (or even all) price values as UNDEF_PRICE
.
Off-market trades
Trades marked by the exchange as off-market have their publisher_id
set to IFEU.IMPACT.XOFF
to distinguish them from on-exchange trades.
This distinction is also reflected on the OHLCV schemas - if an interval contains both on-market and off-market trades for an instrument, two OHLCV messages will be published for that instrument on that interval, one with IFEU.IMPACT.IFEU
as the publisher_id
and one with IFEU.IMPACT.XOFF
.
Statistics
Stat flags
The IsOfficial
field in the ICE iMpact Settlement Price Message and IsSettlePriceOfficial
in
the Market Snapshot Message are normalized to the first (least-significant) bit of stat_flags
where the bit is set if
IsOfficial
is Y
.
This is consistent with the behavior for CME Globex MDP 3.0.
Symbology
ICE uses separate symbology for outrights and strategies.
Outrights
For outrights — individual futures and options — raw symbols are sourced from ContractSymbol
field.
If ContractSymbolExtra
is present, it's appended to the ContractSymbol
.
Outright contract symbols are composed of several parts indicating different aspects of the instrument.
For example, the Brent August 2024 futures contract's symbol is BRN FMQ0024!
.
This can be broken down as follows:
Component | Name | Description |
---|---|---|
BRN |
Contract code | The parent symbol or product this instrument belongs to. |
F |
Contract type | Indicates whether the instrument is a future (F ), swap, or other type of contract. |
M |
Term | The contract term, usually month (M ). |
Q |
Month | The expiration month, e.g. Q for August. |
00 |
Day | The effective date of the contract. 00 for monthly contracts. |
24 |
Year | The two-digit expiration year. |
! |
Switch character | Indicates additional distinguishing information about the contract. ! indicates no additional data. |
Options begin with their underlying future's symbol followed by an underscore (_
) and the option block.
Using the Brent August 2024 87.00 call BRN FMQ0024_OMCA0000087002062524
as an example, the option block breaks down as:
Component | Name | Description |
---|---|---|
O |
Option indicator | Will always be O for options. |
M |
Option type | The option term, e.g. M onthly or W eekly. |
C |
Put or call | Whether the option is a C all or P ut. |
A |
Option style | The exercise style of the option, e.g. A for American. |
000008700 |
Strike | The zero-padded nine-digit strike price. |
2 |
Strike decimal | The number of decimal places in the strike price. Applying two decimal places to 8700 gives a strike price of 87.00. |
062524 |
Expiration date | The MMDDYY expiration date of the option. BRN options expire before the contract month, in this case the August options expire June 25, 2024. |
Refer to ICE's Instrument Naming Convention document for a full explanation of the format of contract symbols. Because each dataset has a separate symbology namespace, Databento omits the MIC code from the fully-qualified symbol in ICE's examples.
Strategies
For spreads and strategies where ICE does not define a ContractSymbol
, raw symbols are sourced from `StrategySymbol``.
Strategy symbols are composed of several parts, however, due to the use of numeric identifiers, strategy raw symbols are harder to interpret than those for outrights.
The Brent options iron condor BRN 40 30775617
can be broken down as follows:
Component | Name | Description |
---|---|---|
BRN |
Contract code | The parent symbol or product this instrument belongs to. |
40 |
Strategy code | A left space-padded three-digit number identifying the type of strategy, e.g. 40 for iron condor. Refer to the table in this document for a complete list of strategy codes. |
30775617 |
Market ID | A left space-padded 10-digit unique identifier. The same as instrument_id . |
Databento MBO snapshot
ICE Europe Commodities iMpact daily trading hours cross 00:00:00 UTC. To make it easier to work with historical MBO data, Databento includes an order book snapshot at 00:00:00 UTC each weekday (Monday-Friday).
Definitions
MarketTypeId
is normalized tomarket_segment_id
MICCode
is normalized toexchange
when it is provided: only for futures and future strategies
Expirations
ICE only provides date-granularity expiration data in OptionsExpirationDate
and ScreenLastTrade
fields.
As a result, the expiration
field in the definition schema will always be at UTC midnight, even when the option expires during or after the trading day.
ICE Europe Financials iMpact
ICE disseminates FOD (full order depth), MBP (market by price), TOB (top-of-book) and market statistics data for futures and options on futures via their iMpact feed, which Databento receives over UDP multicast in our Aurora DC3 data center.
For futures, ICE publishes both FOD and MBP-5. Databento only normalizes the FOD messages. For options, ICE publishes MBP-10, MBP-5 and top-of-book. Databento only normalizes the MBP-10 messages.
This means that for options, only the top 10 levels of the book are available even in the MBO schema. For futures the full market is shown.
Timestamps
ICE iMpact messages received by Databento will generally include two timestamps with microsecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | ICE Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
TransactDateTime and SequenceWithinMillis | The matching-engine-processed timestamp with sub-microsecond sequence number. |
ts_in_delta |
SentDateTime | The matching-engine-sending timestamp. |
ICE provides microsecond granularity timestamps along with sub-microsecond sequence numbers for ordering that are normalized as nanosecond timestamps for consistency in ordering with other datasets.
More details about our timestamps are available in our timestamping guide.
Matching Engine Location
ICE Europe Financials has matching engines both in Chicago and Basildon. Currently, the products offered by Databento all trade in the ICE silo, located in 350 E Cermak, Chicago. Databento captures the data in our Aurora DC3 location.
MBO normalization
For options, the ICE iMpact feed only includes market-by-price, which matches Databento's MBP-10 schema. We do not offer these messages in our MBO schema. They are only available on MBP-10 and other downstream schemas.
Each ICE "Trade Message" is normalized into a single MBO record with the Trade action, and the message's "TradeID" field is used as the order_id
.
ICE does not disseminate information about the passive side of the trade. The corresponding Fill record will have side
equal to N
and the same order_id
value as the Trade record.
When ICE does not specify the aggressing side, Trade records will have side
equal to N
.
System priced legs
A system priced leg is the result of a trade in the outright spread. These trades, as published by the exchange, can have prices that are 10% or more off from the best bid and offer. ICE recommends that the price of these trades isn't counted towards market statistics.
Databento normalizes system priced legs as a Trade record with side
equal to N
and an UNDEF_PRICE
(0x7fffffffffffffff
, 9223372036854775808) value for the price.
These trades are counted towards OHLCV volume, but not towards the open, high, low or close values. This means that OHLCV messages can have some (or even all) price values as UNDEF_PRICE
.
Off-market trades
Trades marked by the exchange as off-market have their publisher_id
set to IFLL.IMPACT.XOFF
to distinguish them from on-exchange trades.
This distinction is also reflected on the OHLCV schemas - if an interval contains both on-market and off-market trades for an instrument, two OHLCV messages will be published for that instrument on that interval, one with IFLL.IMPACT.IFLL
as the publisher_id
and one with IFLL.IMPACT.XOFF
.
Statistics
Stat flags
The IsOfficial
field in the ICE iMpact Settlement Price Message and IsSettlePriceOfficial
in
the Market Snapshot Message are normalized to the first (least-significant) bit of stat_flags
where the bit is set if
IsOfficial
is Y
.
This is consistent with the behavior for CME Globex MDP 3.0.
Symbology
ICE uses separate symbology for outrights and strategies.
Outrights
For outrights — individual futures and options — raw symbols are sourced from ContractSymbol
field.
If ContractSymbolExtra
is present, it's appended to the ContractSymbol
.
Outright contract symbols are composed of several parts indicating different aspects of the instrument.
For example, the Three Month Euribor June 2025 futures contract's symbol is I FMM0025!
.
This can be broken down as follows:
Component | Name | Description |
---|---|---|
I |
Contract code | The parent symbol or product this instrument belongs to. |
F |
Contract type | Indicates whether the instrument is a future (F ), swap, or other type of contract. |
M |
Term | The contract term, usually month (M ). |
M |
Month | The expiration month, e.g. M for June. |
00 |
Day | The effective date of the contract. 00 for monthly contracts. |
25 |
Year | The two-digit expiration year. |
! |
Switch character | Indicates additional distinguishing information about the contract. ! indicates no additional data. |
Options begin with their underlying future's symbol followed by an underscore (_
) and the option block.
Using the Three Month Euribor June 2025 87.00 call I FMM0025_OMCA0009793754061625
as an example, the option block breaks down as:
Component | Name | Description |
---|---|---|
O |
Option indicator | Will always be O for options. |
M |
Option type | The option term, e.g. M onthly or W eekly. |
C |
Put or call | Whether the option is a C all or P ut. |
A |
Option style | The exercise style of the option, e.g. A for American. |
000979375 |
Strike | The zero-padded nine-digit strike price. |
4 |
Strike decimal | The number of decimal places in the strike price. Applying four decimal places to 979375 gives a strike price of 97.9375. |
061625 |
Expiration date | The MMDDYY expiration date of the option. |
Refer to ICE's Instrument Naming Convention document for a full explanation of the format of contract symbols. Because each dataset has a separate symbology namespace, Databento omits the MIC code from the fully-qualified symbol in ICE's examples.
Strategies
For spreads and strategies where ICE does not define a ContractSymbol
, raw symbols are sourced from `StrategySymbol``.
Strategy symbols are composed of several parts, however, due to the use of numeric identifiers, strategy raw symbols are harder to interpret than those for outrights.
The Three Month Euribor options call spread I 6 20284553
can be broken down as follows:
Component | Name | Description |
---|---|---|
I |
Contract code | The parent symbol or product this instrument belongs to. |
6 |
Strategy code | A left space-padded three-digit number identifying the type of strategy, e.g. 6 for call spread. Refer to the table in this document for a complete list of strategy codes. |
20284553 |
Market ID | A left space-padded 10-digit unique identifier. The same as instrument_id . |
Databento MBO snapshot
ICE Europe Financials iMpact daily trading hours cross 00:00:00 UTC. To make it easier to work with historical MBO data, Databento includes an order book snapshot at 00:00:00 UTC each weekday (Monday-Friday).
Definitions
MarketTypeId
is normalized tomarket_segment_id
MICCode
is normalized toexchange
when it is provided: only for futures and future strategies
Expirations
ICE only provides date-granularity expiration data in OptionsExpirationDate
and ScreenLastTrade
fields.
As a result, the expiration
field in the definition schema will always be at UTC midnight, even when the option expires during or after the trading day.
ICE Futures US iMpact
ICE disseminates FOD (full order depth), MBP (market by price), TOB (top-of-book) and market statistics data for futures and options on futures via their iMpact feed, which Databento receives over UDP multicast in our Aurora DC3 data center.
For futures, ICE publishes both FOD and MBP-5. Databento only normalizes the FOD messages. For options, ICE publishes MBP-10, MBP-5 and top-of-book. Databento only normalizes the MBP-10 messages.
This means that for options, only the top 10 levels of the book are available even in the MBO schema. For futures the full market is shown.
Timestamps
ICE iMpact messages received by Databento will generally include two timestamps with microsecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | ICE Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
TransactDateTime and SequenceWithinMillis | The matching-engine-processed timestamp with sub-microsecond sequence number. |
ts_in_delta |
SentDateTime | The matching-engine-sending timestamp. |
ICE provides microsecond granularity timestamps along with sub-microsecond sequence numbers for ordering that are normalized as nanosecond timestamps for consistency in ordering with other datasets.
More details about our timestamps are available in our timestamping guide.
MBO normalization
For options, the ICE iMpact feed only includes market-by-price, which matches Databento's MBP-10 schema. We do not offer these messages in our MBO schema. They are only available on MBP-10 and other downstream schemas.
Each ICE "Trade Message" is normalized into a single MBO record with the Trade action, and the message's "TradeID" field is used as the order_id
.
ICE does not disseminate information about the passive side of the trade. The corresponding Fill record will have side
equal to N
and the same order_id
value as the Trade record.
When ICE does not specify the aggressing side, Trade records will have side
equal to N
.
System priced legs
A system priced leg is the result of a trade in the outright spread. These trades, as published by the exchange, can have prices that are 10% or more off from the best bid and offer. ICE recommends that the price of these trades isn't counted towards market statistics.
Databento normalizes system priced legs as a Trade record with side
equal to N
and an UNDEF_PRICE
(0x7fffffffffffffff
, 9223372036854775808) value for the price.
These trades are counted towards OHLCV volume, but not towards the open, high, low or close values. This means that OHLCV messages can have some (or even all) price values as UNDEF_PRICE
.
Off-market trades
Trades marked by the exchange as off-market have their publisher_id
set to IFUS.IMPACT.XOFF
to distinguish them from on-exchange trades.
This distinction is also reflected on the OHLCV schemas - if an interval contains both on-market and off-market trades for an instrument, two OHLCV messages will be published for that instrument on that interval, one with IFUS.IMPACT.IFUS
as the publisher_id
and one with IFUS.IMPACT.XOFF
.
Statistics
Stat flags
The IsOfficial
field in the ICE iMpact Settlement Price Message and IsSettlePriceOfficial
in
the Market Snapshot Message are normalized to the first (least-significant) bit of stat_flags
where the bit is set if
IsOfficial
is Y
.
This is consistent with the behavior for CME Globex MDP 3.0.
Symbology
ICE uses separate symbology for outrights and strategies.
Outrights
For outrights — individual futures and options — raw symbols are sourced from ContractSymbol
field.
If ContractSymbolExtra
is present, it's appended to the ContractSymbol
.
Outright contract symbols are composed of several parts indicating different aspects of the instrument.
For example, the Sugar No. 11 July 2025 futures contract's symbol is SB FMN0025!
.
This can be broken down as follows:
Component | Name | Description |
---|---|---|
SB |
Contract code | The parent symbol or product this instrument belongs to. |
F |
Contract type | Indicates whether the instrument is a future (F ), swap, or other type of contract. |
M |
Term | The contract term, usually month (M ). |
N |
Month | The expiration month, e.g. N for July. |
00 |
Day | The effective date of the contract. 00 for monthly contracts. |
25 |
Year | The two-digit expiration year. |
! |
Switch character | Indicates additional distinguishing information about the contract. ! indicates no additional data. |
Options begin with their underlying future's symbol followed by an underscore (_
) and the option block.
Using the Sugar No. 11 October 2025 _____ put SB FMV0025_OMPA0000011002091525
as an example, the option block breaks down as:
Component | Name | Description |
---|---|---|
O |
Option indicator | Will always be O for options. |
M |
Option type | The option term, e.g. M onthly or W eekly. |
P |
Put or call | Whether the option is a C all or P ut. |
A |
Option style | The exercise style of the option, e.g. A for American. |
000001100 |
Strike | The zero-padded nine-digit strike price. |
2 |
Strike decimal | The number of decimal places in the strike price. Applying two decimal places to 1100 gives a strike price of 11.00. |
091525 |
Expiration date | The MMDDYY expiration date of the option. SB options expire before the contract month, in this case the October options expire September 15, 2025. |
Refer to ICE's Instrument Naming Convention document for a full explanation of the format of contract symbols. Because each dataset has a separate symbology namespace, Databento omits the MIC code from the fully-qualified symbol in ICE's examples.
Strategies
For spreads and strategies where ICE does not define a ContractSymbol
, raw symbols are sourced from `StrategySymbol``.
Strategy symbols are composed of several parts, however, due to the use of numeric identifiers, strategy raw symbols are harder to interpret than those for outrights.
The Sugar No. 11 options diagonal put spread SB 10 30951651
can be broken down as follows:
Component | Name | Description |
---|---|---|
SB |
Contract code | The parent symbol or product this instrument belongs to. |
10 |
Strategy code | A left space-padded three-digit number identifying the type of strategy, e.g. 10 for diagonal put spread. Refer to the table in this document for a complete list of strategy codes. |
30951651 |
Market ID | A left space-padded 10-digit unique identifier. The same as instrument_id . |
Databento MBO snapshot
ICE Futures US iMpact daily trading hours cross 00:00:00 UTC. To make it easier to work with historical MBO data, Databento includes an order book snapshot at 00:00:00 UTC each weekday (Monday-Friday).
Definitions
MarketTypeId
is normalized tomarket_segment_id
MICCode
is normalized toexchange
when it is provided: only for futures and future strategies
Expirations
ICE only provides date-granularity expiration data in OptionsExpirationDate
and ScreenLastTrade
fields.
As a result, the expiration
field in the definition schema will always be at UTC midnight, even when the option expires during or after the trading day.
IEX TOPS
IEX disseminates top-of-book and trade information for its US equities exchange through their IEX TOPS feed over the IEX-TP v1 protocol, which Databento receives over UDP multicast in our NY4 data center.
PDF specifications are available through IEX's website for IEX TOPS and IEX-TP v1.
InfoThe Databento team is currently working on this article.
Timestamps
IEX TOPS messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | IEX Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Timestamp (TOPS) | The matching-engine-received timestamp. |
ts_in_delta |
Send Time (TP) | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
MBO normalization
The IEX TOPS feed only includes top-of-book and trades, which matches Databento's MBP-1 schema. However, we do also offer these messages normalized into our MBO schema for consistency with other datasets with the caveat that some details are not made available by the upstream IEX TOPS feed.
Each IEX "Quote Update Message" is normalized into a pair of MBO records, as described in the conventions for top-of-book datasets.
Each IEX "Trade Report Message" is normalized into a single MBO record with the Trade action, and the message's "Trade ID" field is used as the order_id
.
There is no information exposed about the aggressing or passive sides of the order so side
will always be set to None and no F records are emitted.
MEMX Memoir
MEMX disseminates full depth-of-book data for their exchange through their MEMOIR Depth Feed, which Databento receives over UDP multicast in our NY4 data center.
The MEMX Depth Feed Client Specifications are available from MEMX's website.
InfoThe Databento team is currently working on this article.
Timestamps
MEMX messages received by Databento include one timestamp with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
MEMX does not include an exchange send timestamp, thus ts_in_delta
field is set to 0
for all messages.
Databento Field | MEMX Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Timestamp | The matching-engine-received timestamp. |
ts_in_delta |
N/A | Set to 0. |
More details about our timestamps are available in our timestamping guide.
MIAX Depth of Market
MIAX disseminates full depth-of-book information for MIAX Pearl Equities through the Miax Pearl Equities Depth of Market Feed (DoM) over the MACH protocol, which Databento receives over UDP multicast in our NY4 data center.
PDF specifications are available through MIAX's website for Depth of Market and MACH.
InfoThe Databento team is currently working on this article.
Timestamps
MIAX DoM messages received by Databento have at most one timestamp, which has nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
The extra field ts_in_delta
does not convey any additional information for this dataset, and is equivalent to ts_recv - ts_event
.
Databento Field | MIAX DoM Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Timestamp | The matching-engine timestamp expressed. |
More details about our timestamps are available in our timestamping guide.
Nasdaq Basic with NLS Plus
Nasdaq disseminates top-of-book data via their QBBO feed, and last sale data via their NLS and NLS+ feeds. Databento receives these over UDP multicast in our NY4 data center. Because they come from separate feeds, BBO and trade events may be out-of-order, even within a single instrument.
PDF specifications are available on Nasdaq's website for the QBBO, NLS and NLS+ feeds.
Timestamps
Nasdaq Basic messages received by Databento have at most one timestamp, which has nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
The extra field ts_in_delta
does not convey any additional information for this dataset, and is equivalent to ts_recv - ts_event
.
Databento Field | TotalView Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Timestamp | The matching-engine-received timestamp. |
More details about our timestamps are available in our timestamping guide.
Source feeds
Nasdaq Basic is composed of data from the Nasdaq QBBO and Nasdaq NLS+ feeds.
Venues
Nasdaq Basic contains trade data for the following venues:
- Nasdaq (XNAS)
- Nasdaq BX (XBOS)
- Nasdaq PSX (XPSX)
- FINRA/Nasdaq TRF Carteret (FINN)
- FINRA/Nasdaq TRF Chicago (FINC)
However, only quotes for Nasdaq (XNAS) are provided.
The publisher_id
field on every record from Databento can be used to identify the venue associated with the event.
Because Nasdaq BX, Nasdaq PSX and the TRF facilities do not have a BBO disseminated by Nasdaq QBBO, the MBP-1, BBO and TBBO schemas are not available. Instead, the equivalent consolidated schemas are provided: CMBP-1, CBBO and TCBBO.
Normalization
There are only Add and Trade actions for Nasdaq Basic.
Trade records are normalized from NLS+ Trade Report for Non-NextShares or Long form Trade Report for Non-NextShares messages.
The publisher_id
field will identify the venue associated with the trade.
There is no information about the side of the trade, so side
will always be N
.
Add records are normalized from Nasdaq QBBO Quotation Message.
An A record will be published anytime the best bid or offer quote is updated.
The publisher_id
field will always be set to 93 (XNAS_BASIC_EQUS
)
Definition normalization
Definition records are sourced from NLS+ Stock Directory messages.
Databento Field | TotalView Field | Description |
---|---|---|
security_type |
Issue Classification | Identifies the security class for the issue as assigned by Nasdaq. A list of the different values and their meanings can be found in Appendix E here. |
secsubtype |
Issue Sub-Type | Identifies the security sub-type for the issue as assigned by Nasdaq. A list of the different values and their meanings can be found in Appendix F here. |
Statistics normalization
Statistics records are sourced from NLS+ Trade Report for Non-NextShares messages. Databento provides the opening price and closing price statistics based on the sale condition field of these trade messages.
Nasdaq TotalView-ITCH
Nasdaq disseminates full depth-of-book data for their exchange through their TotalView-ITCH feed over the MoldUDP64 protocol, which Databento receives over UDP multicast in our NY4 data center.
PDF specifications are available on Nasdaq's website for Nasdaq TotalView-ITCH and MoldUDP64.
InfoThe Databento team is currently working on this article.
Timestamps
Nasdaq TotalView-ITCH messages received by Databento have at most one timestamp, which has nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
The extra field ts_in_delta
does not convey any additional information for this dataset, and is equivalent to ts_recv - ts_event
.
Databento Field | TotalView Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Timestamp | The matching-engine-received timestamp. |
More details about our timestamps are available in our timestamping guide.
MBO normalization
Order lifecycle messages
There are seven message types in TotalView that change the state of the order book. Databento normalizes these messages to MBO records as follows:
- Add Order - No MPID Attribution: Add
- Add Order with MPID Attribution: Add, but the attribution field is not included
- Order Executed: Trade, Fill, then Cancel
- Order Executed with Price: Trade, Fill, then Cancel, but the initial Trade is omitted if the message is marked as non-printable
- Order Cancel: Cancel, with the
quantity
indicating the number of shares to remove from the display size - Order Delete: Cancel, with the
quantity
indicating the current display size of the order - Order Replace: Cancel with the previous
order_id
, followed by Add with the neworder_id
All Trade records will have order_id
set to 0
, because Nasdaq does not provide information about the aggressor's order.
Normalized records from the same TotalView message will have the same sequence
.
Trade messages
TotalView also has two messages for providing execution details for match events against non-displayed orders or cross events.
Databento normalizes both Trade (Non-Cross) and Cross Trade messages is into a single MBO Trade record with side None.
Nasdaq will always send a Cross Trade message following an opening, closing, or EMC cross event for an instrument.
If no shares are exchanged during a cross event, quantity
will be 0
and price
will be UNDEF_PRICE
(0x7fffffffffffffff
, 9223372036854775808
).
Statistics normalization
Databento provides Opening Price, Closing Price and Uncrossing Price statistics, normalized from the Cross Trade message. These statistics have the auction uncrossing price and quantity for the respective event.
Imbalance normalization
TotalView provides information about opening and closing cross imbalances in their Net Order Imbalance Indicator (NOII) message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | TotalView Field | Description |
---|---|---|
paired_qty |
Paired Shares | The number of shares that are eligible to match at the ref_price . |
total_imbalance_qty |
Imbalance Shares | The number of shares not paired at the ref_price . |
side |
Imbalance Direction | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
auct_interest_clr_price |
Far Price | Hypothetical auction-clearing price for cross orders only. |
cont_book_clr_price |
Near Price | Hypothetical auction-clearing price for cross and continuous orders. |
ref_price |
Current Reference Price | The price at which imbalance shares are being calculated. |
auction_type |
Cross Type | The type of cross: Opening, Closing, un-Halt or IPO, A: Extended Trading Close. |
significant_imbalance |
Price Variation Indicator | Indicates the deviation of the Near Indicative Clearing Price to the ref_price . Refer to the Nasdaq TotalView specification for values. |
Definition normalization
Definition records are sourced from Stock Directory messages.
Databento Field | TotalView Field | Description |
---|---|---|
security_type |
Issue Classification | Identifies the security class for the issue as assigned by Nasdaq. A list of the different values and their meanings can be found in Appendix D here. |
secsubtype |
Issue Sub-Type | Identifies the security sub-type for the issue as assigned by Nasdaq. A list of the different values and their meanings can be found in Appendix E here. |
NYSE American Integrated
NYSE American disseminates full depth-of-book data for their exchange through their Integrated Feed, which Databento receives over UDP multicast in our NY4 data center.
The Integrated Feed Client Specification is available as a PDF from NYSE's website.
InfoThe Databento team is currently working on this article.
Timestamps
NYSE American messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pillar Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
SourceTime | The matching-engine-received timestamp. |
ts_in_delta |
SendTime (Common) | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
Statistics
Databento provides Opening Price, Closing Price and Uncrossing Price statistics, normalized from the Cross Trade message. These statistics have the auction uncrossing price and quantity for the respective event.
Imbalance normalization
NYSE American provides information about opening and closing cross imbalances in their Imbalance message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | Pillar Field | Description |
---|---|---|
ref_price |
ReferencePrice | The price at which imbalance shares are being calculated. |
auction_time |
AuctionTime | The projected auction time, with second precision. |
cont_book_clr_price |
ContinuousBookClearingPrice | Hypothetical auction-clearing price for cross and continuous orders. |
auct_interest_clr_price |
AuctionInterestClearingPrice | The price at which all eligible auction-only interest would trade, subject to auction collars. |
ind_match_price |
IndicativeMatchPrice | The price at which the highest number of shares would trade, subject to auction collars. It includes the non-displayed quantity of Reserve Orders. |
upper_collar |
UpperCollar | Upper auction collar. |
lower_collar |
LowerCollar | Lower auction collar. |
paired_qty |
PairedQty | The number of shares paired off at the ind_match_price . |
total_imbalance_qty |
TotalImbalanceQty | The total imbalance quantity at the ind_match_price . |
market_imbalance_qty |
MarketImbalanceQty | The total market order imbalance quantity at the ind_match_price . |
auction_type |
AuctionType | The type of cross: O: Early opening, M: Core opening, H: Halt resume, C: Closing. |
side |
ImbalanceSide | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
auction_status |
AuctionStatus | 0: Will run as always for Open and Close. 1: Will run, interest exists inside or at the collars or is fully paired off. 2: Will not run because there is an imbalance through the collars. 3: Will not run, will transition to the Closing Auction instead. |
num_extensions |
NumExtensions | Number of times the halt period has been extended. |
significant_imbalance |
SignificantImbalance | Indicates whether the current imbalance is significant. Y when significant, ' ' otherwise. |
NYSE Arca Integrated
NYSE Arca disseminates full depth-of-book data for their exchange through their Integrated Feed, which Databento receives over UDP multicast in our NY4 data center.
The Integrated Feed Client Specification is available as a PDF from NYSE's website.
InfoThe Databento team is currently working on this article.
Timestamps
NYSE Arca messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pillar Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
SourceTime | The matching-engine-received timestamp. |
ts_in_delta |
SendTime (Common) | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
Statistics
Databento provides Opening Price, Closing Price and Uncrossing Price statistics, normalized from the Cross Trade message. These statistics have the auction uncrossing price and quantity for the respective event.
Imbalance normalization
NYSE Arca provides information about opening and closing cross imbalances in their Imbalance message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | Pillar Field | Description |
---|---|---|
ref_price |
ReferencePrice | The price at which imbalance shares are being calculated. |
auction_time |
AuctionTime | The projected auction time, with second precision. |
cont_book_clr_price |
ContinuousBookClearingPrice | Hypothetical auction-clearing price for cross and continuous orders. |
auct_interest_clr_price |
AuctionInterestClearingPrice | The price at which all eligible auction-only interest would trade, subject to auction collars. |
ind_match_price |
IndicativeMatchPrice | The price at which the highest number of shares would trade, subject to auction collars. It includes the non-displayed quantity of Reserve Orders. |
upper_collar |
UpperCollar | Upper auction collar. |
lower_collar |
LowerCollar | Lower auction collar. |
paired_qty |
PairedQty | The number of shares paired off at the ind_match_price . |
total_imbalance_qty |
TotalImbalanceQty | The total imbalance quantity at the ind_match_price . |
market_imbalance_qty |
MarketImbalanceQty | The total market order imbalance quantity at the ind_match_price . |
auction_type |
AuctionType | The type of cross: O: Early opening, M: Core opening, H: Halt resume, C: Closing. |
side |
ImbalanceSide | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
auction_status |
AuctionStatus | 0: Will run as always for Open and Close. 1: Will run, interest exists inside or at the collars or is fully paired off. 2: Will not run because there is an imbalance through the collars. 3: Will not run, will transition to the Closing Auction instead. |
freeze_status |
FreezeStatus | 0: Imbalance freeze not in effect. 1: Imbalance freeze is in effect. |
num_extensions |
NumExtensions | Number of times the halt period has been extended. |
significant_imbalance |
SignificantImbalance | Indicates whether the current imbalance is significant. Y when significant, ' ' otherwise. |
NYSE Texas Integrated
NYSE Texas disseminates full depth-of-book data for their exchange through their Integrated Feed, which Databento receives over UDP multicast in our NY4 data center.
The Integrated Feed Client Specification is available as a PDF from NYSE's website.
InfoThe Databento team is currently working on this article.
Timestamps
NYSE Texas messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pillar Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
SourceTime | The matching-engine-received timestamp. |
ts_in_delta |
SendTime (Common) | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
Imbalance normalization
NYSE Texas provides information about opening and closing cross imbalances in their Imbalance message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | Pillar Field | Description |
---|---|---|
ref_price |
ReferencePrice | The price at which imbalance shares are being calculated. |
auction_time |
AuctionTime | The projected auction time, with second precision. |
cont_book_clr_price |
ContinuousBookClearingPrice | Hypothetical auction-clearing price for cross and continuous orders. |
auct_interest_clr_price |
AuctionInterestClearingPrice | The price at which all eligible auction-only interest would trade, subject to auction collars. |
ind_match_price |
IndicativeMatchPrice | The price at which the highest number of shares would trade, subject to auction collars. It includes the non-displayed quantity of Reserve Orders. |
upper_collar |
UpperCollar | Upper auction collar. |
lower_collar |
LowerCollar | Lower auction collar. |
paired_qty |
PairedQty | The number of shares paired off at the ind_match_price . |
total_imbalance_qty |
TotalImbalanceQty | The total imbalance quantity at the ind_match_price . |
market_imbalance_qty |
MarketImbalanceQty | The total market order imbalance quantity at the ind_match_price . |
auction_type |
AuctionType | The type of cross: O: Early opening, M: Core opening, H: Halt resume, C: Closing. |
side |
ImbalanceSide | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
auction_status |
AuctionStatus | 0: Will run as always for Open and Close. 1: Will run, interest exists inside or at the collars or is fully paired off. 2: Will not run because there is an imbalance through the collars. 3: Will not run, will transition to the Closing Auction instead. |
num_extensions |
NumExtensions | Number of times the halt period has been extended. |
significant_imbalance |
SignificantImbalance | Indicates whether the current imbalance is significant. Y when significant, ' ' otherwise. |
NYSE National Trades and BBO
NYSE National disseminates top-of-book and last sale data through their BBO and Trades feeds, respectively. Databento receives these over UDP multicast in our NY4 data center. Because they come from separate feeds, BBO and trade events may be out-of-order, even within a single instrument.
PDF specifications are available on NYSE's website for the BBO and Trades feeds.
InfoThe Databento team is currently working on this article.
Timestamps
NYSE National messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | BBO/Trades Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
SourceTime | The matching-engine-received timestamp. |
ts_in_delta |
SendTime (Common) | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
MBO normalization
NYSE National Trades and BBO are sourced from two separate feeds: one for the BBO and one for trades. When combined, this level of data matches Databento's MBP-1 schema; however, unlike most other datasets, there is not a strict ordering between the events on the BBO feed and the Trades feed. We also offer these messages normalized into our MBO schema for consistency with other datasets with the caveat that some details are not made available by the upstream NYSE National feeds.
Each BBO "Quote Message (140)" is normalized into a pair of MBO records, as described in the conventions for top-of-book datasets.
Each Trades "Trade Message (220)" is normalized into a single MBO record with the Trade action, and the message's "Trade ID" field is used as the order_id
. There is no information exposed about the passive side of the order, so there are no Fill records.
NYSE Integrated
NYSE disseminates full depth-of-book data for their exchange through their Integrated Feed, which Databento receives over UDP multicast in our NY4 data center.
The Integrated Feed Client Specification is available as a PDF from NYSE's website.
InfoThe Databento team is currently working on this article.
Timestamps
NYSE messages received by Databento will generally include two timestamps with nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by our capture server.
Databento Field | Pillar Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
SourceTime | The matching-engine-received timestamp. |
ts_in_delta |
SendTime (Common) | The matching-engine-sending timestamp. |
More details about our timestamps are available in our timestamping guide.
Statistics
Databento provides Opening Price, Closing Price and Uncrossing Price statistics, normalized from the Cross Trade message. These statistics have the auction uncrossing price and quantity for the respective event.
Imbalance normalization
NYSE provides information about opening and closing cross imbalances in their Imbalance message. Databento normalizes each message into a record in the imbalance schema.
Databento Field | Pillar Field | Description |
---|---|---|
ref_price |
ReferencePrice | The price at which imbalance shares are being calculated. |
auction_time |
AuctionTime | The projected auction time, with second precision. |
cont_book_clr_price |
ContinuousBookClearingPrice | The price closest to the reference price where the imbalance is 0. For significant imbalances, or if a continuous book clearing price is not reached, this field is defaulted to 0. |
auct_interest_clr_price |
AuctionInterestClearingPrice | For the closing auction, the price closest to the reference price where the imbalance of closing-only interest is 0. If a closing-only clearing price is not reached, this field is defaulted to 0. |
ssr_filing_price |
SSRFilingPrice | For non-Significant imbalances, if a Sell Short Restriction is in effect, the price at which Sell Short interest will be filed. |
paired_qty |
PairedQty | The number of shares that are eligible to match at the ref_price . |
total_imbalance_qty |
TotalImbalanceQty | The number of shares not paired at the ref_price . |
unpaired_qty |
UnpairedQty | During the Closing Auction, the number of unpaired shares priced at or better than the ref_price . |
auction_type |
AuctionType | The type of cross: M: Core opening, H: Halt resume, C: Closing, P: Extreme closing imbalance, R: Significant closing imbalance. |
side |
ImbalanceSide | The market side of the order imbalance: Bid (buy) imbalance, Ask (sell) imbalance, No imbalance. |
auction_status |
AuctionStatus | 0: Will run as always for Open and Close. 1: Will run, interest exists inside or at the collars or is fully paired off. 2: Will not run because there is an imbalance through the collars. 3: Will not run, will transition to the Closing Auction instead. |
freeze_status |
FreezeStatus | 0: Imbalance freeze not in effect. 1: Imbalance freeze is in effect. |
significant_imbalance |
SignificantImbalance | Indicates whether the current imbalance is significant. Y when significant, ' ' otherwise. |
OPRA Pillar
OPRA disseminates top-of-book, last sale, and daily statistics data for all US equity options exchanges through their Binary Output feed, which Databento receives over UDP multicast in our NY4 data center.
The OPRA Pillar Output Specification is available as a PDF from the OPRA website.
Timestamps
OPRA messages received by Databento include at most one timestamp, which has nanosecond precision.
As with all of our datasets, we also collect a ts_recv
timestamp when the packet was received by
our capture server. The unused ts_in_delta
field is set to 0
for all messages.
Databento Field | OPRA Field | Description |
---|---|---|
ts_recv |
N/A | The capture-server-received timestamp. |
ts_event |
Block Timestamp | The consolidator-processed timestamp. |
More details about our timestamps are available in our timestamping guide.
Venues
OPRA includes consolidated data for 18 options venues (as of March 2025).
The publisher_id
field on every record from Databento can be used to identify the venue
associated with a trade event.
Value | MIC | Venue |
---|---|---|
20 | AMXO | NYSE American |
21 | XBOX | BOX Options |
22 | XCBO | Cboe Options |
23 | EMLD | MIAX Emerald |
24 | EDGO | Cboe EDGX Options |
25 | GMNI | Nasdaq GEMX |
26 | XISX | Nasdaq ISE |
27 | MCRY | Nasdaq MRX |
28 | XMIO | MIAX Options |
29 | ARCO | NYSE Arca Options |
30 | OPRA | Options Price Reporting Authority |
31 | MPRL | MIAX Pearl |
32 | XNDQ | Nasdaq Options |
33 | XBXO | Nasdaq BX Options |
34 | C20X | Cboe C2 Options |
35 | XPHL | Nasdaq PHLX |
36 | BATO | Cboe BZX Options |
37 | MXOP | MEMX Options |
61 | SPHR | MIAX Sapphire |
InfoThese mappings are also available programmatically through the metadata.list_publishers endpoint.
CMBP-1
Along with the 18 options venues, OPRA also publishes the OPRA consolidated BBO. This consolidated BBO is available through Databento as the CMBP-1 schema. OPRA generates this consolidated BBO based on the following criteria in this order:
- Price: Venues with the highest bid and lowest offer have overall priority. Minimum price increments must be at least 1 cent higher or lower than the previous price.
- Size: Largest size takes precedence when multiple venues submit the same bid and/or offer price. There are no initial minimum size requirements. Size increments must be 10 contracts or better than the previous size.
- Time: Earliest time takes precedence when multiple venues submit the same bid and/or offer price with the same size.
See alsoMore information on the OPRA consolidated BBO can be found in the OPRA BBO Guidelines FAQ
OPRA consolidated BBO records are published with a publisher_id
value of 30 (OPRA_PILLAR_OPRA
).
These records indicate the venues containing the best bid and best offer by including their
respective publisher_id
in the bid_pb_00
and ask_pb_00
fields.
Trade records are published with the publisher_id
corresponding to the venue where the trade
happened.
Databento does not publish BBO records for regional quotes.
Historical CMBP-1 requests
Due to the large quantity of data for the CMBP-1 schema, we recommend users request a batch download via batch.submit_job or the User portal.
Symbology
OPRA Pillar raw symbols are based on OCC symbology, also known as Options Symbology Initiative (OSI) symbology. These two terms are interchangeable.
In OCC symbology, every raw symbol has exactly 21 characters and is composed of four parts.
Using the SPY November 17, 2023 $486.00 put option (SPY 231117P00486000
) as an example, these are:
Component | Name | Description |
---|---|---|
SPY |
Parent symbol | The right space-padded parent symbol. Often the symbol of the underlying, but not always such as with SPXW (SPX weekly options). |
211117 |
Expiration date | The YYMMDD expiration date of the option. |
P |
Put or call | Whether the option is a C all or P ut. |
00486000 |
Strike | The zero-padded eight-digit strike price with three decimal places. |
Expirations
OPRA only provides date-granularity expiration data so the expiration
field in the
definition schema will always be at UTC midnight even when the option expires during or
after the trading day.
Data prior to 2023-02-28
Data prior to 2023-02-28 was not generated from OPRA packet captures, but from subsampled data. This leads to the following differences on the data for those dates:
- The
cmbp-1
,cbbo-1s
andtcbbo
schemas are not available. The highest granularity available for BBO data is thecbbo-1m
schema. - Due to not being generated from packet captures, the
ts_recv
field has the event timestamp, andF_BAD_TS_RECV
is always set. - The
bid_pb_00
andask_pb_00
fields do not contain the venue which is showing the NBBO. - The
statistics
schema only has information for Open Interest, which is published on an aggregated basis.
Corporate actions
The corporate actions dataset includes coverage from 215 exchanges worldwide, 310,000+ listed and delisted securities from 85,000+ companies, categorized as 60+ event types. The dataset focuses on crucial events affecting global securities such as dividends, takeovers, mergers & acquisitions and rights issues.
Each record represents a unique corporate actions event at the listing level.
- History. From to 2018-05-01 to present.
- Coverage. Global.
- Update frequency. 4x per day.
- Listing level. All records are maintained at the listing level, which means each individual listing for a security has its own set of records.
- Delisting and relisting. The system continues to track securities even after they have been delisted. This is crucial because securities are occasionally relisted, so maintaining a continuous record prevents gaps in the time series thus avoiding ambiguity.
See alsoCorporate actions field descriptions for further details.
Securities and listings
A security is a fungible, tradable financial asset listed on regulated exchanges.
Each security has a primary exchange listing and may be listed on multiple secondary exchanges.
The corporate actions dataset utilizes a security_id
to associate these various listings.
Each public listing is identified by a unique listing_id
that links together a series of
point-in-time (PIT) records. The records are ordered by the event_date
and ts_record
timestamp.
A listing_group_id
groups all listings for the same security on a specific exchange, including secondary listings such as those in different trading currencies.
Events
Corporate actions can be broadly categorized into three types of events at both the security and listing levels:
- General events. Announcements, company meetings, lawsuits/class actions, listing status changes, incorporation change, security description change, etc.
- Capital change events. Mergers, stock splits / reverse stock splits, return of capital, franking, liquidation, divestments, dividends, currency redenomination, etc.
- Exchange events. New listing, security reclassification, security swap, preferential offer, etc.
The event
field categorizes the type of corporate action and is the primary field for filtering and categorizing events at a granular level.
Event records can be paired with an event_id
, which links associated events, such as all payment rows.
The top ten event types are listed in descending order based on their frequency of occurrence, see the EVENT enum lookup table for possible values.
Value | Description |
---|---|
SHOCH |
Shares Outstanding Change: The number of shares outstanding has been adjusted due to a capital event. |
DIV |
Capital Distribution: A distribution of assets to shareholders, usually in the form of dividends. |
AGM |
Annual General Meeting: A yearly gathering of a company's interested shareholders. |
NLIST |
New Listing: The company's securities are now listed on an exchange. |
ANN |
Announcement: Public communication regarding significant company events. |
LSTAT |
Listing Status: Changes in the status of the company's listing on the exchange. |
MKCHG |
Market Segment Change: The company has moved to a different market segment classification. |
SDCHG |
Sedol Change: The company's SEDOL (Stock Exchange Daily Official List) identifier has been changed. |
BBCC |
Bloomberg Composite ID Change: The Bloomberg Composite Identifier for the company has been changed. |
BBEC |
Bloomberg Exchange ID Change: The Bloomberg Exchange Identifier for the company has been changed. |
DIVRC |
Dividend Reclassification: The classification of dividend payments has been changed. |
RD |
Record Date: The date on which a shareholder must own shares to be entitled to a dividend or other distribution. |
ICC |
International Code Change: The international identification code for the company's securities has been changed. |
DRIP |
Dividend Reinvestment Plan: A plan that allows shareholders to reinvest their cash dividends into additional shares. |
LCC |
Local Code Change: The ticker symbol for the company's securities has been changed. |
Event subtypes
The event_subtype
field is only used for a limited number of events which fall into distinct sub-groupings,
see the EVENTSUBTYPE enum lookup table for possible values.
Value | Description |
---|---|
AGM |
Annual General Meeting: The table name implies Annual General Meeting, but there are several other possible meeting types categorized under this event subtype. |
BB |
Buyback: Buyback events can also be used to transmit Dutch auction events. |
BON |
Bonus: Bonus events can also be used to transmit depository receipt dividends, supplied by a depository bank in lieu of a bonus issue on the underlying security. |
CONV |
Conversion: Conversion events are occasionally used to bundle data for different event types, e.g., offers. These need to be clearly distinguished from actual conversions. |
DIV |
Dividend: Dividend events can also be used to transmit capital distribution and capital gain events. Certain interest payments are also mapped into dividends. |
DIVIF |
Dividend Income or Accumulation: The subtype transmits accumulation or income, and also dividend, interest, or property-related events. |
ENT |
Entitlement: Entitlement events can contain either non-renounceable rights or an offer event. |
RCAP |
Return of Capital: Return of capital events have several distinct types, each of which can significantly impact client-side processing. |
RTS |
Rights: Rights events can also be used to transmit depository receipt dividends, supplied by a depository bank in lieu of a rights issue on the underlying security. |
REDEM |
Redemption: Redemption events are occasionally used to bundle data for different event types, e.g., offers. These need to be clearly distinguished from actual redemptions. |
TKOVR |
Takeover: Takeover events are used as an umbrella term for several underlying event scenarios. |
MRGR |
Merger: If a close date but no open date is populated, it indicates a mandatory event. |
TKOVRMINI |
Mini-Takeover: If flagged as a Mini-Takeover, it is considered a voluntary event. |
TENDMRGR |
Tender Merger: If close and open dates are populated and the event is still ongoing, or has lapsed, it is considered a voluntary event. |
TEND |
Tender Offer: If close and open dates are populated and the event is still ongoing, or has lapsed, it is considered a voluntary event. |
Security types
The top ten security types covered are listed in descending order based on their frequency of occurrence, see the SECTYPE enum lookup table for possible values.
Value | Description |
---|---|
ETF |
Exchange Traded Fund |
EQS |
Equity Shares |
DR |
Depository Receipts |
PRF |
Preference Share |
UNT |
Units |
WAR |
Warrants |
ETC |
Exchange Traded Commodities |
TRT |
Tradeable Rights |
STP |
Stapled Security |
BND |
Bond |
Exchange coverage
The corporate actions dataset has coverage across 220+ exchanges worldwide.
primary_exchange
specifies the primary exchange for the security associated with the event.exchange
field specifies the exchange for the listing and can be filtered by specifying adataset
.operating_mic
field specifies the ISO 10383 MIC of the listing exchange associated with the event.
See the EXCHANGE enum lookup table for possible values.
TipThe
operating_mic
field will match thevenue
from the listed publishers and the Definition schemaexchange
field, which is an ISO 10383 Market Identifier Code (MIC).
Listing continuity
The listing_id
and security_id
have continuity with changes to the underlying security in the following scenarios:
- Name changes. Issuer name changes which result in a ticker symbol change (e.g. Facebook: FB -> Meta Platforms: META).
- Mergers. Either where the company operates under a new name, or one of the original company names.
- Demergers. Either where the companies operate under new names, or one keeps the original company name.
The listing_id
and security_id
do NOT have continuity in the following scenarios:
- Spin-offs. When the parent company continues operating, the spun-off companies become new listings.
- Delistings. When the security is never relisted.
Point-in-time (PIT) corporate actions
The corporate_actions.get_range
endpoint provides a time series of point-in-time (PIT) records for the queried
symbols and events. This is ideal for research or backtesting where it’s crucial to include records as they
were known at specific points in time. Note that, like other APIs, the time ranges have an exclusive end.
The Python client library offers a pit
parameter to control record retention:
- If True: All historical records for each
event_unique_id
will be retained, preserving the complete point-in-time history. - If False (default): The DataFrame will include only the most recent record for each
event_unique_id
, based on thets_record
timestamp.
Split and restructuring events
The corporate actions dataset includes normalization of several stock restructuring events, such as splits, spin-offs, and demergers, as shown in the following table:
Event type | Event subtype | Description |
---|---|---|
FSPLT (Forward Split) |
DIV (Dividend) |
Stock dividend (represented as a forward split) |
FSPLT (Forward Split) |
BON (Bonus) |
Bonus (represented as a forward split) |
RSPLT (Reverse Split) |
CONSD (Consolidation) |
Consolidation (represented as a reverse split) |
SOFF (Spin-Off) |
DIST (Distribution) |
Distribution resulting from a spin-off |
SOFF (Spin-Off) |
DMRGR (Demerger) |
Demerger resulting in a spin-off |
FSPLT (Forward Split) |
SD (Subdivision) |
Subdivision (represented as a forward split) |
Payment ratios
For FSPLT
, DIV
, and BON
events, the ratio_new
includes the existing holdings.
As a result, some reported ratios may differ from the actual figures in official announcements.
Adjustment factors
The adjustment factors dataset covers global corporate actions capital events, spanning multiple currencies for the same event. Each record includes all necessary fields to identify the country, security, event, and adjustment factor.
Each record represents a unique capital event at the listing level.
- History. From to 2018-05-01 to present.
- Coverage. Global.
- Update frequency. Daily.
The primary use case for this dataset is to back-adjust end-of-day (EOD) per-share price data, allowing the price series to be graphed with the effects of various events (e.g., bonus issues, rights issues, consolidations) factored into earlier prices. Individual events can receive multiple updates both prior to and after the ex-date, seamlessly accounting for potentially messy corporate actions, changes, and cancellations.
All per-share series, including prices, earnings-per-share, dividends-per-share, assets-per-share, cash-flow-per-share, etc., need to be adjusted before meaningful conclusions can be drawn about growth rates and trends.
See alsoAdjustment factors field descriptions for further details.
Exchange coverage
The adjustment factors dataset has coverage across 215 exchanges worldwide.
primary_exchange
specifies the primary exchange for the security associated with the adjustment factor event.operating_mic
field specifies the ISO 10383 MIC of the listing exchange associated with the event.
See the EXCHANGE enum lookup table for possible values.
TipThe
operating_mic
field will match thevenue
from the listed publishers and the Definition schemaexchange
field, which is an ISO 10383 Market Identifier Code (MIC).
Security continuity
The security_id
maintains continuity in the following scenarios:
- Name changes. Issuer name changes which result in a ticker symbol change (e.g. Facebook: FB -> Meta Platforms: META).
- Mergers. Either where the company operates under a new name, or one of the original company names.
- Demergers. Either where the companies operate under new names, or one keeps the original company name.
The security_id
do not have continuity in the following scenarios:
- Spin-offs. When the parent company continues operating (the spun on companies are new securities).
- Delistings. When the security is never relisted.
Timing
The first generation of pending factors for a particular ex-date will happen close of market the day before the ex-date.
Adjustment factors are provided on the ex-date of the event, except:
- When the corporate action is incomplete (missing core fields such as "Ratio New", etc.) in which case the factor will be provided as soon as the corporate action becomes complete after the ex-date.
- Or, the factor calculation requires the open price of a security that has not traded yet in which case a factor will be generated after the security trades.
Reason codes
Each record has a reason
code which distinguishes between different event types.
Value | Description |
---|---|
25 |
Bonus (same) |
26 |
Bonus (diff) |
53 |
Capital Call |
51 |
Capital Reduction |
54 |
Capital Return |
62 |
Consolidation |
86 |
Distribution |
14 |
Cash Dividend |
15 |
Script Dividend (same) |
16 |
Script Dividend (diff) |
17 |
Both Dividend |
76 |
De-merger |
45 |
Offer (same) |
46 |
Offer (diff) |
35 |
Rights (same) |
36 |
Rights (diff) |
66 |
Securituy Swap (only when ratio not 1:1) |
67 |
Security Reclassification (only when ratio not 1:1) |
61 |
Subdivision |
Status codes
Included with each record is a single character status
code which indicates how the adjustment should be handled.
Value | Description |
---|---|
'A' |
Apply |
'P' |
Pending, indicates that his adjustment will be finalized when additional information becomes available |
'R' |
Rescind (remove/reverse), indicates that this adjustment has been cancelled or re-issued after an adjustment record has already been published |
InfoNote that rescinded adjustments can happen years after the
ex_date
for various reasons.
Option field
Often the shareholder is given the choice of taking the event in a few different ways, for example a dividend might be paid in USD or GBP and the shareholder needs to choose how they wish to receive it, alternatively it might be paid as cash or script or a combination of both, again the shareholder needs to choose how they wish to receive the dividend. Also de-mergers and distributions might have different options for the shareholder to consider.
In all cases, the option
field will contain an integer value ranging from 1 to 9, representing the available choices.
You must select one of these options to proceed.
If you're unsure which option to choose, default to 1.
WarningNever apply multiple adjustments with the same
ex_date
,event_id
and different options.
Corporate actions relationship
Generally, there is a one-to-one relationship to the underling corporate action - however in a few circumstances this is not true.
- When a dividend delivers both cash and script, the corporate action specifies this as a divdend type of "Both". This is split into two separate adjustment records, one for the cash component and the other for the script component, which can be recombined later as desired.
- When an event is linked to a previous event they will be combined into a single adjustment record.
For example in Stockholm, they often return cash to shareholders in the form of free redemption rights (RDR) followed by a return of capital on those redemption rights. When this happens only one adjustment record will be generated for both corporate actions.
TipWhere you see both cash and script dividend adjustment records with the same
event_id
,ex_date
andoption
you can optionally recombine the two by multiplying the factors together.
Applying adjustment factors
See alsoApplying adjustment factors tutorial.
Decide which type of adjustments you want to apply (DIV
, BON
, etc) then use the reason
field to access only those adjustments and ignore the others.
Prior to using any adjustment factor check that no other adjustment record has the same event_id
and ex_date
, if it has then check the option
- you should only use one of the options for the same event_id
and ex_date
.
This is common when a shareholder has the choice of taking a dividend in multiple currencies and cash or script selection.
Refer to the description of the option field above for further information.
Compare the factor to the sentiment value, if available, they should be roughly the same if they are significantly different then the factor should be used with caution or even modified to bring it closer to sentiment (this is purely your prerogative).
Multiply all historical prices, up to but not including the ex_date
, by the factor
.
Optionally divide all historical volumes, up to but not including the ex_date
, by the factor
(for consolidations and subdivisions only).
InfoBe prepared for corrections to come through, at a later date, in the form of rescinded adjustment records. In these cases you need to reverse or remove the original adjustment.
Negative factors
These are rare but can happen. For example, when a DIV
(dividend) is paid that is greater than the share price, on the ex_date
, or a RCAP
(return of capital) that is also
greater than the share price, on the ex_date
.
This type of event can happen when a fund is being closed down and final distributions made in the form of a dividend or return of capital.
Factors of 1
A factor of “1” can either be a valid factor or default factor where one could not be calculated.
Default factors are 1.0 because this is mathematically neutral and can be used a placeholder when a factor cannot be calculated. Reasons for not being able to calculate factors include:
- No stock close price when a stock close price required.
- No issue open price when an issue open price required.
- Unable to perform currency conversion when required.
Factors of “1” are valid in following circumstances:
- When a
RTS
(Rights) orENT
(Entitlement) issue makes the issue available at a price that is equal to or above the current stock price (issue price > stock price). - When a company does a
RTS
(Rights) orENT
(Entitlement) issue of options with an exercise date far in the future the impact may be of little significance or difficult to determine due to uncertainty. CAPRD
(Capital reduction) of 1 for 1.
Reissued adjustments
Adjustments will be re-issued and the original adjustment record rescinded, if any of the corporate action key fields change after the date the adjustment was first published.
For example if the ratio_new
or ratio_old
change, after the date of first publication, then the original adjustment will be rescinded (after March 2010) and a new adjustment will be issued.
Rescinded adjustments
Adjustments are rescinded if the original adjustment is cancelled or re-issued after the publication date (usually the ex-date
).
Where an adjustment has been rescinded this will need to be removed/reversed out of your system.
If you are loading the adjustment records into a database then you will need to remove the rescinded adjustment record from your database. If you are back-adjusting price series data then you will need to reverse the rescinded adjustment record from your price series data using the inverted factor to reverse the original adjustment.
It is recommended to process rescinded adjustment records before processing any re-issued adjustment records.
InfoDuring the day of publication, if an adjustment is cancelled or re-issued it is not rescinded; the change is simply reflected in the next update. For example, if a dividend is cancelled on the day of publication then the interim pending record before cancellation will contain an adjustment record for that dividend. A pending record after the cancellation will not contain an adjustment record (it is not rescinded, it is simply gone).
Security master
InfoThe Databento team is currently working on this article.
The security master provides point-in-time (PIT) static information on securities across international markets for 860,000+ listed and delisted securities. This provides a means for resolving securities attributes, identification, symbology and informational challenges efficiently. Some common use cases for the security master include research, backtesting, compliance and report generation, risk management, and keeping portfolios current.
- History. From to 2005-01-01 to present.
- Coverage. Global.
- Update frequency. Once per week.
- Listing level. All records are maintained at the listing level, which means each individual listing for a security has its own set of records.
- Delisting and relisting. The system continues to track securities even after they have been delisted. This is crucial because securities are occasionally relisted, so maintaining a continuous record prevents gaps in the time series thus avoiding ambiguity.
See alsoSecurity master field descriptions for further details.
Securities and listings
A security is a fungible, tradable financial asset listed on regulated exchanges.
Each security has a primary exchange listing and may be listed on multiple secondary exchanges.
The security master utilizes a security_id
to associate these various listings.
Each public listing is identified by a unique listing_id
that links together a series of
point-in-time (PIT) records. The records are ordered by the ts_effective
timestamp, which is when the information was valid from.
A listing_group_id
groups all listings for the same security on a specific exchange, including secondary listings such as those in different trading currencies.
Security types
The top ten security types covered are listed in descending order based on their frequency of occurrence:
Value | Description |
---|---|
EQS |
Equity Shares |
ETF |
Exchange Traded Fund |
MF |
Mutual Fund |
DR |
Depository Receipts |
TRT |
Tradeable Rights |
WAR |
Warrants |
BND |
Bond |
PRF |
Preference Share |
UNT |
Units |
ETC |
Exchange Traded Commodities |
STP |
Stapled Security |
See the SECTYPE enum lookup table for possible values.
Exchange coverage
The security master has coverage across 220+ exchanges worldwide.
primary_exchange
field specifies the primary exchange for the security.exchange
field specifies the exchange for the listing and can be filtered by specifying adataset
.operating_mic
field specifies the ISO 10383 MIC of the listing exchange.
See the EXCHANGE enum lookup table for possible values.
TipThe
operating_mic
field will match thevenue
from the listed publishers and the Definition schemaexchange
field, which is an ISO 10383 Market Identifier Code (MIC).
Listing continuity
The listing_id
and security_id
have continuity with changes to the underlying security in the following scenarios:
- Name changes. Issuer name changes which result in a ticker symbol change (e.g. Facebook:
FB
-> Meta Platforms:META
). - Mergers. Either where the company operates under a new name, or one of the original company names.
- Demergers. Either where the companies operate under new names, or one keeps the original company name.
The listing_id
and security_id
do NOT have continuity in the following scenarios:
- Spin-offs. When the parent company continues operating, the spun-off companies become new listings.
- Delistings. When the security is never relisted.
Enriching the definition schema
The security master data can be used to enrich instrument definitions by merging two pandas dataframes
by an inner join, using the definition
schema 'symbol' field and the security master 'symbol' field
(where stype_in
is raw_symbol
).
df_combined = pd.merge(
df_definition,
df_security_master,
left_on="symbol",
right_on="symbol",
how="inner",
)
This assumes Nasdaq Integrated Platform Suffix is used for the definition schema instrument
(such as those obtained from the XNAS.ITCH
dataset), otherwise joining on the definitions
raw_symbol
may be necessary.
See alsoEnriching instrument definitions tutorial.