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
MsgTypeString✓W = MarketDataSnapshotFullRefresh
MsgSeqNumSeqNum✓User generated incremental number to allow receiver to identify possible message gaps
SendingTimeUTCTimestamp✓Time 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}