26 rolling folds per TF (train 12mo / test 3mo / step 3mo) over
2019-01-01→2026-08-07 on fresh Oanda history (5 parquets, sha256s in
manifest). Aggregated OOS: M5 +126.5R PF 1.35 (11/26 folds flagged),
M15 +139.2R PF 1.18 (9/26), H1 +33.3R PF 1.15 (13/26), H4 +33.3R
PF 1.52 (9/26). Flagged folds cluster 2020H2–2023; 2023-10+ nearly
uniformly positive — corroborates the "earns mainly 2024+" re-pin
finding. Robustness read only: NOT a new baseline, nothing tuned.
Runs captured at 1c264d5 + the walk-forward diff (recorded as
dirty + diff sha256 in manifest.json); compare_baseline passed 32/32
immediately before the runs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017FBjfomAipxvPWwRJEDDyJ
Walk-forward exam — commit 1c264d5 (+ uncommitted walk-forward feature)
Rolling-fold out-of-sample evaluation of backtest/gpu_backtest.py --walk-forward for XAU/USD, window 2019-01-01 → 2026-08-07, all 4
primary TFs at $0.65 round-trip spread, train 12mo / test 3mo / step 3mo
(26 folds per TF). One continuous replay per TF with the fixed HEAD
config — folds are slices of the book by entry time, no per-fold
re-optimization. News off (backtester default).
Captured 2026-08-07. The working tree at capture was commit 1c264d5
plus the then-uncommitted walk-forward implementation (gpu_backtest.py,
test_all.py Module 23, CLAUDE.md); manifest.json records dirty: true
and the sha256 of git diff at capture. scripts/compare_baseline.py
passed 32/32 against baseline/da61cff with this exact tree immediately
before these runs — the feature leaves default (non-walk-forward) books
byte-identical, and the 2019→2026 data fetch touched no pinned parquet.
Per run dir: trades.csv (full book incl. train-period trades),
summary.txt (backtester stdout — full report + the walk-forward fold
table and aggregated OOS stats), equity.csv + metrics.json (derived
from the book via scripts/baseline_common.py; these cover the WHOLE
window, not just OOS). run.log is stderr, provenance only.
manifest.json records the exact argv/command per run, sha256 of every
input parquet (the five 2019→present files, also in
backtest/cache/data_manifest.json) and every output file, backend, and
the walk-forward parameters.
Headline aggregated OOS (union of test folds, each trade once, 2020-01-01 → 2026-07-01):
| TF | OOS trades | Total R | exp/trade | PF | Max DD (R) | folds PF<1 |
|---|---|---|---|---|---|---|
| M5 | 991 | +126.54 | +0.128 | 1.35 | 19.16 | 11 / 26 |
| M15 | 2001 | +139.15 | +0.070 | 1.18 | 55.06 | 9 / 26 |
| H1 | 638 | +33.28 | +0.052 | 1.15 | 23.84 | 13 / 26 |
| H4 | 188 | +33.31 | +0.177 | 1.52 | 5.66 | 9 / 26 |
Flagged folds cluster in 2020H2–2023 on every TF; from fold ~16 (test 2023-10) onward the test folds are almost uniformly positive. Consistent with the 2026-08-04 Oanda re-pin finding that all TFs earn mainly 2024+. These runs are an OOS robustness read on the shipped config over deep history — NOT a new baseline and NOT a rule-1 validation event (window, cost and provider differ from the pinned books; nothing was tuned here).