Market Data Incremental Refresh (X) message
Purpose
Used to send updated market data for an instrument
Message Direction
From TT FIX to FIX client
Tag Directory
Click the links below to navigate to the documentation for that tag.
| Tag | Name | Type | Required | Comments | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Header | Y | For additional information about this component group, consult the documentation. 35=X (MsgType) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 262 | MDReqID | STRING | Y | Unique ID matching the incoming request ID, sent in Tag 262 (MDReqID) in the Market Data Request (V) message. TT FIX returns this ID in all responses corresponding to the Market Data Request (V) request. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 18210 | PriceFeedStatus | INT | C Sent only when the status of the price feed changes. | Current state of the price feed. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 268 | NoMDEntries | NUMINGROUP | Y | Number of market data entries in the message. Starts the repeating group. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 279 | MDUpdateAction | CHAR | Y | Specifies the type of market data update. Note: When Tag 35 (MsgType) = X, (i.e., Market Data Incremental Refresh message), Tag 279 must be the first tag in each MDEntry repeating group. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 269 | MDEntryType | CHAR | Y | Type of market data to request. Note: When Tag 35 (MsgType) = V, (i.e., Market Data Request) or Tag 35 (MsgType) = X, (i.e., Market Data Snapshot), Tag 269 must be the first tag in each MDEntry repeating group. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 270 | MDEntryPx | PRICE | C Sent unless Tag 269 (MDEntryType)= A (Imbalance), n (Market bid), or o (Market ask). | Price of the instrument associated with this entry. Interpret the value based on the entry type. Note: When tag 269 (MDEntryType) = x (Last traded), this value contains the last traded price (LTP). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 271 | MDEntrySize | QTY | C Sent when tag 269 (MDEntryType) is:
| Quantity associated with the related instrument. Note: Some exchanges do not send this tag when Tag 269 (MDEntryType) = 2 (Trade), p (Indicative Open), q (Indicative close), r (Indicative bid), or s (Indicative ask). For more information, refer to the appropriate exchange documentation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 272 | MDEntryDate | UTCDATEONLY | C Sent when tag 269 (MDEntryType) is:
| Settlement, or Indicative Settle, date. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 273 | MDEntryTime | UTCTIMEONLY | C Sent when tag 269 (MDEntryType) is:
| Settlement, or Indicative Settle, time. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 290 | MDEntryPositionNo | INT | C Tag 269 (MDEntryType) is either 0 (bid), 1 (offer), Y (implied bid), or Z (implied offer) | Position of the MD price level in relation to the best bid / best offer (1 being the best). 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). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 198 | SecondaryOrderID | STRING | C Sent only when Tag 16486 (MDEntryState) is provided. Currently, only BrokerTec supports the tag. | Unique identifier for the order (assigned by the exchange), based on the following:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 16486 | MDEntryState | INT | C Sent only for BrokerTec workup markets | Current state of a workup order. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 277 | TradeCondition | MULTIPLESTRINGVALUE | C Sent when Tag 269 (MDEntryType) = A (Imbalance). | Whether the quantity represented in Tag 271 (MDEntrySize) represents an imbalance with more buyers or an imbalance with more sellers. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 346 | NumberOfOrders | INT | C Sent only when all of the following are true:
| Number of orders that comprise the quantity represented in Tag 271 (MDEntrySize) of this message. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2446 | AggressorSide | INT | C Sent when Tag 269 (MDEntryType) = 2 (Trade). | Side of aggressive order or quote resulting in match event. (*) On CME, trades without aggressors occur at Market Open, after a Pre-Open or after a Pause, and also when the event includes customer order participation in a trade with a CME Globex-generated implied bid or offer. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 16489 | ExactNumOrdersIndicator | BOOLEAN | C Sent only when all of the following are true:
| Whether the number of orders specified in Tag 346 (NumberOfOrders) represents an exact or inexact value. Note: Supported only for the OSE exchange. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 55 | Symbol | STRING | N | Exchange-provided product symbol for the tradable product. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 167 | SecurityType | STRING | N | Asset class of the instrument. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 107 | SecurityDesc | STRING | N | Security description. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 460 | Product | INT | N | Product type associated with the security. Note: Sent only in Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 200 | MaturityMonthYear | MONTHYEAR | N | Month and year the instrument reaches maturity in the format YYYYMM. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 541 | MaturityDate | LOCALMKTDATE | N | Maturity date in format YYYYMMDD. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 205 | MaturityDay | DAYOFMONTH | N | Day of expiration for the instrument. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 201 | PutOrCall | INT | C Sent when Tag 167 (SecurityType) is OPT. | Whether the option represents a put or call Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 202 | StrikePrice | PRICE | C Sent when Tag 167 (SecurityType) is OPT. | Strike price for an option | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 206 | OptAttribute | CHAR | N | Additional information about the option contract. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 18211 | DeliveryTerm | CHAR | C Sent when the delivery term is not monthly. | Term of delivery for the instrument. TT FIX uses this value to identify contracts that do not have a monthly delivery term. Note: When Tag 18211 DeliveryTerm equals any value except ‘M’, ‘Y’ or ‘Q’, then you must specify the delivery day/date in Tag 205 MaturityDay or Tag 541 MaturityDate. Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 743 | DeliveryDate | LOCALMKTDATE | N | Date for contract delivery | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 48 | SecurityID | STRING | N | TT security ID that uniquely identifies the instrument in the TT platform. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 207 | SecurityExchange | EXCHANGE | N | Name of the market where the instrument trades. TT FIX uses this value to identify the exchange that offers the Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 100 | ExDestination | EXCHANGE | N | Name of the sub-market where the instrument trades. ISO 10383 defines a comprehensive list of MIC codes. TT FIX uses this value to identify a security. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 15 | Currency | CURRENCY | N | ISO-standard symbol for the instrument’s trading currency. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 16052 | ExchangeSendingTime | STRING | C Only sent when the MarketDataRequest (V) requests at least one bid/ask/implied-bid/implied-ask and includes 269=u (Exchange sending time). | UTC time the market data message was transmitted from the exchange, expressed as number of microseconds since Unix epoch. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 16060 | ExchangeTransactTime | STRING | C Only sent when the MarketDataRequest (V) requests at least one bid/ask/implied-bid/implied-ask and includes 269=v (Exchange transaction time). | UTC time of the execution/order creation that resulted in this market data message from the exchange, expressed as number of microseconds since Unix epoch. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 18225 | ExchangeSeqNum | INT | C Only sent when MDEntryType is bid/ask/implied-bid/implied-ask. | (TT internal only) Sequence number on the packet from the exchange that contained this book update. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 864 | NoEvents | NUMINGROUP | N | Number of entries in the event types repeating group | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 865 | EventType | INT | N | Type of event Possible values:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 866 | EventDate | LOCALMKTDATE | N | Date the event occurred | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1145 | EventTime | UTCTIMESTAMP | N | Note: This tag is only available for EPEX and Nord Pool. Specific time of event. Use in combination with EventDate <866>. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Trailer | Y | For additional information about this component group, consult the full documentation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
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 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 both instances 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.