Every chart on this tab is rebuilt from the same IQFeed Level 1 tick archive that the live scanner consumed. No mock data, no synthetic candles.
5M bars are aggregated from raw ticks using the exact same BarBuilder convention that runs in production (live/bar_builder.py): O = first tick, H = max, L = min, C = last, V = tick count.
1M bars on this tab are aggregated client-side from the same tick archive (O = first tick of minute, H = max, L = min, C = last). Same convention as the live BarBuilder.
Zone coordinates, entry, stop, and target are read straight from raw_signals.parquet — the same file the retest engine produced and the dashboard's PnL numbers are computed from.
Tick timestamps were empirically verified against wall-clock on 2026-04-28 — they are ET, not UTC despite the +00:00 suffix some files carry.
If you see a chart here with X realized R, the same X is what the retest summary aggregated. They cannot disagree because they read the same parquet.
What this CANNOT prove: that the live scanner would have actually filled at that price in real time. Tomorrow's 4 AM autostart with BUG-013 / BUG-014 fixes is the live-vs-retest parity validation.
v2 specifics: single full-height candlestick chart. Toggle between 5M context, 1M zoom, or Both. The progressive blue line traces tick-by-tick price ON the candles as playback advances, with a 24px cursor at the current playback position. The blue/red filled band is the FVG zone with explicit top/bottom labels. Entry/fill/exit markers are drawn at signal-formation, fill, and exit moments. The F5 arrow shows entry depth as a percentage into the zone.