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: top panel is the 5M context candlestick. Bottom panel is the full undecimated tick walk (or 1M candles in 1M / Both modes). X-axes are linked. 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.