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 Name | Format | Req'd | Comments | |
---|---|---|---|---|
MsgType | String | ✓ | W = MarketDataSnapshotFullRefresh | |
MsgSeqNum | SeqNum | ✓ | User generated incremental number to allow receiver to identify possible message gaps | |
SendingTime | UTCTimestamp | ✓ | Time of sending this message | |
MDReportID | Int | Unique indentifier for Market Data Report | ||
ClearingBusinessDate | LocalMktDate | 20220826 with date changing at 5pm NY | ||
MarketDepth | Int | 0 = full book depth 1 = top of book | ||
TradeDate | LocalMktDate | Used to specify the trading date (in local NY calendar date) | ||
MDReqID | String | Will echo back the Market Data Request ID. | ||
Component block <Instrument> | ||||
> | Symbol | String | BTC/USD-1w-R for the 1 week BTC/USD Repo | |
Component block <MDFullGrp> | ||||
> | MDEntryType | Char | Any 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 | |
> | MDEntryPx | Price | 2.47 → this is the Swap price with full precision | |
> | MDEntrySize | Qty | Required if MDEntryType = Bid(0), Offer(1), Trade(2) ) | |
> | TradingSessionID | String | E.g. 20220826 | |
> | SecurityTradingStatus | Int | Supported values: 2 = Trading halt 3 = Resume 18 = Not available for trading (end of session) 20 = Unknown or Invalid 23 = Fast Market | |
> | HaltReason | Int | Only if Instrument is halted, with possible reasons: 1 = Order Influx 5 = Equipment Changeover | |
> | NumberOfOrders | Int | In an Aggregated Book, used to show how many individual orders make up an MDEntry | |
> | Text | String | Text to describe the Market Data Entry. Part of repeating group. | |
> | MDPriceLevel | Int | Display position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1 | |
> | MDEntrySpotRate | For Bid, Offer and Last, reference price for Near_Leg at the time |
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}