TT® FIX

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)
For additional information about this component group, consult the full documentation.
Tag # Field name Req’d Data type Comments
8 BeginString Y String

FIX protocol version

The tag indicates the beginning of a new message. This tag is always the first tag in the message.

The value is always FIX.4.2.

9 BodyLength Y int

Message length (in characters)

The value represents number of characters in the message following this tag up to, and including, the delimiter immediately preceding Tag 10 (CheckSum). This tag must be the second field in a message.

35 MsgType Y String

Type of message contained in the message body

This tag must appear third in the list of header tags.

Possible values include:

  • 0: Heartbeat
  • 1: Test Request
  • 2: Resend Request
  • 3: Reject
  • 4: Sequence Reset
  • 5: Logout
  • 8: Execution Report
  • 9: Order Cancel Reject
  • A: Logon
  • B: News
  • c: Security Definition Request
  • D: Order Single
  • d: Security Definition
  • e: Security Status Request
  • f: Security Status
  • F: Order Cancel Request
  • G: Order Cancel Replace Request
  • H: Order Status Request
  • V: Market Data Request
  • W: Market Data Snapshot Full Refresh
  • X: Market Data Incremental Refresh
  • Y: Market Data Request Reject
  • AE: Trade Capture Report
49 SenderCompID Y String

ID of the FIX session

The value will be the same value the FIX client sends in tag 56 (TargetCompID) in its requests to TT FIX.

56 TargetCompID Y String

FIX client ID, corresponding to the SenderCompID specified for the user in TT User Setup

The value is the same as sent in tag 49 (SenderCompID) in FIX client requests.

50 SenderSubID C String

Unique ID for the message sender

For CME, the value corresponds to the Operator ID.

Condition: Sent if TT User Setup specifies an exchange operator ID

142 SenderLocationID N string Specific message originator's location (i.e. geographic location and/or desk, trader)
116 OnBehalfOfSubID N Data type: String

New tag for TT

Unique Trader ID (can also be provided in Tag 50 (SenderSubID))

The value maps to the Alias field configured for a user in Setup.

129 DeliverToSubID C String

Value of Tag 116 (OnBehalfOfSubID) in the FIX client request.

Condition: Sent in Execution Report (8) and Order Cancel Reject (9) messages.

34 MsgSeqNum Y SeqNum

Message sequence number.

43 PossDupFlag C Boolean

Whether the sequence number for this message is already used

Possible values include:

  • Y: Possible duplicate
  • N: Original transmission

Condition: Sent when TT FIX resends messages

97 PossResend C Boolean

Whether the message might contain information that has been sent under another sequence numbe

Possible values include:

  • Y: Possible resend
  • N: Original transmission

Condition: Sent when TT FIX restarts after encountering a corrupt FIX message cache, and only until it completes the initial download.

122 OrigSendingTime C UTCTimestamp

Original time of message transmission, when transmitting orders as the result of a resend request

Always expressed in UTC.

Condition: Sent when TT FIX resends a message

52

SendingTime

Y UTCTimestamp

Time, in UTC, the message was sent.

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
  • A: Imbalance (B3 Auction and Pre-Open market states only)
  • B: Trade volume
  • J: Empty book
  • Y: Implied bid
  • Z: Implied ask
  • m: OTC trade (New for TT FIX)
  • n: Market bid (B3 Auction and Pre-Open market states only)
  • o: Market ask (B3 Auction and Pre-Open market states only)
  • 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
  • CS: common stock
  • NONE: No security type
> 107 SecurityDesc N String

Security description.

> 460 Product N int Product type associated with the security.

Possible values include:

  • 1: Agency
  • 2: Commodity
  • 3: Corporate
  • 4: Currency
  • 5: Equity
  • 6: Government
  • 7: Index
  • 8: Loan
  • 9: Money market
  • 10: Mortgage
  • 11: Municipal
  • 12: Other
  • 13: Financing
  • 14: Energy
  • 94: Alt Symbol (For ICE, the value is the "Cleared Alias" for the contract.)
> 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
  • H: Hour
  • 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
  • IDEM
  • KCG
  • LSE
  • 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 For additional information about this component group, consult the full documentation.
Tag # Field Name Req’d Data type Comments
10 Checksum Y String

Unencrypted three-character checksum

This tag must always be the last field in a message (i.e. it serves, with the trailing <SOH>, as the end-of-message delimiter).

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.