feat(momentum): bool-param demo strategy + aura sweep --strategy selector
Proves the #105 generic portable member key end-to-end: a demo strategy whose params have nothing in common with the SMA-cross demo, swept by the same machinery, with a bool axis surfacing — conformant — in the member dir names. - momentum strategy: price -> Ema(length:i64) -> Sub(price-ema) -> Exposure(scale:f64) -> LongOnly(enabled:bool) -> SimBroker. Three swept params of three kinds incl. a bool; the exposure sink taps the post-gate exposure so the bool's effect is in the trace. - aura sweep gains --strategy <sma|momentum> via a pure, unit-tested parse_sweep_args (mirroring parse_real_args); default = SMA-cross, so the existing bare / --name / --trace forms are unchanged. - `aura sweep --strategy momentum --trace mom` persists 8 member dirs named e.g. ema.length-5_exposure.scale-0.5_longonly.enabled-true — the bool in the dir name, every name matching [A-Za-z0-9._-], each chartable. - ledger (docs/design/INDEX.md): the C22/#101 member-key note's sweep clause amended to the generalised portable form (MC seed{N} / walk-forward oos{ns} unchanged). Self-verified: cargo build --workspace, cargo test --workspace (all green incl. momentum_param_space_is_ema_exposure_longonly, the 8-point determinism test, the parse_sweep_args grammar test, and the momentum_sweep_trace integration test asserting 8 portable bool-bearing dirs + a chartable member), cargo clippy --workspace --all-targets -D warnings. refs #105
This commit is contained in:
@@ -1030,7 +1030,10 @@ to family runs: `aura sweep|mc|walkforward --trace <name>` persists *each member
|
||||
a nested standalone run-dir `runs/traces/<name>/<member_key>/`, reusing
|
||||
`persist_traces`/`TraceStore` verbatim (engine untouched — persistence is a
|
||||
side-effect inside each per-member closure). The `member_key` is content-derived and
|
||||
deterministic — sweep `f{fast}s{slow}`, MC `seed{N}`, walk-forward `oos{ns}` — never
|
||||
deterministic — sweep: the *varying* axes rendered as a filesystem-portable
|
||||
directory component (`<axis-name>-<value>` tokens joined by `_`, charset
|
||||
`[A-Za-z0-9._-]`, case-less values, length-capped with an FNV fallback), MC
|
||||
`seed{N}`, walk-forward `oos{ns}` — never
|
||||
a runtime ordinal, because members run in parallel under the engine's `Fn + Sync`
|
||||
HOFs, where a counter would be schedule-dependent (C1); concurrent `TraceStore::write`
|
||||
targets disjoint member dirs, so it is lock-free. Opt-in: without `--trace`,
|
||||
|
||||
Reference in New Issue
Block a user