The Market Data messages are used as the response to a Market Data Request message. In all cases, one Market Data message refers only to one Market Data Request. It can be used to transmit a 2-sided book of orders or list of quotes, a list of trades, index values, opening, closing, settlement, high, low, or VWAP prices, the trade volume or open interest for a security, or any combination of these.
Market Data messages sent as the result of a Market Data Request message will specify the appropriate MDReqID <262>. Unsolicited Market Data messages can be sent; in such cases, MDReqID <262> will not be present.
Market Data messages include many fields, and not all are required to be used. A firm may, at its option, choose to send the minimum fields required, or may choose to send more information, such as tick direction, tagging of best quotes, etc.
Market Data messages can take two forms. The first Market Data message format used for a Snapshot, or a Snapshot + Updates where MDUpdateType = Full Refresh (0) is as follows:
Refreshing Market Data in a Multicast Environment
Dissemination of market data messages in a multicast environment creates an issue that recovery of lost packets is not always feasible using a query method in high message volume situations. The Market Data Snapshot / Full Refresh message can be used to disseminate periodic full snapshots of the data (e.g. order book data). Recipients that join late or otherwise miss packets can get their data aligned by processing the Market Data Snapshots for one complete pass of the instruments.
The snapshot messages will always transmit the market data in the state that it was as of the last incremental refresh message. Snapshots never provide updates and can be ignored in regular processing except in the case of a system failure. Upon system restart the data flow will begin with a snapshot of each instrument. For the most part the recipient cannot ignore these snapshots. However, in some cases the snapshots cannot be ignored by the recipient. The RefreshIndicator <1187> is used to indicate to the recipient of which Snapshot message are redundant and can be ignored, and which are mandatory and must be processed because the message contains new data.
When connecting to the data feed, or after a loss of data, recipients should process Snapshot messages to recover their data, especially if the feed is for orderbook data. Once recovered, recipients can ignore snapshots that have RefreshIndicator = N. If RefreshIndicator = Y then the recipient should discard their data and replace it with the information in the Snapshot message.
See Appendix G: FOREIGN EXCHANGE section for more detailed usage notes specific to Foreign Exchange.