Skip to main content

Derivatives UDP Realtime Incremental Updates

Incremental update messages are sent on dual A/B multicast channels. Each message has a long (8-byte) monotonically increasing sequence number that is never reset. The stream of messages on the A/B channels are identical; however, the grouping of messages into packets may vary between A and B channels.

The packet header sequence number is the sequence number of the first message in the packet, or the next expected sequence number if the packet contains no messages (a heartbeat packet). Thus, the expected sequence number of the next packet is always the current packet sequence number plus the current packet message count.

note

Heartbeat packets are sent in the absence of new updates every 5 seconds. This is represented by a packet header with PktMessageCount=0.

All incremental messages are sent in a transaction. A transaction contains all incremental messages that are published as a result of a single inbound message or event in the trading system. Single-message transactions have both the start-of-transaction and end-of-transaction flags set.

info

All incremental messages require a message header and instrument header component.

Instrument Header

All incremental messages contain the following component as the first field after the message header. Side is null (-128) unless otherwise noted for particular messages.

Instrument HeaderTypeLengthOffsetDescription
Flagsuint810Message header bitset:
0x01 - start of transaction
0x02 - end of transaction
0x04 - clear book (reserved for future use)
Sideint8111 - Buy
-1 - Sell
0 - opening fill
-128 - null value (used in messages in which side is not applicable)
InstrumentIdint3242Instrument identifier
InstrSeqNumuint3246Per-instrument sequence number. Reset each trading day.
TradingSessionDateint16210Days since Unix epoch
Padding2int162122 bytes of padding (reserved for future use)
TransactTimeint64814Event timestamp - nanoseconds since Unix epoch

Outright Instrument Definition

Outright Instrument Definition (10)TypeLengthOffsetDescription
Symbolchar242432Instrument name or symbol
ProductCodechar8856Code of underlying product/asset. Example: TEC (Nano SuperTech Fut)
Descriptionchar323264Instrument name
PriceIncrementint64896Minimum constant tick for instrument, encoded with 9 decimal places
CfiCodechar88104ISO standard instrument categorization code
Currencychar88112Currency used for price
FirstTradingSessionDateuint162120Days since Unix epoch
LastTradingSessionDateuint162122Days since Unix epoch
OldContractSizeint324124Contract size encoded with 0 decimal places (deprecated from version 1.5 of this UDP Market Data API specification document).
PriorSettlementPriceint648128Price encoded with 9 decimal places
SettlementPriceint648136Price encoded with 9 decimal places
LimitDownPriceint648144Minimum price at which an instrument can currently trade
LimitUpPriceint648152Maximum price at which an instrument can currently trade
ProductIdint324160Product identifier
ProductGroupuint81164
0 - Currency
1 - Equity
2 - Energy
3 - Metals
4 - Interest Rate
5 - Agriculture
6 - Crypto
TradingStatusuint81165Trading session status
0 - Pre-open
1 - Open
2 - Halt
3 - Pause
4 - Close
5 - Pre-open (No Cancel)
6 - Expired
7 - Forbidden
InstrumentDefinitionFlagsuint162166Bitset
0x01 - isPriorSettlementTheoretical
0x02 - isAnnounced
0x04 - isCall (applicable for options)
0x08 - isStrikeDelisted
ContractSizeint648168Contract size encoded with 8 decimal places (added in version 1.5 of this UDP Market Data API specification document)

Spread Instrument Definition

