Document the walk_forward empty-space idiom for param-free / fixed strategies #97

Closed
opened 2026-06-17 18:53:03 +02:00 by Brummel · 0 comments
Owner

Surfaced by the GER40 research deep-dive fieldtest (docs/specs/fieldtest-research-breakout-deepdive.md).

walk_forward(roller, space: Vec<ParamSpec>, F) produces WindowRun { chosen_params: Vec<Cell>, .. }. For a fixed-param OOS roll of a param-free
strategy, the fieldtest passed space = vec![] and chosen_params = vec![]. It
ran (24 windows, a correctly stitched timestamp-monotone OOS curve) — but the
result is a walk-forward with no in-sample optimization: the OOS verdict of
a strategy that was never tuned per window.

The signature gives no hint whether the empty-space form is the intended way to
express "OOS-only, no optimize", or whether WFO without per-window optimize is
even a supported use. The empty-space reading is a guess; "WFO requires a
non-empty space + per-window optimize" is an equally plausible reading the
ledger does not settle.

Recommend (ratify / document): state that empty space + empty
chosen_params is a valid fixed-strategy OOS roll, OR tighten walk_forward to
make the optimize-per-window contract explicit. Largely moot once the breakout
ships as a Composite with a real param_space() (sibling issue — the
World-consumable blueprint), after which the headline WFO demo becomes
non-degenerate; filing so the empty-space contract is settled either way.

**Surfaced by the GER40 research deep-dive fieldtest** (`docs/specs/fieldtest-research-breakout-deepdive.md`). `walk_forward(roller, space: Vec<ParamSpec>, F)` produces `WindowRun { chosen_params: Vec<Cell>, .. }`. For a fixed-param OOS roll of a **param-free** strategy, the fieldtest passed `space = vec![]` and `chosen_params = vec![]`. It ran (24 windows, a correctly stitched timestamp-monotone OOS curve) — but the result is a walk-forward with **no in-sample optimization**: the OOS verdict of a strategy that was never tuned per window. The signature gives no hint whether the empty-space form is the intended way to express "OOS-only, no optimize", or whether WFO without per-window optimize is even a supported use. The empty-space reading is a guess; "WFO requires a non-empty space + per-window optimize" is an equally plausible reading the ledger does not settle. **Recommend** (ratify / document): state that empty `space` + empty `chosen_params` is a valid fixed-strategy OOS roll, OR tighten `walk_forward` to make the optimize-per-window contract explicit. Largely moot once the breakout ships as a `Composite` with a real `param_space()` (sibling issue — the World-consumable blueprint), after which the headline WFO demo becomes non-degenerate; filing so the empty-space contract is settled either way.
Brummel added the idea label 2026-06-17 18:53:03 +02:00
Brummel added this to the GER40 breakout as a World-consumable Composite blueprint milestone 2026-06-17 18:57:43 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#97