Depth Replay
Depth Replay plays back a recorded Level-2 depth/trade capture in your browser — reconstructing the order book, a DOM ladder, and a full order-flow chart stack so you can study exactly how the market moved, tick by tick.
It runs entirely in your browser. The capture is read from your machine and replayed locally in WebAssembly — nothing is uploaded, and the file never leaves your computer. Open it from the Start menu → Services → Depth Replay, or go straight to alphaquick.io/replay.
This is the Level-2 (aggregated depth) view. For the full Level-3 book — individual resting orders and their accounts at each price — see Order-Log Replay.
Opening a capture
Click 📂 Open file and choose a .bin.lz4 capture. It loads locally; there is
no upload step and no server round-trip. Once loaded, the status line shows how
many events were read.
- Small/medium captures (up to ~400 MB) load in memory and scrub instantly.
- Large captures (up to ~2 GB) switch to a streaming engine that indexes the file first — a centered "Indexing large capture… NN%" progress bar appears while it works, and the page stays responsive throughout.
What you see
DOM ladder — asks over bids around a spread divider, each level showing its
resting size and a right-anchored volume histogram, with a brief flash on levels
that just traded (the flash shows in the ungrouped 1× view, where a row maps to
an exact price). The levels buttons (12 / 16 / 24 / 40) change how deep it
shows; the group buttons (1× up to 1000×) squeeze adjacent ticks into
coarser price buckets, aggregating the size per bucket so depth clusters stand
out (the spread label always shows the true, ungrouped spread).
Time & Sales — the trade tape in the left panel: each print as
time · ▲/▼ · price · size, coloured by aggressor, with a running
buy / sell / Δ readout above it.
Order-flow charts, sharing one time axis:
- Price & BBO — best bid, best ask, and mid, sampled on every completed book snapshot.
- VWAP — session volume-weighted average price.
- CVD — cumulative volume delta (buy volume minus sell volume), the running measure of aggressor pressure.
- Trade prints — every trade as a dot, coloured by aggressor (buy/sell) and sized by trade volume, so sweeps and blocks stand out.
- Resting liquidity — total depth on each side over time.
Trade aggressor side comes from the feed when the capture carries it (the ground truth even when a trade sweeps several levels); otherwise it is inferred from the trade price against the book at that instant.
Controls
- ▶ Play / ⏸ Pause and ⏮ Restart.
- Speed — 0.5× up to 25× real time.
- Scrubber — jump to any point; the book and every chart are reconstructed for that moment.
- 🔴 Live — auto-follow the playhead (toggle off to pan/zoom the charts freely; double-click a chart to re-follow).
- levels / group — DOM depth and the price-bucket squeeze (see the DOM ladder above).
The capture format
Depth Replay reads the FastStorage .bin.lz4 depth/trade format produced by
AlphaQuick's data recorder: LZ4-compressed blocks of compact depth updates and
trade prints. The same recording that drives the Edge Feed
and a backtest can be replayed here, so the book you see is reconstructed with the
same semantics as the live tools.
Any venue the recorder captures works — for example
BTCUSDT_BINANCE_USDM_20260819.bin.lz4 (Binance USDM) or a Hyperliquid node
capture (BTC_HL_NODE_*.bin.lz4). Feeds that publish only an interval VWAP
(no aggressor side) are handled honestly: those prints are counted toward volume
but shown as neutral (never coloured buy/sell), and CVD is left undefined
rather than inventing a side.
How it works
The replay engine is written in Rust and compiled to WebAssembly, so all decoding, book reconstruction, order-flow folding, and rendering happen on your device:
- For files that fit comfortably, every event is decoded into memory for instant random access while scrubbing.
- For large files, a streaming/windowed engine decodes blocks on demand and keeps only the visible chart window in memory, with periodic checkpoints so it can seek without replaying from the start. This is what lets multi-hundred-MB captures open in a browser at all.
Because it is fully client-side, your captures stay private — useful for reviewing proprietary recordings without handing them to a server.
Limits & tips
- Size — up to ~2 GB per file (the browser's working-memory ceiling). Very large captures are best trimmed to a shorter time window first.
- The book at the very start — the ladder is built purely from depth updates,
so if a capture opens with a few trade prints before its first order-book
snapshot, the DOM briefly reads "(book empty at this time)" at
t=0. Press ▶ (or nudge the scrubber) and it fills in the moment the first snapshot lands — this is faithful to the recording, not a missing book. - Indexing pause — a large file spends a few seconds indexing before it plays; this is one-time and shows a progress %.
- Scrubbing large files — forward playback is smooth, but seeking backward in a streamed capture re-decodes the recent window, so it can pause briefly. If you scrub a section repeatedly, a shorter capture will feel snappier.
- Browser — use an up-to-date desktop browser; a 64-bit browser with plenty of free memory handles the largest files best.