Spread Instrument Definition (11)TypeLengthOffsetDescription
Symbolchar242432Instrument name or symbol
ProductCodechar8856Code of underlying product/asset. Example: TEC (Nano SuperTech Fut)
Descriptionchar323264Instrument name
PriceIncrementint64896Minimum constant tick for instrument, encoded with 9 decimal places
CfiCodechar88104ISO standard instrument categorization code
Currencychar88112Currency used for price
FirstTradingSessionDateuint162120Days since Unix epoch
LastTradingSessionDateuint162122Days since Unix epoch
OldContractSizeint324124Contract size encoded with 0 decimal places (deprecated from version 1.5 of this UDP Market Data API specification document)
PriorSettlementPriceint648128Price encoded with 9 decimal places
SettlementPriceint648136Price encoded with 9 decimal places
LimitDownPriceint648144Minimum price at which an instrument can currently trade
LimitUpPriceint648152Maximum price at which an instrument can currently trade
ProductIdint324160Product identifier
ProductGroupuint811640 - Currency
1 - Equity
2 - Energy
3 - Metals
4 - Interest Rate
5 - Agriculture
6 - Crypto
TradingStatusuint81165Trading session status
0 - Pre-open
1 - Open
2 - Halt
3 - Pause
4 - Close
5 - Pre-open (No Cancel)
6 - Expired
7 - Forbidden
Leg1InstrumentIdint324166Instrument identifier for near leg
Leg2InstrumentIdint324170Instrument identifier for far leg
SpreadBuyConventionint811741 - Use far leg as bid
-1 - Use near leg as bid
InstrumentDefinitionFlagsuint162175Bitset
0x01 - isPriorSettlementTheoretical
0x02 - isAnnounced
0x04 - isCall (applicable for options)
0x08 - isStrikeDelisted

Option Instrument Definition

Option Instrument Definition (12)TypeLengthOffsetDescription
Symbolchar242432Instrument name or symbol
ProductCodechar8856Code of underlying product/asset. Example: TEC (Nano SuperTech Fut)
Descriptionchar323264Instrument name
SmallTickint64896Small tick size, encoded with 9 decimal places
CfiCodechar88104ISO standard instrument categorization code
LargeTickint648112Large tick size, encoded with 9 decimal places
LargeTickThresholdint648120Large tick size applies if price is >= this threshold price, encoded with 9 decimal places
StrikePriceint648128Strike price, encoded with 9 decimal places
FirstTradingSessionDateuint162136Days since Unix epoch
LastTradingSessionDateuint162138Days since Unix epoch
PriorSettlementPriceint648140Price encoded with 9 decimal places
SettlementPriceint648148Price encoded with 9 decimal places
ProductIdint324156Product identifier
UnderlyingInstrumentIdint324160Instrument id of the underlying outright contract
ProductGroupuint811640 - Currency
1 - Equity
2 - Energy
3 - Metals
4 - Interest Rate
5 - Agriculture
6 - Crypto
TradingStatusuint81165Trading session status
0 - Pre-open
1 - Open
2 - Halt
3 - Pause
4 - Close
5 - Pre-open (No Cancel)
6 - Expired
7 - Forbidden
InstrumentDefinitionFlagsuint162166Bitset
0x01 - isPriorSettlementTheoretical
0x02 - isAnnounced
0x04 - isCall (applicable for options)
0x08 - isStrikeDelisted

Trading Status Update

Trading Status Update (17)TypeLengthOffsetDescription
LimitDownPriceint64832Minimum price at which an instrument can currently trade
LimitUpPriceint64840Masimum price at which an instrument can currently trade
TradingStatusuint8148Trading session status:
0 - Pre-open
1 - Open
2 - Halt
3 - Pause
4 - Close
5 - Pre-open (No Cancel)
6 - Expired
7 - Forbidden

Order Put

Sent when a resting order is added or updated.

info

The Side of order is defined in the instrument header (1 or -1).

Order Put (20)TypeLengthOffsetDescription
OrderIdint64832Unique order ID.
Unique across entire channel and across time, but not necessarily across different channels. Never reused for an unrelated order.
Priceint64840Price encoded with 9 decimal places
Quantityint32448Quantity encoded with 0 decimal places

Order Delete

Side of deleted order is defined in instrument header (1 or -1).

Order Delete (21)TypeLengthOffsetDescription
OrderIdint64832Unique identifier for order

Implied Order Update

Side is defined in instrument header (1 or -1).

