TT® FIX

Market Data Market Data Incremental Refresh (X) message

Purpose

Used to send updated market data for an instrument

Message Direction

From TT FIX to FIX client

Supported Tags

Tag # Field Name Req’d Data type Comments
Component: <Standard Header> Y 35=X (MsgType)
262 MDReqID Y String

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 C int

Current state of the price feed.

Possible values include:

  • 0: Price feed is unavailable
  • 1: Price feed is available

Condition: Sent only when the status of the price feed changes.

268 NoMDEntries Y NumInGroup

Number of market data entries in the message. Starts the repeating group.

279 MDUpdateAction Y String

Specifies the type of market data update.

Possible values include:

  • 0: New
  • 1: Change
  • 2: Delete
269 MDEntryType Y char

Type of market data in this entry.

Possible values include:

  • 0: Bid
  • 1: Ask
  • 2: Trade
  • 4: Opening price
  • 5: Closing price
  • 6: Settlement price
  • 7: Trading session high price
  • 8: Trading session Low price
  • B: Trade volume
  • J: Empty book
  • Y: Implied bid
  • Z: Implied ask
  • m: OTC trade (New for TT FIX)
  • p: Indicative open
  • q: Indicative close
  • r: Indicative bid
  • s: Indicative ask
  • t: Indicative settlement
  • u: Exchange sending time
  • v: Exchange transaction time
  • w: Exchange sequence number (TT internal only)
  • x: Last traded
270 MDEntryPx C Price

Price of the instrument associated with this entry. Interpret the value based on the entry type.

Condition: Sent unless Tag 269 (MDEntryType)= A (Imbalance), n (Market bid), or o (Market ask).

271 MDEntrySize C Qty

Quantity associated with the related instrument.

Condition: Sent when tag 269 (MDEntryType) is:

  • 0: Bid
  • 1: Ask
  • 2: Trade
  • A: Imbalance
  • Y: Implied bid
  • Z: Implied ask
  • n: Market bid
  • o: Market ask
  • p: Indicative open
  • q: Indicative close
  • r: Indicative bid
  • s: Indicative ask
  • x: Last traded price

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 C UCDateOnly

Settlement, or Indicative Settle, date.

Condition: Sent when tag 269 (MDEntryType) is:

  • 6: Settlement
  • t: Indicative settlement
273 MDEntryTime C UCTimeOnly

Settlement, or Indicative Settle, time.

Condition: Sent when tag 269 (MDEntryType) is:

  • 6: Settlement
  • t: Indicative settlement
290 MDEntryPositionNo C int

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)

198 SecondaryOrderID C String

Unique identifier for the order (assigned by the exchange), based on the following:

  • When Tag 16486 (MDEntryState) = 1 (Open Workup) and Tag 269 (MDEntryType) = 0 (Bid), the value represents the order ID of the best bid at the top of the queue.
  • When Tag 16486 (MDEntryState) = 1 (Open Workup) and Tag 269 (MDEntryType) = 1 (Offer), the value represents the order ID of the best offer at the top of the queue.
  • When Tag 16486 (MDEntryState) = (2,4), the value represents the order ID of the workup owner of the ask side. In this situation, the order ID of the work owner on the bid side is the one that was provided in a prior update as the order ID at the top of the queue. (Note: if all offers at the workup price are fully filled, this tag contains the order ID of the best offer at the top of the queue.)
  • When Tag 16486 (MDEntryState) = (3,5), the value represents the order ID of the workup owner on the bid side. In this situation, the order ID of the workup owner on the ask side is the one that was provided as the order ID of the best ask at the top of the queue. (Note: if all bids at the workup price are fully filled, this tag contains the order ID of the best bid at the top of the queue.)

Condition: Sent only when Tag 16486 (MDEntryState) is provided. Currently, only BrokerTec supports the tag.

16486 MDEntryState C int

Current state of a workup order.

Possible values include:

  • 0: Open workup
  • 1: Public workup where the aggressor hit the bid
  • 3: Public workup where the aggressor took the ask
  • 4: Private workup where the aggressor hit the bid
  • 5: Private workup where the aggressor took the ask

