Some systems allow the transmission of real-time quote, order, trade, trade volume, open interest, and/or other price information
on a subscription basis. A Market Data Request is a general request for market data on specific securities or forex quotes.
A successful Market Data Request returns one or more Market Data messages containing one or more Market Data Entries. Each
Market Data Entry is a Bid, an Offer, a Trade associated with a security, the opening, closing, or settlement price of a security,
the buyer or seller imbalance for a security, the value of an index, the trading session high price, low price, or VWAP, or
the trade volume or open interest in a security. Market Data Entries usually have a price and a quantity associated with
them. For example, in an order book environment, requesting just the top of book will result in only two active Market Data
Entries at a time one for the best Bid and one for the best Offer. For a full book, the Bid and Offer side may each have
several Market Data Entries. Each Market Data Entry might represent an aggregate for each price tier, and only one Market
Data Entry per side per price would be active at a time. This is referred to as an Aggregated book. When several Market
Data Entries at one price tier could each represent a broker, Market Maker, ECN or Exchanges quote in a security, or individual
orders in a book, this is a Non-Aggregated book. Alternately, a Market Data Entry could represent a completed trade in a
security, the value of an index, the opening, closing, or settlement price of an instrument, the trading session high price,
low price, or VWAP, or the volume traded or open interest in a security.
If the message is used for disseminating imbalance information, conventions are as follows:
MDEntrySize <271> represents the size of the imbalance and is always a positive integer.
A TradeCondition <277> of either P or Q is required to indicate the side of the imbalance.
Markets may wish to indicate the presence of an imbalance but not the actual size. In this case, MDEntrySize <271> need not be specified.
One specifies whether a list of trades, a 1-sided or 2-sided book, index, opening, closing, settlement, high, low and VWAP
prices and imbalance volumes should be returned by using the NoMDEntryTypes <267> field and MDEntryType <269> repeating group to list all MDEntryType <269> values that should be returned.
Types of Market Data Requests
- A market data feed may consist of both Market Data Snapshot Full Refresh messages and Market Data Incremental Refresh messages.
- The Market Data Request message is used to request a static book snapshot or subscribe to a stream of snapshots and updates.
- Market Data Snapshot Full Refresh should be used to provide a snapshot of the market when Snapshot is requested
using SubscriptionRequestType <263>. Use of Market Data Incremental Refresh is being discouraged for this purpose.
- Market Data Snapshot Full Refresh will be used to provide initial snapshot when Snapshot + Updates are requested
using SubscriptionRequestType <263>
- The Market Data Request scenarios that will be supported are as follows:
|Requests state of the book and receives one and only one snapshot for each request (i.e. customer only wants single snapshot of prices)
||Not Provided (customer is not requesting a subscription)
||Market Data Snapshot/Full Refresh <W> message (only one message is sent)
|Requests state of the book + updates and specifies that only Full Refresh Message is used (i.e. full refresh update of data is to be sent)
||1 = Snapshot + Updates
||0 = Full Refresh
||Market Data Snapshot/Full Refresh <W> messages only
|Requests state of the book + updates and specifies that updates are to be sent using Incremental Refresh Message (i.e. incremental updates on data is to be sent)
||1 = Snapshot + Updates
||1 = Incremental Refresh
||Market Data Snapshot/Full Refresh <W> message with updates provided using Market Data Incremental Refresh <X> messages
Indicating an Empty Book
- An empty book contains no bids or asks and indicates that the market has no open orders in a given instrument. This can also be referred to as a “null” book.
- When this occurs in a scenario in which the Snapshot Full Refresh Message is being used to provide a static snapshot or snapshot + updates then a special MDEntryType <269> of 'J' (Null Market)
should be used.
- The Snapshot Full Refresh Message should contain a single MDEntry with MDEntryType <269> = J ("Empty Book") specified. MDEntryPrice <270> = 0 and MDEntrySize <271> = 0 may also be provided but are not required. Other tags may be specified as well in order
to convey the time and conditions under which the market generated a null book.
Indicating a Crossed Book
While this document specifies many parameters and modes in a request, the recipient of the request is not required to support all of them. A Market Data Request Reject <Y> may be sent in response to a
request indicating that it cannot be honored.
- If MDBookType <1021> = 1 (Top-of-Book) or 2 (Price Depth), indicates that the market is crossed.
- If MDBookType <1021> = 3 (Order Depth), indicates that the (order) entry is associated with conditions that can cause the book to lock or be locked or crossed. Such conditions include quantity
as All-Or-None (AON), MinQty and MatchIncement
but also counterparties conditions as Acceptable or Unacceptable Counterparty. In the case such orders are included in the same book feed as normal orders, the user may choose to display crossed orders in a separate book view or
indicate the “crossed” fact in another way.
See Appendix G: FOREIGN EXCHANGE section for more detailed usage notes specific to Foreign Exchange.