Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

TotNumReports

Int

Total number or reports returned in response to a request.

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:

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