====== 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