AMMDocumentationWebsite ↗
how to · 4 min read

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.

Application screenshotOpen original ↗