Skip to content
das/replay
Methodology

The desk, from the inside.

The replay is built on eight invariants, real tick-level historical data, a scanner-day clock that reveals alerts on their real triggers, and a deterministic execution layer with per-fill diagnostics. Below is each piece, named.

The tape

Real history, sourced precisely.

Every claim the desk makes about realism rests on the tape. No painted candles, no model-generated prints, no inferred NBBO.

Tape

Tick-level historical: NBBO with bid/ask sizes and exchange routing; trade prints with full condition codes.

Coverage

US equities across NASDAQ, NYSE, ARCA, AMEX, BATS. Scanner universe ~12,000 symbols.

Hours

04:00 – 20:00 ET. Pre-market, regular, post-market — all on one timeline.

Quote filter

Drops manual, stale, crossed, and condition-flagged quotes (A, B, H, O, W, C, L, 4, 5, 6, 7, 9) so fills never evaluate against bad NBBO.

Fundamentals

Shares outstanding as of replay date, sourced from SEC filings with confidence scoring. Splits, dividends, and spinoffs applied.

RVOL

Relative volume vs. 30-day same-time-of-day average, 5-minute buckets, cached in Postgres.

The scanners

Two scanners. Real triggers.

The same scanners you'd have been running live, replayed against the same tape, surfaced on the same clock.

Top Leading Gainers

The day's biggest pre-market and intraday movers, ranked. The names that were on every trader's screen. Ranked by the same logic that ranked them live, refreshed on the same cadence.

High-of-Day Momentum

HOD breakouts as they happened — prior HOD, breakout price, breakout volume, percent move. The single most-watched intraday momentum signal, surfaced live as it triggered.

The scanner-day clock

Each hit carries its exact trigger_ts from the live tape. As the replay clock advances, alerts reveal progressively — never ahead, never behind. Click an alert to jump the desk to that ticker at trigger_ts − 10s so you see the setup, not just the print.

A badge counts alerts that fired while you were engaged on another name. Session-window classification (premarket / regular / all) lets you drill into a single window.

The fill engine

A matching engine, not a chart marker.

This is the part chart-replay tools cannot do.

Latency profiles

Retail

180 ms ±40

Approximates a consumer brokerage round-trip.

Direct-access

120 ms ±25

Mid-tier prop / direct-access desk.

Colo-pro

30 ms ±10

Colocated, professional.

Custom

ms —

Set the mean and standard deviation per session.

Every submission draws a fresh latency from a seeded PRNG. Cancels draw their own. Fill vs. cancel races resolve in tick order.

Order lifecycle

  1. pending_latency
  2. working
  3. partial_filled
  4. filled
  5. cancelled
  6. rejected

Mechanics

  • Marketable fills: limit ≥ ask, ~97% immediate fill rate, walks the book if size exceeds the inside.
  • Spillover: synthetic walk-the-book pricing with penny-floor (0.01) slippage attribution.
  • Resting limits: synthetic queue position behind the book, time-decay stale-skip probability, first-come-first-served.
  • Rejection paths: no NBBO, insufficient buying power, invalid size or price, sell-without-position, sub-FINRA-floor starting cash.
Per-fill diagnostics

Three NBBO snapshots. One breakdown.

Read what actually happened on the order — not what a chart says happened.

Every fill event carries the NBBO at three moments: when the order was submitted, when the engine evaluated it (post-latency), and when it filled. Plus the latency draw, fill-path classification (marketable / resting / spillover / cancelled / rejected), queue position for resting orders, and a slippage breakdown.

  • Chasing bps

    Penalty when the tape moved 20+ bps in the 2 seconds before fill.

  • Late-entry bps

    Time-decay penalty on resting orders that sat in queue while the inside moved.

  • Spillover bps

    Cost of walking the synthetic book when an order exceeded the inside size.

Sub-penny precision throughout. Sub-penny names get four decimal places, trimmed.

System invariants

Eight rules the engine never breaks.

Violating any of these breaks the desk's claim to realism. They are not toggles.

  1. 01

    All price movement originates in the real historical tape. Never painted, never synthesized.

  2. 02

    All scanner alerts fire at their real historical timestamps. Never reordered, never resampled.

  3. 03

    All timestamps come from the replay clock. Never wall-clock.

  4. 04

    The execution layer is deterministic. Same seed produces the same latency draws, queue positions, and fills.

  5. 05

    The UI never blocks the replay. The desk runs ahead of rendering.

  6. 06

    Events are append-only. Never reordered, never deleted in place.

  7. 07

    Fills evaluate against the real historical NBBO. Always.

  8. 08

    No coaching mid-session. Feedback is your fill log and the tape.