Market Data Incremental Refresh (X) message
Purpose
Used to send updated market data for an instrument
Message Direction
From QST FIX server to FIX client
Supported tags
Note
Each Market Data Incremental Refresh message should start with Standard Header component(with the tag 35 (MsgType) = X) and end with the Standard Trailer.
MDReqID - 262
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
262 |
MDReqID |
Y |
String |
Comments
Unique ID matching the incoming request ID, sent in Tag 262 (MDReqID) in the :ref:Market Data Request (V) message <market_data_request>. QST FIX server returns this ID in all responses corresponding to the Market Data Request (V) request.
TradeDate - 75
Warning
Supported only for clients that use API V2.0 version of the protocol.
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
75 |
TradeDate |
N |
LocalMktDate |
Comments
Indicates the date of the trade session. Will be set as YYYYMMDD.
NoMDEntries - 268
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
268 |
NoMDEntries |
Y |
NumInGroup |
Comments
Number of market data entries in the message. Starts the repeating group.
MDEntry Group
MDUpdateAction - 279
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
279 |
MDUpdateAction |
Y |
String |
Comments
Specifies the type of market data update.
Supported values include:
0New
1Change
2DeleteWarning
Supported only for clients that use
API V2.0version of the protocol:
3Append
4Delete From
5Delete Until
6Delete All
MDEntryType - 269
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
269 |
MDEntryType |
Y |
char |
Comments
Type of market data to request.
Supported values include:
0Bid (For stocks, this represents: Round lot, Ready Market)
1Ask (For stocks, this represents: Round lot, Ready Market)
2Trade
4Opening price
5Closing price
6Settlement price
7Trading session high price
8Trading session Low price
BTrade volume
YImplied bid (For stocks, this represents: Odd lot, Unit Share)
ZImplied ask (For stocks, this represents: Odd lot, Unit Share)
tInitial settlement priceWarning
The next fields are only supported for clients that use
API V2.0version of the protocol:
COpen interest
NDay high bid
ODay low ask
WFixing price
MPrior Settle Price
IIndicative opening price
MDEntryPx - 270
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
270 |
MDEntryPx |
Y |
Price |
Comments
Price of the instrument associated with this entry. Interpret the value based on the entry type.
MDEntrySize - 271
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
271 |
MDEntrySize |
C |
Qty |
Comments
Quantity associated with the related instrument.
Note
For Indicative Opening price the quantity represents the volume.
Condition: Sent when tag 269 (MDEntryType) is:
0Bid
1Ask
2Trade
BTrade volume
YImplied bid
ZImplied ask
IIndicative opening price
MDEntryDate - 272
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
272 |
MDEntryDate |
C |
UCDateOnly |
Comments
Date extracted from tiemstamp of the entry.
- Condition:
For
API V1.0it is sent when tag 269 (MDEntryType) is:6Settlement Price
For
API V2.0it is sent when tag 269 (MDEntryType) is:6Settlement PriceMPrior Settle PriceWFixing priceIIndicative opening price
MDEntryTime - 273
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
273 |
MDEntryTime |
C |
UCTimeOnly |
Comments
Time extracted from tiemstamp of the entry.
Condition:
For
API V1.0it is sent when tag 269 (MDEntryType) is:
6Settlement PriceNote
It will be set to
00:00:00.For
API V2.0it is sent when tag 269 (MDEntryType) is:
6Settlement Price
MPrior Settle Price
WFixing price
IIndicative opening price
MDEntryPositionNo - 290
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
290 |
MDEntryPositionNo |
C |
int |
Comments
Display position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1. The FIX client must determine where the new price belongs based on Tag 270 (MDEntryPx).
Condition: Tag 269 (MDEntryType) is either 0 (bid), 1 (offer), Y (implied bid), or Z (implied offer)
NumberOfOrders - 346
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
346 |
NumberOfOrders |
C |
int |
Comments
Number of orders that comprise the quantity represented in Tag 271 (MDEntrySize) of this message.
Condition: Sent only when all of the following are true:
Tag 18214 (IncludeNumberOfOrders) was set to
Yon the Market Data Request (V) message.Tag 269 (MDEntryType) contains:
0(Bid),1(Ask),Y(Implied bid), orZ(Implied ask).The exchange provides this information.
SecurityID - 48
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
48 |
SecurityID |
Y |
String |
Comments
QST internal instrument ID that uniquely identifies the instrument in the QST platform (equivalent to 22 = 96 (QST internal instrument id)).
Symbol - 55
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
55 |
Symbol |
N |
String |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Exchange-provided product symbol for the tradable product.
SecurityDesc - 107
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
107 |
SecurityDesc |
N |
String |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Security description.
Product - 460
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
460 |
Product |
N |
Int |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Indicates the type of product the security is associated with.
Supported values include:
2Commodity
4Currency
6Government
5Equity
12Others
14Energy
SecurityType - 167
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
167 |
SecurityType |
Y |
String |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Asset class of the instrument.
Supported values:
FUTFuture
MLEGMulti-leg
OPTOption
BBond
EEquity Outright
EDEquity Derivative
IIndex
FXIndex
CFDIndex
PHYIndex
MaturityMonthYear - 200
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
200 |
MaturityMonthYear |
N |
MonthYear |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Month and year the instrument reaches maturity in the format YYYYMM.
Note
If included, tag 541 (MaturityDate) will override this tag.
Condition: Required when Tag 167 (SecurityType) is not MLEG
MaturityDate - 541
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
541 |
MaturityDate |
C |
LocalMktDate |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Maturity date in format YYYYMMDD.
Note
This tag value overrides tag 200 (MaturityMonthYear) and tag 205 (MaturityDay), if they are also specified.
Condition: Required when Tag 167 (SecurityType) is not MLEG
MaturityDay - 205
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
205 |
MaturityDay |
C |
DayOfMonth |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Maturity day for the instrument, provided only for daily(non-monthly) instruments.
QST FIX server uses this value and Tag 200 (MaturityMonthYear) to specify the maturity date when Tag 167 (SecurityType) is not MLEG.
Range: 1-31
Note
If included, tag 541 (MaturityDate) will override this tag.
Condition: Required when multiple contracts exist for the same month.
DeliveryTerm - 18211
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
18211 |
DeliveryTerm |
N |
String |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Term of delivery for the instrument.
Supported values include:
MMonth
DDay
SecurityExchange - 207
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
207 |
SecurityExchange |
C |
Exchange |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Name of the market where the instrument trades.
QST FIX server uses this value to identify the exchange that offers the security.
Supported values include:
CME- For all exchanges that are part of the CME Group(NYMEX, COMEX, CBOT, CME, KCBT).
ICE- For ICE US.
Condition: Required when Tag 100 (ExDestination) is absent and when tag 22 (IDSource) is 8 (Exchange security ID), 97 (Alias) or 98 (Exchange instrument symbol).
ExDestination - 100
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
100 |
ExDestination |
C |
Exchange |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Market Identifier Code (MIC) of the sub-market where the instrument trades(according to ISO 10383).
Supported values:
XCBT
XCME
XNYM
XCEC
KCBT
IFUS
Condition: Required when Tag 207 (SecurityExchange) is absent and when tag 22 (IDSource) is 8 (Exchange security ID), 97 (Alias) or 98 (Exchange instrument symbol).
CFICode - 461
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
461 |
CFICode |
C |
String |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
Supported values include:
FFuture
OPOption Put
OCOption Call
MMLEG
XUnkown value
Currency - 15
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
15 |
Currency |
C |
Currency |
Comments
Note
Supported only for clients that use API V1.0 version of the protocol.
ISO-standard symbol for the instrument’s trading currency.
NoMdFeedTypes Group
MDFeedType - 1022
Warning
Supported only for clients that use API V2.0 version of the protocol.
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
1022 |
MDFeedType |
N |
String |
Comments
Describes a class of service for a given data feed.
Supported values include:
OOutright book depth
IImplied book depth
Note
This field will only be sent if the client is subscribed to ASK, BID, ASK IMPLIED or BID IMPLIED.
MarketDepth - 264
Warning
Supported only for clients that use API V2.0 version of the protocol.
Tag number |
Field Name |
Required |
Data type |
|---|---|---|---|
264 |
MarketDepth |
N |
int |
Comments
Identifies the depth of book.
Note
This field will only be sent if the client is subscribed to
ASK,BID,ASK IMPLIEDorBID IMPLIED.
Warning
If this is received, the client should update the book MD. This might happen, but very rarely.
Message Notes
The Market Data Incremental Refresh (X) message is used to send updates whenever the market data changes for an instrument to which a FIX client subscribes for incremental updates.
Calculating entry positions for the API V1.0 version of the protocol
Market Data Incremental Refresh (X) messages can contain multiple New, Delete and Change actions for the same contract and MDEntryType. The FIX client must take into account that Tag 290 (MDEntryPositionNo) in an update or in a delete action, always indicates the position of the entry before processing the current message.
The following shows an example of an algorithm you can use to process market depth updates:
Create a ladder data structure that is sorted by price.
Create a before instance and an after instance.
Populate before instance with the Market Data Snapshot (W) message.
When a Market Data Incremental Refresh (X) is received and:
Tag 279 (MDUpdateAction) is
0(New), insert it directly into the after instance.Tag 279 (MDUpdateAction) is
1(Change), apply the quantity change to the before instance.Tag 279 (MDUpdateAction) is
2(Delete), mark it for deletion in the before instance but do not actually delete it.After the entire Market Data Incremental Refresh (X) is processed in this manner, insert all records not marked for deletion in the before instance into the after instance.
Delete the contents of the before instance.
Copy the contents of after instance to the before instance.
Display the after instance to the user.
Calculating entry positions for the API V2.0 version of the protocol
Warning
Supported only for clients that use API V2.0 version of the protocol.
Market Data Incremental Refresh (X) messages can contain multiple New, Delete and Change actions
for the same contract and MDEntryType. The FIX client must take into account that Tag 290 (MDEntryPositionNo)
in all actions, always indicates the position relative to the current instance. For example if the client
receives a delete on position 1 and an update on position 2. The position for the second action(update) is
relative to the resulted instance after applying the delete action.
The following shows an example of an algorithm you can use to process market depth updates:
Create a ladder data structure that is sorted by price, with the depth received in the security definition(tags NoMdFeedTypes, MDFeedType, and MarketDepth).
Create an instance that is populated with the Market Data Snapshot (W) message.
When a Market Data Incremental Refresh (X) is received and:
Note
When processing an insert, the client should shift down all the levels greater than the one inserted and if the last level exceeds the maximum book depth, it should be deleted.
When processing an append, if the action makes the book to grow above its maximum depth, the client should delete the last entry of the book.
When processing a delete, the client should shift up all the levels bigger than the one deleted.
When processing a delete until, the client should shift up by the number of levels received, all entries from the current book that have a level bigger than the level of the action received.
Tag 279 (MDUpdateAction) is
0(New), insert it directly into the instance.Tag 279 (MDUpdateAction) is
1(Change), apply the price, quantity, and number of orders change to the instance.Tag 279 (MDUpdateAction) is
2(Delete), delete it from the instance.Tag 279 (MDUpdateAction) is
3(Append), insert a new book entry at the end of the book with received values.Tag 279 (MDUpdateAction) is
4(Delete From), delete all levels of the book starting from received level (including) to the last level.Tag 279 (MDUpdateAction) is
5(Delete Until), delete all levels of the book starting from the first level till the received level (including).Tag 279 (MDUpdateAction) is
6(Delete All), delete delete all levels of the book.Display the instance to the user.
Examples
Receiving an incremental refresh:
8=FIX.4.2|9=136|35=X|34=3|49=QSTFIXAPI|52=20200722-16:59:05.936198|56=ciumpy1|262=CL12.0001|268=1|279=1|269=1|48=18531299|270=325825|271=28|346=2|290=1|10=254|