Implied Order Update (22)TypeLengthOffsetDescription
BestPriceint64832First level implied price encoded with 9 decimal places. Null price encoded as 0x8000000000000000
NextPriceint64840Second level implied price encoded with 9 decimal places. Null price encoded as 0x8000000000000000
BestQtyint32448First level implied quantity encoded with 0 decimal places
NextQtyint32452Second level implied quantity encoded with 0 decimal places

Trade Summary

Summarizes all fills of an aggressor order. Sent before individual trade messages, as well as order put/delete and market stat messages.

info

Aggressor Side is defined in instrument header.

Trade Summary (33)TypeLengthOffsetDescription
AggressorOrderIdint64832Order identifier of aggressing order
AggressorReceiveTimeint64840Nanoseconds since Unix epoch when we received aggressor new/replace order message on gateway
VwapPriceint64848Volume weighted average price encoded with 9 decimal places. Null price encoded as 0x8000000000000000
DeepestPriceint64856Price of deepest/last resting order that an aggressing order matched
Quantityint32464Quantity encoded with 0 decimal places

Trade

Trade message does not implicitly delete or update matched resting order; a separate OrderPut or OrderDelete is sent (in the same transaction).

info

Aggressor Side is defined in instrument header.

Trade (30)TypeLengthOffsetDescription
MatchIdint64832Transaction id representing match, shared by all trades within match
BuyOrderIdint64840Unique identifier for trade buy order. In case of implied order, encoded as 0x8000000000000000
SellOrderIdint64848Unique identifier for trade sell order. In case of implied order, encoded as 0x8000000000000000
Priceint64856Price encoded with 9 decimal places
Quantityint32464Quantity encoded with 0 decimal places

Trade Amend

Trade Amend (31)TypeLengthOffsetDescription
MatchIdint64832Transaction id representing match, shared by all trades within match
BuyOrderIdint64840Unique identifier for trade buy order. In case of implied order, encoded as 0x8000000000000000
SellOrderIdint64848Unique identifier for trade sell order. In case of implied order, encoded as 0x8000000000000000
OldPriceint64856Price encoded with 9 decimal places
NewPriceint64864Price encoded with 9 decimal places

Trade Bust

Trade Bust (32)TypeLengthOffsetDescription
MatchIdint64832Transaction id representing match, shared by all trades within match
BuyOrderIdint64840Unique identifier for trade buy order. In case of implied order, encoded as 0x8000000000000000
SellOrderIdint64848Unique identifier for trade sell order. In case of implied order, encoded as 0x8000000000000000

Spread Trade Amend

Spread Trade Amend (34)TypeLengthOffsetDescription
MatchIdint64832Transaction id representing match, shared by all trades within match
BuyOrderIdint64840Unique identifier for trade buy order. In case of implied order, encoded as 0x8000000000000000
SellOrderIdint64848Unique identifier for trade sell order. In case of implied order, encoded as 0x8000000000000000
OldPriceint64856Price encoded with 9 decimal places
NewPriceint64864Price encoded with 9 decimal places
OldLeg1Priceint64872Spread leg price encoded with 9 decimal places
NewLeg1Priceint64880Spread leg price encoded with 9 decimal places
OldLeg2Priceint64888Spread leg price encoded with 9 decimal places
NewLeg2Priceint64896Spread leg price encoded with 9 decimal places

Market Stat

Market Stat (40)TypeLengthOffsetDescription
Priceint64832Price encoded with 9 decimal places
StatTypechar1404 - Day Opening Price
5 - Closing Price
6 - Settlement Price
7 - Trading Session High Price
8 - Trading Session Low Price
F - Reference Price
I - Initial Opening Price

Trade Session Volume

Trade Session Volume (41)TypeLengthOffsetDescription
VwapPriceint64832Volume weighted average price encoded with 9 decimal places. Null price encoded as 0x8000000000000000
TradeVolumeint32440Total day traded volume for instrument as of the last trade in message

Open Interest

Open Interest (42)TypeLengthOffsetDescription
Quantityint32432Quantity encoded with 0 decimal places

Was this helpful?