Skip to main content
If the participants subscribed to ongoing updates for the instrument(s), the platform will then start sending unsolicited MarketDataIncrementalRefresh [X] messages which contain a mixture of trade and/or order book update messages. These incremental market data messages may contain a repeating group of updates in a single message. For example, an incoming sell order which enters the order book, executes against a resting buy order with the remainder written to the order book will trigger a MarketDataIncrementalRefresh [X] message containing the following updates:
  • The deletion of the previous best bid (as a result of the immediate fill)
  • The addition of a new best bid (next-best bid price)
  • The deletion of the best offer (new order has a better price)
  • The addition of a new best offer (representing the balance of the incoming sell order)
  • A record relating to the trade, and
  • A record relating to updated overall market volume

Table 22: MarketDataIncrementalRefresh (X) message

TagNameReqTypeDescription
< Standard Header >Y35 = X
262MDReqIDYStringThe ID of the request as indicated on the request
268NoMDEntriesYNumInGroup
→ 279MDUpdateActionYcharThe type of action conveyed by this block (0=New, 1=Change, 2=Delete)
→ 269MDEntryTypeCcharType of entry. Set where MDUpdateAction (279) = (0) New or 1 (Change). 0=Bid, 1=Offer, 2=Trade, 4=Opening Price, 5=Closing Price, 6=Settlement Price, 7=Trading Session High Price, 8=Trading Session Low Price, B=Trade Volume, g=Trading Reference Price
→ 278MDEntryIDNStringUnique reference for this entry. Typically a 13-character alphanumeric string.
→ 55SymbolYStringInstrument symbol
→ 22SecurityIDSourceYint8 = Exchange symbol
→ 48SecurityIDYStringWill always equal Symbol (55)
→ 167SecurityTypeNStringType of instrument (CS, FUT, FXSPOT, FXSWAP, OOF, OPT, NONE)
→ 1151SecurityGroupNStringSecurity sub-type. For example “Equities”
→ 270MDEntryPxNPriceOrder level price where MDEntryType (269) = 0 (Bid) or 1 (Offer). Traded price where MDEntryType (269) = 2 (Trade). Total value traded where MDEntryType (269) = B (Trade Volume)
→ 271MDEntrySizeNQtyRemaining order size where MDEntryType (269) = 0 (Bid) or 1 (Offer). Will be zero where MDUpdateAction (279) = 2 (Delete). Trade size where MDEntryType (269) = 2 (Trade). Total quantity traded where MDEntryType (269) = B (Trade Volume)
→ 272MDEntryDateNUTCDateOnlyThe date on which the price level or trade occurred
→ 273MDEntryTimeNUTCTimeOnlyThe time at which the price level updated or trade occurred (in UTC)
→ 59TimeInForceNcharTime in force for this order (0=Good for day, 1=Good till cancel, 6=Good till date)
→ 126ExpireTimeNUTCTimestampPopulated where TimeInForce (59) = 6 (Good Till Date)
→ 37OrderIDNStringOnly sent for price level updates. Will match OrderID (37) in the ExecutionReport [8], allowing Participants to identify their own orders within market data.
→ 40OrdTypeNchar2 = Limit order, K = Market-to-limit order
→ 828TrdTypeNintOnly sent for trades. 0 = Regular trade
→ 1003TradeIDNStringOnly sent for trade updates. Will match the ExecID (17) in the ExecutionReport fill, allowing Participants to identify their own trades within market data.
→ 2446AggressorSideNcharOnly sent for trades. Indicates which side was the aggressor in a trade (1=Buy, 2=Sell)
→ 336TradingSessionIDCStringSent for trades and trading status changes. Possible values: CLOSED, OPEN, PREOPEN, SUSPENDED, EXPIRED, TERMINATED, HALTED, MATCH_AND_CLOSE_AUCTION
< Standard Trailer >Y
Example 20: Market Data incremental containing multiple updates (repeating groups color-coded)
8=FIXT.1.1 | 9=987 | 35=X | 34=87 | 49=TARGET | 52=20240521-09:52:30.013930670 | 56=SENDER | 262=1552371733 | 268=6 | 279=0 | 269=0 | 278=1HQ4A5T0EDM1T | 55=GOOG | 48=GOOG | 22=8 | 167=NONE | 1151=Equities | 270=0.03 | 271=1500 | 272=20240521 | 273=09:52:30.004561670 | 59=0 | 37=1HQ4A5T0EDM1T | 40=2 | 279=0 | 269=1 | 278=1HQ4A5T0EDM1W | 55=GOOG | 48=GOOG | 22=8 | 167=NONE | 1151=Equities | 270=0.03 | 271=15 | 272=20240521 | 273=09:52:30.004561670 | 59=0 | 37=1HQ4A5T0EDM1W | 40=2 | 279=2 | 269=1 | 278=1HQ4A5T0EDM1W | 55=GOOG | 48=GOOG | 22=8 | 167=NONE | 1151=Equities | 270=0.03 | 271=0 | 272=20240521 | 273=09:52:30.004561670 | 59=0 | 37=1HQ4A5T0EDM1W | 40=2 | 279=2 | 269=0 | 278=1HQ4A5T0EDM1V | 55=GOOG | 48=GOOG | 22=8 | 167=NONE | 1151=Equities | 270=0.03 | 271=0 | 272=20240521 | 273=09:52:30.004561670 | 59=0 | 37=1HQ4A5T0EDM1V | 40=2 | 279=0 | 269=2 | 278=1HPT7DQ1GC4DS | 55=GOOG | 48=GOOG | 22=8 | 167=NONE | 1151=Equities | 270=0.03 | 271=15 | 272=20240521 | 273=09:52:30.004561670 | 59=0 | 40=2 | 828=0 | 1003=1HPT7DQ1GC4DS | 2446=2 | 279=0 | 269=B | 55=GOOG | 48=GOOG | 22=8 | 167=NONE | 1151=Equities | 270=93544.85 | 271=23660 | 272=20240521 | 273=09:52:30.004561670 | 336=OPEN | 10=156 |

Settlement Outcomes

Implementation

FIX tag 58 (Text) has been added to the MDIncGrp repeating group to communicate final settlement outcomes. When an instrument resolves with final settlement, the MarketDataIncrementalRefresh (35=X) or MarketDataSnapshotFullRefresh (35=W) message includes the textual outcome.

Message Structure

When an instrument settles, the message includes:
NoMDEntries/0/MDEntryType      | "6"          # Settlement price (269=6)
NoMDEntries/0/MDEntryPx        | <price>      # Settlement price value
NoMDEntries/0/Text             | <outcome>    # NEW: Textual outcome (tag 58)
NoMDEntries/0/TradingSessionID | "EXPIRED"    # Market status (336=EXPIRED)

Usage

Final Settlement: Tag 58 is present with the outcome text describing the resolution (e.g., “Pistons”, “Bulls”, “Over”, “Yes”). Trade Day Roll: Tag 58 is absent, even when 269=6 is present with 336=CLOSED or 336=EXPIRED. Tag 58 only populates when the settlement price and open interest update occur at final settlement, not during initial state transition to EXPIRED.

Technical Notes

  • No data dictionary modifications required - tag 58 already exists in FIX 5.0+ spec for MDIncGrp
  • This implementation keeps FIX vanilla/standard-compliant
  • Tag 58 is equivalent to the TIER1 field in gRPC settlement_tiers
Example: NBA game settlement where Detroit Pistons win:
269=6       # Settlement price entry type
270=1.000   # Settlement price (winning outcome pays $1.00)
58=Pistons  # Textual outcome
336=EXPIRED # Trading session status