generated from mathias/template-go-web
- prepare_hourly.py: keep O/H/L columns from M1 zips; compute per-hour hl_range=log(H/L) and ret_intrabar=log(close/open); backward-compat (falls back to 4-col output only when O/H/L present in input) - train.py build(): auto-detect extra features from parquet columns (FEAT_COLS = [ret, realized_vol] + [hl_range, ret_intrabar] if present) - 5 new tests (9 total in test_prepare_hourly); 24/24 pass Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>