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

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

Example message:

MsgType: W MsgSeqNum: 8237684657 SendingTime: 20220906-23:37:42.065 MDReportID: hgsf55429ks9 ClearingBusinessDate: 20220907 MarketDepth: 1 TradeDate: 20220906 MDReqID: g6542m8 Symbol: BTC/USD-ID-R MDEntryType: 0 MDEntryPx: -1.35 MDEntrySize: 150 TradingSessionID: 20220907 NumberOfOrders: 3 MDPriceLevel: 1 MDEntrySpotRate: 19,128
{ "Header": { "MsgType": "W", "MsgSeqNum": "8237684657", "SenderCompID": "SENDER", "TargetCompID": "TARGET", "SendingTime": "20220906-23:37:42.065" }, "MDReportID": "hgsf55429ks9", "ClearingBusinessDate": "20220907", "MarketDepth": "1", "TradeDate": "20220906", "MDReqID": "g6542m8", "Instrument": { "Symbol": "BTC/USD-ID-R" }, "MDFullGrp": [ { "MDEntryType": "0", "MDEntryPx": "-1.35", "MDEntrySize": "150", "TradingSessionID": "20220907", "NumberOfOrders": "3", "MDPriceLevel": "1", "MDEntrySpotRate": "19128" } ] }