Use live depth, tape and recorded order-flow data
Discover stream capabilities, interpret DOM data and record supported L2 history with honest coverage.
Reviewed 2026-10-24 · Windows & macOS
On this page
Discover the session's data-feed capability#
Depth belongs to a session's live data feed, which can differ from the execution broker. Inspect the session's available market-data capabilities before opening a DOM or order-flow overlay. Rithmic and CQG can provide L2, market-by-order L3 and trade prints with the right permissions. Alpaca Crypto and Binance Spot provide L2 and live prints through their implemented adapters, without L3 queue identity. Ordinary L1 equity/FX feeds do not acquire depth merely because the UI has a depth panel.
A provider can deny a particular exchange or subscription level even when its general connection is healthy. Depth not available for this feed describes an unsupported capability; Permission denied describes missing entitlement. These are different from a temporarily empty or rebuilding order book. Local depth is unavailable for live sessions executed through the remote-worker depth path.
Choose a depth or tape view#
Open the chart/session's market-depth tools and enable the available view. DOM displays the current ladder and, where supported, manual order controls. Time & sales displays received prints. Order-flow overlays can include footprint, volume profile, cumulative delta and depth heatmap. They consume the available book/print stream and have different aggregation/retention rules.
A depth level is a price and current size. An L3 entry additionally identifies an individual order/queue position when the feed supplies it. An own-order marker needs a valid match to the execution account's working exchange order identifier. Matching a displayed size or price is not enough. A separate market-data-only connection can report no own orders even while your account has working orders elsewhere.
Trade aggressor can be Buy, Sell or Unknown. Unknown is a valid absence of authoritative direction; it is not automatically a neutral trade. Do not infer an exact hidden queue or market intent from a coalesced book.
Enable a stream through the API#
Use the current REST catalogue for your server and actual session ID. A minimal depth request is:
POST /api/live/session/{id}/market-depth
Content-Type: application/json
{
"enabled": true,
"levels": 20,
"tradePrints": true,
"orderFlow": true,
"marketByOrder": false
}
Read current state with GET /api/live/session/{id}/market-depth. The enable response reports supported/enabled streams. Request L3 only when the route supports it. Levels accept 1–100. A matching disable releases a consumer; repeated enables can hold multiple references, so do not continuously POST enable as a polling operation. Poll the GET instead. Normal UI panels manage their own references.
Read the actual HTTP error. market_depth_not_supported is a capability/path issue; market_depth_permission_denied is entitlement; market_by_order_not_supported means L3 was requested on an L2-only route. An enable before session startup can be provisional, so verify data after the feed binds and the session reaches Running.
Understand timing and completeness#
AMM publishes bounded snapshots and batches to keep the UI responsive. L2 and L3 are separate streams and can differ briefly from BBO. The display is throttled, and recent-print buffers are finite. A visible Time & sales table is not an exhaustive exchange audit history. High-load dropping or reconnection can remove intermediate observations; use the appropriate recorder and its coverage diagnostics for research.
A reconnect invalidates continuity. Wait for a fresh consistent snapshot/resync before interpreting a cleared ladder. Binance sequence gaps require rebuilding from an exchange snapshot. Permission errors should not leave a stale book presented as current. Check session/connection state and timestamps alongside prices.
Record supported L2 and prints#
Open Data Download › Depth Recordings. The server recorder is off by default. Configure provider/symbol pairs, number of levels and retention, then enable it. The recordable provider list is deliberately narrower than live depth: Rithmic, CQG and Alpaca Crypto. Binance live depth does not currently imply Binance .ammdepth recording support.
For example, a recording configuration can use:
{
"enabled": true,
"levels": 10,
"symbols": [{"provider": "alpaca-crypto", "symbol": "BTC/USD"}],
"retentionDays": null
}
Save through the normal UI or PUT /api/market-depth/recordings/config. This starts real market-data acquisition but submits no orders. Levels accept 1–100, up to 50 unique provider/symbol pairs. A null retention keeps files indefinitely; a configured retention policy can remove older recordings. Review that choice intentionally.
Inspect recordings before replay#
The recorder writes .ammdepth UTC day files containing L2 and available prints. Futures coverage uses the relevant exchange calendar; Alpaca Crypto uses every UTC day. These recordings do not contain L3 queue replay. Review states, file dates, coverage, drops/rejections and known gaps before backtesting.
Only one recorder owns a given data folder. A second server sharing it reports an error instead of opening another writer. A failed provider symbol can retry while other recordings continue. Unsupported providers are rejected explicitly. If recording shows an error, inspect credential/entitlement, connection state and recorder ownership instead of assuming the day file is complete.
Recorded-depth replay consumes the stored observations and its continuity information; it cannot reconstruct omitted intermediate books or lost prints. Keep a distinction between a useful exploratory overlay, replay accounting and a complete source audit. See Historical data and the Rithmic, CQG, Alpaca or Binance guide for route-specific behavior.