MarketData Request
Subscribing to Streaming Data
The T4 FIX API provides (optional) subscriptions to streaming market data for all markets available in order routing. Market data is made available asynchronously and concurrently to order routing flow. Market data subscriptions are initiated with Market Data Request messages (Tag `35=V`) and are active during a FIX Session.
A Market Data Request specifies:
- Exchange (`207=SecurityExchange`)
- Contract (`55=Symbol`)
- Market (`48=SecurityID`)
Subscription and unsubscription are handled via:
- `263=1` – Subscribe (Snapshot + Updates)
- `263=2` – Unsubscribe
Successful subscriptions return:
- MarketData Snapshot (`35=W`)
- MarketData Incremental Refresh (`35=X`)
Each Market Data Entry (e.g., bid, offer, trade, volume) may include price and quantity. For example:
- Top of book: 2 entries (bid + offer)
- Full book: multiple entries per side
Incremental Refresh provides only updated depth levels, improving bandwidth efficiency.
Unsuccessful requests result in a MarketData Request Reject message.
Subscription Types
- Snapshot (263=0) — Current state only.
- Subscribe (263=1) — Snapshot + Updates.
- Unsubscribe (263=2) — Cancel updates.
- Subscribe Incremental (263=7) — Snapshot + Incremental Refresh.
- Chart Data (263=4,5) — See below.
Data Throughput / Buffering Levels
Buffering level (Tag `265`) options:
Value | Buffering Type | Description |
---|---|---|
2 | SlowTrade | SlowSmart + individual trades |
3 | SmartTrade | Smart + individual trades |
4 | SlowSmart | ~1/sec update if changed |
5 | Smart | (Recommended) variable rate |
6 | FastSmart | More frequent updates |
7 | All | No buffering (high bandwidth) |
8 | FastTrade | FastSmart + trades |
9 | TradeOnly | Trades only (no depth) |
Book Depth
Requested via Tag `264` (MarketDepth):
- 1 — Top of book (Level 1)
- 10 — Full depth (up to 10 levels)
Matching Market Data
Data can be matched using:
- `48=SecurityID` (default)
- `262=MDReqID` if `107=262` is included in request.
Chart Data Requests
Available only in FIX sessions with `372=V` set.
Tag `263` values for Chart Data:
- 4 = TIME_AND_SALES_DATA_BATCH (multi-day + session)
- 5 = TIME_AND_SALES_CONTRACT (single day, no session span)
Additional fields:
- `3200` = Start Date (UTCDateOnly)
- `3201` = End Date
- `3202`, `3203` = Session Time span (UTCTimeOnly)
- `3204` = ChartType (0=Tick, 1=Sec, 2=Min, etc.)
- `3205` = DataFormat (U, T, Z)
Message Dictionary
Tag | Field Name | Req’d | Description |
---|---|---|---|
Standard Header | Y | MsgType = V | |
262 | MDReqID | Y | MarketData Request ID |
263 | SubscriptionRequestType | Y | 0 = Snapshot, 1 = Subscribe, 2 = Unsubscribe, 4/5 = Chart |
264 | MarketDepth | Y | 1 = Top of book, 10 = Full depth |
265 | MDUpdateType | N | Throughput mode |
267 | NoMDEntryTypes | Y | Repeating Group |
269 | MDEntryType | Y | 0=Bid, 1=Offer, 2=Trade, 4=LastTrade, 5=Volume |
146 | NoRelatedSym | Y | Repeating Group |
55 | Symbol | Y | Contract Symbol |
48 | SecurityID | Y | T4 Market ID |
167 | SecurityType | Y | FUT, OPT, STK, etc. |
207 | SecurityExchange | Y | Exchange ID |
107 | SecurityDesc | N | If 107=262, match by MDReqID |
1070 | QuoteType | N | 1 = Ticks, 2 = Decimal |
3200 | StartDate | N | UTCDateOnly (for chart) |
3201 | EndDate | N | UTCDateOnly (for chart) |
3202 | SessionStartTime | N | UTCTimeOnly |
3203 | SessionEndTime | N | UTCTimeOnly |
3204 | ChartType | N | 0=Tick, 1=Sec, 2=Min, 3=Hour, 4=Day |
3205 | DataFormat | N | U = Uncompressed, T = Text, Z = Compressed |
Standard Trailer | Y |
Sample Messages
Subscribe to streaming data from a specific market
>> 10/10/2012 9:37:58 AM [FIXMARKETDATAREQUEST] 34=1891|49=T4Example|56=T4|52=20121010-14:37:58.720|262=md-10/10/2012 9:37:58 AM|263=1|264=10|265=5|1070=1|267=3|269=0|269=1|269=2|146=1|55=ES|48=CME_20121200_ESZ2|167=FUT|207=CME_Eq| [FIXMARKETDATAREQUEST] [MsgSeqNum] 34 = 1891 [SenderCompID] 49 = T4Example [TargetCompID] 56 = T4 [SendingTime] 52 = 20121010-14:37:58.720 [MDReqID] 262 = md-10/10/2012 9:37:58 AM [SubscriptionRequestType] 263 = 1 (SNAPSHOT_PLUS_UPDATES) [MarketDepth] 264 = 10 [MDUpdateType] 265 = 5 (SMART) [NoMDEntryTypes] 267 = 3 [MDEntryType] 269 = 0 (BID) [MDEntryType] 269 = 1 (OFFER) [MDEntryType] 269 = 2 (IMPLIED_BID) [NoRelatedSym] 146 = 1 [Symbol] 55 = ES [SecurityID] 48 = CME_20121200_ESZ2 [SecurityType] 167 = FUT (FUTURE) [SecurityExchange] 207 = CME_Eq
UnSubscribe from a currently streaming market
>> 10/10/2012 9:37:59 AM [FIXMARKETDATAREQUEST] 34=1892|49=T4Example|56=T4|52=20121010-14:37:59.765|262=md-10/10/2012 9:37:59 AM|263=2|264=10|265=5|1070=1|267=3|269=0|269=1|269=2|146=1|55=ES|48=CME_20121200_ESZ2|167=FUT|207=CME_Eq| [FIXMARKETDATAREQUEST] [MsgSeqNum] 34 = 1892 [SenderCompID] 49 = T4Example [TargetCompID] 56 = T4 [SendingTime] 52 = 20121010-14:37:59.765 [MDReqID] 262 = md-10/10/2012 9:37:59 AM [SubscriptionRequestType] 263 = 2 (DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST) [MarketDepth] 264 = 10 [MDUpdateType] 265 = 5 (SMART) [NoMDEntryTypes] 267 = 3 [MDEntryType] 269 = 0 (BID) [MDEntryType] 269 = 1 (OFFER) [MDEntryType] 269 = 2 (IMPLIED_BID) [NoRelatedSym] 146 = 1 [Symbol] 55 = ES [SecurityID] 48 = CME_20121200_ESZ2 [SecurityType] 167 = FUT (FUTURE) [SecurityExchange] 207 = CME_Eq
Chart Data Request (Uncompressed 1-minute bar for 10 minutes over 2 days)
>> 6/26/2013 6:40:01 PM [FIXMARKETDATAREQUEST] 34=3|49=T4Example|56=T4|52=20130626-23:40:01.294|262=mdc-6/26/2013 6:40:01 PM|263=4|264=1|265=5|1070=1|267=0|146=1|55=ZC|48=LVCME_20121200_ZCZ2|167=FUT|207=LVCME_C|3200=20121212|3201=20121213|3202=09:00:00|3203=09:10:00|3204=2|3205=U| [FIXMARKETDATAREQUEST] [MsgSeqNum] 34 = 3 [SenderCompID] 49 = T4Example [TargetCompID] 56 = T4 [SendingTime] 52 = 20130626-23:40:01.294 [MDReqID] 262 = mdc-6/26/2013 6:40:01 PM [SubscriptionRequestType] 263 = 4 (TIMEANDSALES_DATA_BATCH) [MarketDepth] 264 = 1 [MDUpdateType] 265 = 5 (SMART) [NoMDEntryTypes] 267 = 0 [NoRelatedSym] 146 = 1 [Symbol] 55 = ZC [SecurityID] 48 = LVCME_20121200_ZCZ2 [SecurityType] 167 = FUT (FUTURE) [SecurityExchange] 207 = LVCME_C [TradeDateStart] 3200 = 20121212 [TradeDateEnd] 3201 = 20121213 [SessionStartTime] 3202 = 09:00:00 [SessionEndTime] 3203 = 09:10:00 [ChartType] 3204 = 2 (MINUTE) [DataFormat] 3205 = U (UNCOMPRESSED)
Chart Data Response
<< 06/26/2013 06:40:01.528 PM [fixmarketdatasnapshot] 34=3|49=T4|56=T4Example|50=T4FIX|52=20130626-23:40:01.528|262=mdc-6/26/2013 6:40:01 PM-0|55=ZC|48=LVCME_20121200_ZCZ2|207=LVCME_C|965=16|3200=20121212|3201=20121213|3202=09:00:00.000|3203=09:10:00.000|3204=2|3205=2|268=2|269=Y|75=20121213|3210=15|3212=6|3211=20121213|3212=3|3213=20121212-22:59:30.004|3214=6|3212=3|3213=20121212-23:00:00.167|3214=2|3212=0|3280=25|3281=0|3208=MC|3209=12.5|3212=11|3225=20121213-07:09:06.379|3226=2342|3212=12|3222=20121213-07:09:06.379|3223=2445|3212=12|3222=20121213-14:30:52.193|3223=2147|3212=5|3254=20121213-15:05:00.000|3255=20121213-15:05:03.121|3256=72100|3257=72100|3258=72100|3259=72100|3260=1|3261=1|3262=0|3263=1|3264=1|3265=0|3212=3|3213=20121213-20:00:00.002|3214=7|3212=4|3216=20121213-20:15:06.096|3217=71225|3212=10|3219=20121213-20:15:06.096|3220=712.25|3212=3|3213=20121213-20:30:00.020|3214=1|3212=3|3213=20121213-22:00:00.014|3214=5|3212=3|3213=20121213-22:45:00.038|3214=1|3212=5|3254=20121213-15:06:00.000|3255=20121213-15:06:58.047|3256=72175|3257=72175|3258=72175|3259=72175|3260=4|3261=0|3262=4|3263=4|3264=0|3265=4|269=Y|75=20121212|3210=22|3212=6|3211=20121212|3212=3|3213=20121211-22:59:30.004|3214=6|3212=3|3213=20121211-23:00:00.035|3214=2|3212=0|3280=25|3281=0|3208=MC|3209=12.5|3212=11|3225=20121212-07:09:17.816|3226=3072|3212=12|3222=20121212-07:09:17.816|3223=3912|3212=3|3213=20121212-12:32:26.754|3214=0|3212=3|3213=20121212-12:37:11.707|3214=2|3212=3|3213=20121212-14:15:46.901|3214=0|3212=3|3213=20121212-14:26:11.089|3214=2|3212=5|3254=20121212-15:00:00.000|3255=20121212-15:00:58.211|3256=72375|3257=72400|3258=72375|3259=72400|3260=4|3261=0|3262=4|3263=4|3264=0|3265=4|3212=5|3254=20121212-15:01:00.000|3255=20121212-15:01:53.910|3256=72375|3257=72375|3258=72375|3259=72375|3260=32|3261=0|3262=32|3263=25|3264=0|3265=25|3212=5|3254=20121212-15:03:00.000|3255=20121212-15:03:59.071|3256=72400|3257=72425|3258=72400|3259=72425|3260=2|3261=0|3262=2|3263=2|3264=0|3265=2|3212=3|3213=20121212-15:33:00.451|3214=0|3212=3|3213=20121212-15:36:51.107|3214=2|3212=3|3213=20121212-20:00:00.002|3214=7|3212=4|3216=20121212-20:15:05.373|3217=72100|3212=10|3219=20121212-20:15:05.373|3220=72100|3212=3|3213=20121212-20:30:00.017|3214=1|3212=3|3213=20121212-22:00:00.015|3214=5|3212=3|3213=20121212-22:45:00.041|3214=1|3212=5|3254=20121212-15:09:00.000|3255=20121212-15:09:58.192|3256=72425|3257=72425|3258=72425|3259=72425|3260=10|3261=10|3262=0|3263=6|3264=6|3265=0| [FIXMARKETDATASNAPSHOT] [MsgSeqNum] 34 = 3 [SenderCompID] 49 = T4 [TargetCompID] 56 = T4Example [SenderSubID] 50 = T4FIX [SendingTime] 52 = 20130626-23:40:01.528 [MDReqID] 262 = mdc-6/26/2013 6:40:01 PM-0 [Symbol] 55 = ZC [SecurityID] 48 = LVCME_20121200_ZCZ2 [SecurityExchange] 207 = LVCME_C [SecurityStatus] 965 = 16 (SUCCESS) [TradeDateStart] 3200 = 20121212 [TradeDateEnd] 3201 = 20121213 [SessionStartTime] 3202 = 09:00:00.000 [SessionEndTime] 3203 = 09:10:00.000 [ChartType] 3204 = 2 (MINUTE) [DataFormat] 3205 = 2 (T4BIN) [NoMDEntries] 268 = 2 [MDEntryType] 269 = Y (CHART_DATA_BATCH) [TradeDate] 75 = 20121213 [NoChartDatas] 3210 = 15 [Change] 3212 = 6 (TRADE_DATE) [TradeDate] 3211 = 20121213 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-22:59:30.004 [MarketMode] 3214 = 6 (SUSPENDED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-23:00:00.167 [MarketMode] 3214 = 2 (OPEN) [Change] 3212 = 0 (NONE) [MinPriceIncrement] 3280 = 25 [Decimals] 3281 = 0 [PriceCode] 3208 = MC [TickValue] 3209 = 12.5 [Change] 3212 = 11 (CLEARED_VOLUME) [ClearedVolumeTime] 3225 = 20121213-07:09:06.379 [ClearedVolume] 3226 = 2342 [Change] 3212 = 12 (OPEN_INTEREST) [OpenInterestTime] 3222 = 20121213-07:09:06.379 [OpenInterest] 3223 = 2445 [Change] 3212 = 12 (OPEN_INTEREST) [OpenInterestTime] 3222 = 20121213-14:30:52.193 [OpenInterest] 3223 = 2147 [Change] 3212 = 5 (TRADE_BAR) [BarStartTime] 3254 = 20121213-15:05:00.000 [BarCloseTime] 3255 = 20121213-15:05:03.121 [BarOpenPrice] 3256 = 72100 [BarHighPrice] 3257 = 72100 [BarLowPrice] 3258 = 72100 [BarClosePrice] 3259 = 72100 [BarVolume] 3260 = 1 [BarBidVolume] 3261 = 1 [BarOfferVolume] 3262 = 0 [BarTradeCount] 3263 = 1 [BarTradesAtBid] 3264 = 1 [BarTradesAtOffer] 3265 = 0 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121213-20:00:00.002 [MarketMode] 3214 = 7 (HALTED) [Change] 3212 = 4 (SETTLEMENT) [SettlementTime] 3216 = 20121213-20:15:06.096 [Settlement] 3217 = 71225 [Change] 3212 = 10 (HELD_SETTLEMENT) [HeldSettlementTime] 3219 = 20121213-20:15:06.096 [HeldSettlement] 3220 = 71225 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121213-20:30:00.020 [MarketMode] 3214 = 1 (PRE_OPEN) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121213-22:00:00.014 [MarketMode] 3214 = 5 (CLOSED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121213-22:45:00.038 [MarketMode] 3214 = 1 (PRE_OPEN) [Change] 3212 = 5 (TRADE_BAR) [BarStartTime] 3254 = 20121213-15:06:00.000 [BarCloseTime] 3255 = 20121213-15:06:58.047 [BarOpenPrice] 3256 = 72175 [BarHighPrice] 3257 = 72175 [BarLowPrice] 3258 = 72175 [BarClosePrice] 3259 = 72175 [BarVolume] 3260 = 4 [BarBidVolume] 3261 = 0 [BarOfferVolume] 3262 = 4 [BarTradeCount] 3263 = 4 [BarTradesAtBid] 3264 = 0 [BarTradesAtOffer] 3265 = 4 [MDEntryType] 269 = Y (CHART_DATA_BATCH) [TradeDate] 75 = 20121212 [NoChartDatas] 3210 = 22 [Change] 3212 = 6 (TRADE_DATE) [TradeDate] 3211 = 20121212 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121211-22:59:30.004 [MarketMode] 3214 = 6 (SUSPENDED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121211-23:00:00.035 [MarketMode] 3214 = 2 (OPEN) [Change] 3212 = 0 (NONE) [MinPriceIncrement] 3280 = 25 [Decimals] 3281 = 0 [PriceCode] 3208 = MC [TickValue] 3209 = 12.5 [Change] 3212 = 11 (CLEARED_VOLUME) [ClearedVolumeTime] 3225 = 20121212-07:09:17.816 [ClearedVolume] 3226 = 3072 [Change] 3212 = 12 (OPEN_INTEREST) [OpenInterestTime] 3222 = 20121212-07:09:17.816 [OpenInterest] 3223 = 3912 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-12:32:26.754 [MarketMode] 3214 = 0 (UNDEFINED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-12:37:11.707 [MarketMode] 3214 = 2 (OPEN) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-14:15:46.901 [MarketMode] 3214 = 0 (UNDEFINED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-14:26:11.089 [MarketMode] 3214 = 2 (OPEN) [Change] 3212 = 5 (TRADE_BAR) [BarStartTime] 3254 = 20121212-15:00:00.000 [BarCloseTime] 3255 = 20121212-15:00:58.211 [BarOpenPrice] 3256 = 72375 [BarHighPrice] 3257 = 72400 [BarLowPrice] 3258 = 72375 [BarClosePrice] 3259 = 72400 [BarVolume] 3260 = 4 [BarBidVolume] 3261 = 0 [BarOfferVolume] 3262 = 4 [BarTradeCount] 3263 = 4 [BarTradesAtBid] 3264 = 0 [BarTradesAtOffer] 3265 = 4 [Change] 3212 = 5 (TRADE_BAR) [BarStartTime] 3254 = 20121212-15:01:00.000 [BarCloseTime] 3255 = 20121212-15:01:53.910 [BarOpenPrice] 3256 = 72375 [BarHighPrice] 3257 = 72375 [BarLowPrice] 3258 = 72375 [BarClosePrice] 3259 = 72375 [BarVolume] 3260 = 32 [BarBidVolume] 3261 = 0 [BarOfferVolume] 3262 = 32 [BarTradeCount] 3263 = 25 [BarTradesAtBid] 3264 = 0 [BarTradesAtOffer] 3265 = 25 [Change] 3212 = 5 (TRADE_BAR) [BarStartTime] 3254 = 20121212-15:03:00.000 [BarCloseTime] 3255 = 20121212-15:03:59.071 [BarOpenPrice] 3256 = 72400 [BarHighPrice] 3257 = 72425 [BarLowPrice] 3258 = 72400 [BarClosePrice] 3259 = 72425 [BarVolume] 3260 = 2 [BarBidVolume] 3261 = 0 [BarOfferVolume] 3262 = 2 [BarTradeCount] 3263 = 2 [BarTradesAtBid] 3264 = 0 [BarTradesAtOffer] 3265 = 2 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-15:33:00.451 [MarketMode] 3214 = 0 (UNDEFINED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-15:36:51.107 [MarketMode] 3214 = 2 (OPEN) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-20:00:00.002 [MarketMode] 3214 = 7 (HALTED) [Change] 3212 = 4 (SETTLEMENT) [SettlementTime] 3216 = 20121212-20:15:05.373 [Settlement] 3217 = 72100 [Change] 3212 = 10 (HELD_SETTLEMENT) [HeldSettlementTime] 3219 = 20121212-20:15:05.373 [HeldSettlement] 3220 = 72100 [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-20:30:00.017 [MarketMode] 3214 = 1 (PRE_OPEN) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-22:00:00.015 [MarketMode] 3214 = 5 (CLOSED) [Change] 3212 = 3 (MARKET_MODE) [MarketModeTime] 3213 = 20121212-22:45:00.041 [MarketMode] 3214 = 1 (PRE_OPEN) [Change] 3212 = 5 (TRADE_BAR) [BarStartTime] 3254 = 20121212-15:09:00.000 [BarCloseTime] 3255 = 20121212-15:09:58.192 [BarOpenPrice] 3256 = 72425 [BarHighPrice] 3257 = 72425 [BarLowPrice] 3258 = 72425 [BarClosePrice] 3259 = 72425 [BarVolume] 3260 = 10 [BarBidVolume] 3261 = 10 [BarOfferVolume] 3262 = 0 [BarTradeCount] 3263 = 6 [BarTradesAtBid] 3264 = 6 [BarTradesAtOffer] 3265 = 0