Available Market Data
Instrument Reference Data: Symbols and metadata, trading state and limits, contract specifications, expiration dates Order Book Data: Aggregated order book depth, best bid and offer (BBO), multiple price levels Trading State: Market status (open, closed, halted), trading hours, circuit breakersLive Market Data Delivery
Market data is delivered via the Market Data Subscription API over long-lived HTTP connections. Key characteristics: Server pushes updates over persistent connection; snapshot-style updates (each message is complete); treat each message as a full update unless documentation specifies delta semantics; no WebSockets (uses HTTP streaming).Order Books
Are order books aggregated? Yes. REST order book endpoints return aggregated depth only. Multiple orders at the same price level are combined; individual order IDs are not visible in market data; only aggregate quantity is shown per price level. Price levels available: Multiple levels of depth (configurable), best bid/offer always included, deeper book available with appropriate scopes.Price and Quantity Encoding
Are prices and quantities floating point? No. All prices and quantities are integer-encoded strings. Example:Trade Tape
Is there a public trade tape? No. Trades are not disseminated via market data APIs. You can only see your own trades via Reporting APIs and your own executions via Order subscriptions.Market Data Scopes
Basic market data (read:marketdata): Best bid/offer, top-of-book snapshots, basic instrument data
Level 2 market data (read:l2marketdata): Full order book depth, multiple price levels, aggregate depth
Reference data (read:instruments): Instrument listings, metadata and specifications, trading schedules
Subscribing to Market Data
Use the Market Data Subscription API to receive updates:Update Frequency
Market data updates are sent on every change to the order book, at regular intervals (even if no changes), and as snapshots (full book, not deltas).Best Practices
Cache reference data: Instrument metadata changes infrequently. Cache it locally and refresh periodically (every 5-15 minutes). Use streaming for real-time data: Don’t poll market data endpoints repeatedly. Use the subscription API for live updates. Handle reconnections: Streaming connections can drop. Implement automatic reconnection with exponential backoff. Process snapshots correctly: Each market data message is a complete snapshot. Replace your local book state with each update.Troubleshooting
Market data seems stale Check:- Is your subscription still active?
- Has the connection dropped?
- Is the market actually open?
- Do you have the
read:l2marketdatascope? - Are you requesting depth parameter correctly?
- Is there actually liquidity at those levels?

