jgrusewski
33ce35bdeb
feat: walk-forward out-of-sample smoke tests + best_sharpe in metrics
Walk-forward validation tests:
- test_walk_forward_oos_metrics: 10 epochs, asserts finite OOS Sharpe,
non-zero val_loss (validation backtest ran), positive gradient norm
- test_walk_forward_no_overfitting_50_epochs: 50 epochs, asserts val_loss
doesn't catastrophically worsen (> -100), model retains generalization
Metrics additions:
- best_sharpe, best_val_loss, best_epoch added to TrainingMetrics
(were on trainer struct but not returned to callers)
Defensive NaN guard restored in loss kernels:
- fast_isfinite check on per-sample weighted_loss
- Remaining NaN source: bf16 reward storage in replay buffer (TODO: convert
reward path to float at boundary, same pattern as experience features)
- Guard clearly documented as temporary with TODO
Results: 895/895 unit + 11/11 smoke tests (9 original + 2 walk-forward).
Walk-forward 10ep: best_sharpe=5.32, best_val_loss=-0.45 (positive OOS Sharpe).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 01:28:12 +01:00
..
2026-03-13 10:18:35 +01:00
2026-03-27 19:52:44 +01:00
2026-03-12 19:10:18 +01:00
2026-03-14 11:35:15 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-29 01:28:12 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-28 12:13:45 +01:00
2026-03-13 10:18:35 +01:00
2026-03-29 00:42:06 +01:00
2026-03-28 01:51:45 +01:00
2026-03-28 01:51:45 +01:00
2026-03-15 11:59:31 +01:00
2026-03-27 00:33:05 +01:00
2026-03-19 00:39:03 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-28 13:11:47 +01:00
2026-03-16 21:01:28 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-10 13:18:57 +01:00
2026-03-28 01:51:45 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-13 10:18:35 +01:00
2026-03-18 00:53:47 +01:00
2026-03-14 11:35:15 +01:00
2026-03-15 11:59:31 +01:00
2026-03-03 22:16:35 +01:00