Market Data Snapshot Full Refresh

The Snapshot request will return only one set of data without further updates. It can be used to receive 2-sided orderbooks, trades, highs, lows or any combination of these.

Market Data Snapshot Full Refresh messages will contains the entirety of the data requested for that instrument.

Receiving Market Data in a streaming sesison (using Incremental Refresh messages) can creates an issue with lost packets. The Market Data Snapshot Full Refresh message is ideal to resync periodically the state of your local book. Upon XCDE system restart, the data flow will always begin with a snapshot of each instrument.

When connecting to a streaming data feed, or after a loss of data, Users should process Snapshot messages to recover their orderbook. Once recovered, Users can ignore snapshots that have RefreshIndicator = N. If RefreshIndicator = Y then the User should discard their data and replace it with the information in the Snapshot message.

Message parameters (In response to a MarketDataRequest message)

Field NameFormatReq'dComments
MsgTypeStringW = MarketDataSnapshotFullRefresh
MsgSeqNumSeqNumUser generated incremental number to allow receiver to identify possible message gaps
SendingTimeUTCTimestampTime of sending this message
MDReportIDIntUnique indentifier for Market Data Report
ClearingBusinessDateLocalMktDate20220826 with date changing at 5pm NY
MarketDepthInt0 = full book depth
1 = top of book
TradeDateLocalMktDateUsed to specify the trading date (in local NY calendar date)
MDReqIDStringWill echo back the Market Data Request ID.
Component block <Instrument>
SymbolStringBTC/USD-1w-R for the 1 week BTC/USD Repo
Component block <MDFullGrp>
MDEntryTypeCharAny of the supported fields:
0 = Bid
1 = Offer
2 = Trade
7 = Trading Session High Price
8 = Trading Session Low Price
N = Session High Bid
O = Session Low Offer
MDEntryPxPrice2.47 → this is the Swap price with full precision
MDEntrySizeQtyRequired if MDEntryType = Bid(0), Offer(1), Trade(2) )
TradingSessionIDStringE.g. 20220826
SecurityTradingStatusIntSupported values:
2 = Trading halt
3 = Resume
18 = Not available for trading (end of session)
20 = Unknown or Invalid
23 = Fast Market
HaltReasonIntOnly if Instrument is halted, with possible reasons:
1 = Order Influx
5 = Equipment Changeover
NumberOfOrdersIntIn an Aggregated Book, used to show how many individual orders make up an MDEntry
TextStringText to describe the Market Data Entry. Part of repeating group.
MDPriceLevelIntDisplay position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1
MDEntrySpotRateFor Bid, Offer and Last, reference price for Near_Leg at the time
Response example:
 1MsgType: W
 2MsgSeqNum: 8237684657
 3SendingTime: 20220906-23:37:42.065
 4MDReportID: hgsf55429ks9
 5ClearingBusinessDate: 20220907
 6MarketDepth: 1
 7TradeDate: 20220906
 8MDReqID: g6542m8
 9Symbol: BTC/USD-ID-R
10  MDEntryType: 0
11  MDEntryPx: -1.35
12  MDEntrySize: 150
13  TradingSessionID: 20220907
14  NumberOfOrders: 3
15  MDPriceLevel: 1
16  MDEntrySpotRate: 19,128
 1{
 2  "Header": {
 3    "MsgType": "W",
 4    "MsgSeqNum": "8237684657",
 5    "SenderCompID": "SENDER",
 6    "TargetCompID": "TARGET",
 7    "SendingTime": "20220906-23:37:42.065"
 8  },
 9  "MDReportID": "hgsf55429ks9",
10  "ClearingBusinessDate": "20220907",
11  "MarketDepth": "1",
12  "TradeDate": "20220906",
13  "MDReqID": "g6542m8",
14  "Instrument": {
15    "Symbol": "BTC/USD-ID-R"
16  },
17  "MDFullGrp": [
18    {
19      "MDEntryType": "0",
20      "MDEntryPx": "-1.35",
21      "MDEntrySize": "150",
22      "TradingSessionID": "20220907",
23      "NumberOfOrders": "3",
24      "MDPriceLevel": "1",
25      "MDEntrySpotRate": "19128"
26    }
27  ]
28}