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:
0
New
1
Change
2
DeleteWarning
Supported only for clients that use
API V2.0
version of the protocol:
3
Append
4
Delete From
5
Delete Until
6
Delete All
MDEntryType - 269
Tag number |
Field Name |
Required |
Data type |
---|---|---|---|
269 |
MDEntryType |
Y |
char |
Comments
Type of market data to request.
Supported values include:
0
Bid (For stocks, this represents: Round lot, Ready Market)
1
Ask (For stocks, this represents: Round lot, Ready Market)
2
Trade
4
Opening price
5
Closing price
6
Settlement price
7
Trading session high price
8
Trading session Low price
B
Trade volume
Y
Implied bid (For stocks, this represents: Odd lot, Unit Share)
Z
Implied ask (For stocks, this represents: Odd lot, Unit Share)
t
Initial settlement priceWarning
The next fields are only supported for clients that use
API V2.0
version of the protocol:
C
Open interest
N
Day high bid
O
Day low ask
W
Fixing price
M
Prior Settle Price
I
Indicative 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:
0
Bid
1
Ask
2
Trade
B
Trade volume
Y
Implied bid
Z
Implied ask
I
Indicative 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.0
it is sent when tag 269 (MDEntryType) is:6
Settlement Price
-
For
API V2.0
it is sent when tag 269 (MDEntryType) is:6
Settlement PriceM
Prior Settle PriceW
Fixing priceI
Indicative 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.0
it is sent when tag 269 (MDEntryType) is:
6
Settlement PriceNote
It will be set to
00:00:00
.For
API V2.0
it is sent when tag 269 (MDEntryType) is:
6
Settlement Price
M
Prior Settle Price
W
Fixing price
I
Indicative 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
Y
on 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:
2
Commodity
4
Currency
6
Government
5
Equity
12
Others
14
Energy
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:
FUT
Future
MLEG
Multi-leg
OPT
Option
B
Bond
E
Equity Outright
ED
Equity Derivative
I
Index
FX
Index
CFD
Index
PHY
Index
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:
M
Month
D
Day
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:
F
Future
OP
Option Put
OC
Option Call
M
MLEG
X
Unkown 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:
O
Outright book depth
I
Implied 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 IMPLIED
orBID 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|