This is an old revision of the document!
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 delivered asynchronously and concurrently with order routing flow during a FIX Session.
Market data subscriptions are initiated by Market Data Request messages (Tag 35=V). Securities are identified by:
- Exchange (Tag 207 - SecurityExchange)
- Contract (Tag 55 - Symbol)
- Market (Tag 48 - SecurityID)
Subscriptions can be started anytime during the FIX Session with Subscription Request Type (Tag 263=1), and unsubscribed with Tag 263=2.
A successful Market Data Request returns Market Data messages:
- MarketData Snapshot (Tag 35=W)
- MarketData Incremental Refresh (Tag 35=X)
Each Market Data Entry represents bid, offer, trade, settlement price, session high/low, trade volume, open interest, or price limits. Full book or top-of-book subscriptions are available.
Market Data Incremental Refresh messages update specific book levels incrementally.
Requests that cannot be fulfilled result in a MarketData Request Reject message.
Subscription Types
_Type_ | _Tag 263 Value_ | _Description_ |
—————– | —————– | ————————————————- |
Subscribe | 1 | Snapshot + Updates: full feed until unsubscribed |
UnSubscribe | 2 | Cancel existing subscription |
SnapShot | 0 | Snapshot only (equivalent to 1 currently) |
Subscribe Incremental | 7 | Snapshot + Incremental Updates |
Data Throughput and Buffering Levels
T4 FIX API offers various buffering levels controlling throughput and bandwidth:
_Level_ | _Description_ |
————- | ———————————————————————————————- |
SlowTrade | SlowSmart + every trade; high bandwidth, use sparingly |
SmartTrade | Smart + every trade; high bandwidth, use sparingly |
SlowSmart | Slowed Smart buffering; ~1 update per second if changes occur |
Smart | Recommended; varies frequency based on changes to best bid/offer/last trade |
FastSmart | Faster than Smart; more frequent updates on best bid/offer |
All | No buffering; all depth updates sent; high bandwidth |
FastTrade | FastSmart + every trade; high bandwidth |
TradeOnly | Only individual trades; no depth or limits |
Book Depth
MarketDepth (Tag 264) controls the number of book levels requested, max 10. - Level 1: Top of Book - Level 10: Full Book If the security does not support 10 levels, the maximum supported is returned.
Matching Market Data Messages
Market Data messages can be matched by: - SecurityID (Tag 48) (default) - MDReqID (Tag 262) if SecurityDesc (Tag 107) is set to 262 (SecurityID omitted in this case)
Chart Data Requests
Chart (Time-and-Sales) Data requests are available for historical graph construction.
- Requires FIX Session with Enable Chart Data Requests (Tag 372=V) - Session auto-logs out if no Chart Data request within 60 seconds - Requests via Market Data Request (Tag 35=V) with SubscriptionRequestType (Tag 263):
_Type_ | _Tag 263 Value_ | _Description_ |
————————- | —————– | —————————————– |
TIME_AND_SALES_DATA_BATCH | 4 | Multiple days, customizable session time (recommended) |
TIME_AND_SALES_CONTRACT | 5 | Single day, all markets for a contract, total traded volume only |
Chart Data requests may specify: - TradeDateStart (Tag 3200) and TradeDateEnd (Tag 3201) - SessionStartTime (Tag 3202) and SessionEndTime (Tag 3203) - ChartType (Tag 3204) (granularity) - DataFormat (Tag 3205) for compression (U=Uncompressed, T=Compressed with Deflate, Z=Compressed with ZLib)
Responses are MarketData Snapshot messages (Tag 35=W).
Message Dictionary
Tag | Field Name | Req'd | Comments |
——- | ———————— | ——- | ————————————————————————————— |
Standard Header | Y | MsgType = V | |
262 | MDReqID | Y | Unique ID. Needed for unsubscribe |
263 | SubscriptionRequestType | Y | Subscription type (see table above) |
264 | MarketDepth | Y | Requested market depth (max 10) |
265 | MDUpdateType | N | Market data throughput buffer level (see buffering levels above) |
267 | NoMDEntryTypes | Y | Number of Market Data Entry Types requested |
269 | MDEntryType | Y | Market data entry types requested (e.g., 0=Bid, 1=Offer, 4=Last Trade, etc.) |
146 | NoRelatedSym | Y | Number of requested symbols (repeating group) |
55 | Symbol | Y | Contract ID |
48 | SecurityID | Y | Market ID |
167 | SecurityType | Y | Instrument type (e.g. FUT, OPT, STK) |
207 | SecurityExchange | Y | Exchange ID |
201 | PutOrCall | N | Option Put/Call indicator (0=Put, 1=Call) |
107 | SecurityDesc | N | Set to 262 to identify by MDReqID |
1070 | QuoteType | N | Obsolete. Pricing scheme (ticks/decimal) |
3200 | TradeDateStart | N | Start date for Chart Data requests (UTCDateOnly) |
3201 | TradeDateEnd | N | End date for Chart Data requests |
3202 | SessionStartTime | N | Session start time (UTCTimeOnly) |
3203 | SessionEndTime | N | Session end time (UTCTimeOnly) |
3204 | ChartType | N | Chart data granularity |
3205 | DataFormat | N | Compression format for chart data |
Standard Trailer | Y |