- structure.detect_opening_range_breakout: break of the first ~5 RTH bars' high
on >= OR-average volume; entry=OR high, stop=OR low. Placed first in
classify_setup so it fires minutes after the open instead of waiting for a
pullback to form. Verified: RGNT triggers at bar 6 (~9:36 ET) q=1.0.
- evaluate_setup counts OPENING_RANGE_BREAK toward the structure criterion.
- backfill_history.py: pull ~3 weeks of minute + 60d daily bars for the sub-$20
universe so learn_params optimizes over real sessions.
75/75 tests green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>