Condition: Sent only for BrokerTec workup markets

277 TradeCondition C MultipleValueString

Whether the quantity represented in Tag 271 (MDEntrySize) represents an imbalance with more buyers or an imbalance with more sellers.

Possible values include:

  • P: Imbalance More Buyers (Cannot be used in combination with Q)
  • Q: Imbalance More Sellers (Cannot be used in combination with P)

Condition: Sent when Tag 269 (MDEntryType) = A (Imbalance).

346 NumberOfOrders C int

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), or Z (Implied ask).
  • The exchange provides this information.
16489 ExactNumOrdersIndicator C Boolean

Whether the number of orders specified in Tag 346 (NumberOfOrders) represents an exact or inexact value.

Possible values include:

  • Y: Exact
  • N: Inexact

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 346 (NumberOfOrders) is provided.
  • The exchange provides this information.

Note: Supported only for the OSE exchange.

55 Symbol N String

Exchange-provided product symbol for the tradable product.

167 SecurityType N String

Asset class of the instrument.

Possible values include:

  • FUT: future
  • MLEG: multi-leg
  • OPT: option
  • SPOT: EEX spot products
  • CUR: currency
  • TBOND: treasury bond
  • NONE: No security type
200 MaturityMonthYear N MonthYear

Month and year the instrument reaches maturity in the format YYYYMM.

541 MaturityDate N LocalMktDate

Maturity date in format YYYYMMDD.

205 MaturityDay N DayOfMonth

Day of expiration for the instrument.

201 PutOrCall C int

Whether the option represents a put or call

Possible values include:

  • 0: Put
  • 1: Call

Condition: Sent when Tag 167 (SecurityType) is OPT.

202 StrikePrice C Price

Strike price for an option

Condition: Sent when Tag 167 (SecurityType) is OPT.

206 OptAttribute N char

Additional information about the option contract.

18211 DeliveryTerm C char

Term of delivery for the instrument.

TT FIX uses this value to identify contracts that do not have a monthly delivery term.

Possible values include:

  • A: Same day
  • B: Balance of month
  • D: Day
  • E: Weekly
  • L: Balance of week
  • M: Month
  • N: Next day
  • P: Pack
  • Q: Quarterly
  • S: Seasonal
  • T: Weekend
  • U: Bundle
  • V: Variable
  • W: Week
  • X: Custom
  • Y: Year

Condition: Sent when the delivery term is not monthly.

743 DeliveryDate N LocalMktDate

Date for contract delivery

48 SecurityID N String

TT security ID that uniquely identifies the instrument in the TT platform.

207 SecurityExchange N Exchange

Name of the market where the instrument trades.

TT FIX uses this value to identify a security.

Possible values include:

  • AGGREGATOR
  • ALGO
  • ASE
  • ASX
  • BrokerTec
  • B3
  • CFE
  • CME
  • CurveGlobal
  • EEX
  • Eris
  • eSpeed
  • Eurex
  • Euronext
  • ICE
  • ICE_L
  • KCG
  • MEFF
  • MX
  • NDAQ_EU
  • NFX
  • NLX
  • OSE
  • SGX
  • TFX
  • TOCOM
100 ExDestination N Exchange

New tag for TT

Name of the sub-market where the instrument trades.

TT FIX uses this value to identify a security.

ISO 10383 defines a comprehensive list of MIC codes.

15 Currency N Currency

ISO-standard symbol for the instrument’s trading currency.

16052 ExchangeSendingTime C String

UTC time the market data message was transmitted from the exchange, expressed as number of microseconds since Unix epoch.

Condition: Only sent when the MarketDataRequest (V) requests at least one bid/ask/implied-bid/implied-ask and includes 269=u (Exchange sending time).

16060 ExchangeTransactTime C String

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.

Condition: Only sent when the MarketDataRequest (V) requests at least one bid/ask/implied-bid/implied-ask and includes 269=v (Exchange transaction time).

Component: <Standard Trailer> Y

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.