faq:marketdata_request

This is an old revision of the document!


MarketData Request

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.

_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

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

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.

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 (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).

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

Subscribe to Streaming Data from a Specific Market

[FIXMARKETDATAREQUEST]
34=1891
49=T4Example
56=T4
52=20121010-14:37:58.720
262=md-10/10/2012 9:37:58 AM          # Unique Market Data Request ID
263=1                                # SubscriptionRequestType = Subscribe (Snapshot + Updates)
264=10                               # MarketDepth = 10 levels (full book)
265=5                                # MDUpdateType = Smart buffering
1070=1                              # QuoteType (decimal pricing)
267=3                                # NoMDEntryTypes = 3 entry types requested
269=0                                # MDEntryType = Bid
269=1                                # MDEntryType = Offer
269=2                                # MDEntryType = Implied Bid
146=1                               # NoRelatedSym = 1 instrument requested
55=ES                               # Symbol (Contract ID)
48=CME_20121200_ESZ2                # SecurityID (Market ID)
167=FUT                             # SecurityType = Future
207=CME_Eq                         # SecurityExchange (Exchange ID)


Unsubscribe from a Currently Streaming Market

[FIXMARKETDATAREQUEST]
34=1892
49=T4Example
56=T4
52=20121010-14:37:59.765
262=md-10/10/2012 9:37:59 AM          # Same or new MDReqID for unsubscribe
263=2                                # SubscriptionRequestType = Unsubscribe (stop streaming)
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


Chart Data Request (Uncompressed 1-minute Bar for 10 minutes over 2 days)

[FIXMARKETDATAREQUEST]
34=3
49=T4Example
56=T4
52=20130626-23:40:01.294
262=mdc-6/26/2013 6:40:01 PM         # Unique ID for Chart Data Request
263=4                               # SubscriptionRequestType = TIMEANDSALES_DATA_BATCH (multi-day chart data)
264=1                               # MarketDepth = 1 level (for chart data, usually 1)
265=5                               # MDUpdateType = Smart buffering
1070=1
267=0                               # NoMDEntryTypes (not required for chart data)
146=1
55=ZC
48=LVCME_20121200_ZCZ2
167=FUT
207=LVCME_C
3200=20121212                      # TradeDateStart (YYYYMMDD)
3201=20121213                      # TradeDateEnd (YYYYMMDD)
3202=09:00:00                     # SessionStartTime (HH:MM:SS, CST)
3203=09:10:00                     # SessionEndTime (HH:MM:SS, CST)
3204=2                            # ChartType = Minute bars
3205=U                            # DataFormat = Uncompressed


Chart Data Response (Excerpt)

[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       # Response referencing the request ID
55=ZC
48=LVCME_20121200_ZCZ2
207=LVCME_C
965=16                              # Success status code
3200=20121212                      # TradeDateStart
3201=20121213                      # TradeDateEnd
3202=09:00:00.000                  # SessionStartTime
3203=09:10:00.000                  # SessionEndTime
3204=2                            # ChartType (Minute)
3205=2                            # DataFormat (compressed T4 binary)
268=2                            # Number of Market Data Entries (NoMDEntries)

269=Y                            # MDEntryType = CHART_DATA_BATCH (chart data block)
75=20121213                      # TradeDate for this batch
3210=15                          # NoChartDatas (number of data points)
...                             # Followed by trade bars, market modes, settlements, and other fields
  • faq/marketdata_request.1753470677.txt.gz
  • Last modified: 2025/07/25 19:11
  • by rob