Per spec 2026-05-20-continuous-reasoning-trader-design.md §3.3 and §8:
decision_stride is REMOVED, not deprecated. No backwards-compat shim,
no fallback. Every consumer migrates in this commit per
feedback_no_partial_refactor.
Removed from:
- bin/fxt-backtest: RunArgs CLI flag, SweepBase field, SweepCell
override field, default_decision_stride() function, all three
BacktestHarnessConfig and RunArgs construction sites
- crates/ml-backtesting/src/harness.rs: BacktestHarnessConfig field,
MultiHorizonLoaderConfig decision_stride initializer, `let stride`
local, `if event_count % stride == 0` gate around
step_decision_with_latency; forward_step_into + step_decision now
share a single window-full guard (merged into one `if` block)
- crates/ml-alpha/src/data/loader.rs: MultiHorizonLoaderConfig field,
next_sequence stride logic simplified to stride=1 (consecutive
snapshots only)
- crates/ml-alpha/src/trainer/perception.rs: PerceptionTrainerConfig
field and Default impl; all four dt_s locals replaced with 1.0_f32
(training K-loop, graph-capture K-loop, forward_step_into CfC step,
eval K-loop)
- crates/ml-alpha/examples/alpha_train.rs: CLI flag, trainer_cfg and
both loader configs
- crates/ml/examples/alpha_baseline.rs: CLI flag, train + eval stride
gates replaced with unconditional read_all()
- config/ml/*.yaml: decision_stride: lines removed from
sweep_smoke, sweep_threshold_tuning, sweep_deployability,
sweep_decision_stride_example (file repurposed as generic example)
- tests: forward_step_golden, perception_overfit (×7 structs including
the stride=4 smoke repurposed as a second convergence check),
multi_horizon_loader (stride=4 spacing test repurposed as
ts_ns monotonicity check), ring3_replay, trainer_parity
Harness loop now invokes BOTH forward_step_into AND
step_decision_with_latency on every event whenever the snapshot window
is full. forward_step_into advances SSM state and writes alpha_probs_d;
step_decision_with_latency reads alpha_probs_d immediately after —
no CPU roundtrip, no stride gate.
n_decisions ≈ events_processed - seq_len + 1 after this commit
(vs ~9999 at stride=200 in the S2 baseline).
cargo check --workspace: clean
cargo test -p ml-backtesting --lib: 33 passed
cargo test -p ml-alpha --lib: 33 passed (6 ignored)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
164 lines
14 KiB
YAML
164 lines
14 KiB
YAML
# P6 deployability sweep — 4 windows × 140 sim_variants (7 cost × 4 latency × 5 threshold).
|
||
# Generated by scripts/generate_sweep_variants.py — do NOT hand-edit.
|
||
# Re-run after threshold-tuning to refresh threshold absolute values.
|
||
|
||
base:
|
||
data_template: /mnt/training-data/futures-baseline-mbp10/ES.FUT/ES.FUT_{window}.dbn.zst
|
||
predecoded_dir: /feature-cache/predecoded
|
||
n_parallel: 1 # batched flow overrides with variants.len()=140
|
||
latency_ns: 200000000 # default (overridden per variant)
|
||
target_annual_vol_units: 50.0
|
||
annualisation_factor: 825.0
|
||
max_lots: 5
|
||
max_events: 0
|
||
seed: 12648430
|
||
# __SHA__ replaced by submitter with post-trunk-grows training short-SHA.
|
||
checkpoint: /feature-cache/alpha-perception-runs/__SHA__/trunk_best_h6000.bin
|
||
sim_variants:
|
||
- { name: c0_l0_p60, threshold: 0.4, cost_per_lot_per_side: 0.0625, latency_ns: 100000000 }
|
||
- { name: c0_l0_p70, threshold: 0.55, cost_per_lot_per_side: 0.0625, latency_ns: 100000000 }
|
||
- { name: c0_l0_p80, threshold: 0.7, cost_per_lot_per_side: 0.0625, latency_ns: 100000000 }
|
||
- { name: c0_l0_p90, threshold: 0.85, cost_per_lot_per_side: 0.0625, latency_ns: 100000000 }
|
||
- { name: c0_l0_p95, threshold: 0.95, cost_per_lot_per_side: 0.0625, latency_ns: 100000000 }
|
||
- { name: c0_l1_p60, threshold: 0.4, cost_per_lot_per_side: 0.0625, latency_ns: 200000000 }
|
||
- { name: c0_l1_p70, threshold: 0.55, cost_per_lot_per_side: 0.0625, latency_ns: 200000000 }
|
||
- { name: c0_l1_p80, threshold: 0.7, cost_per_lot_per_side: 0.0625, latency_ns: 200000000 }
|
||
- { name: c0_l1_p90, threshold: 0.85, cost_per_lot_per_side: 0.0625, latency_ns: 200000000 }
|
||
- { name: c0_l1_p95, threshold: 0.95, cost_per_lot_per_side: 0.0625, latency_ns: 200000000 }
|
||
- { name: c0_l2_p60, threshold: 0.4, cost_per_lot_per_side: 0.0625, latency_ns: 300000000 }
|
||
- { name: c0_l2_p70, threshold: 0.55, cost_per_lot_per_side: 0.0625, latency_ns: 300000000 }
|
||
- { name: c0_l2_p80, threshold: 0.7, cost_per_lot_per_side: 0.0625, latency_ns: 300000000 }
|
||
- { name: c0_l2_p90, threshold: 0.85, cost_per_lot_per_side: 0.0625, latency_ns: 300000000 }
|
||
- { name: c0_l2_p95, threshold: 0.95, cost_per_lot_per_side: 0.0625, latency_ns: 300000000 }
|
||
- { name: c0_l3_p60, threshold: 0.4, cost_per_lot_per_side: 0.0625, latency_ns: 400000000 }
|
||
- { name: c0_l3_p70, threshold: 0.55, cost_per_lot_per_side: 0.0625, latency_ns: 400000000 }
|
||
- { name: c0_l3_p80, threshold: 0.7, cost_per_lot_per_side: 0.0625, latency_ns: 400000000 }
|
||
- { name: c0_l3_p90, threshold: 0.85, cost_per_lot_per_side: 0.0625, latency_ns: 400000000 }
|
||
- { name: c0_l3_p95, threshold: 0.95, cost_per_lot_per_side: 0.0625, latency_ns: 400000000 }
|
||
- { name: c1_l0_p60, threshold: 0.4, cost_per_lot_per_side: 0.125, latency_ns: 100000000 }
|
||
- { name: c1_l0_p70, threshold: 0.55, cost_per_lot_per_side: 0.125, latency_ns: 100000000 }
|
||
- { name: c1_l0_p80, threshold: 0.7, cost_per_lot_per_side: 0.125, latency_ns: 100000000 }
|
||
- { name: c1_l0_p90, threshold: 0.85, cost_per_lot_per_side: 0.125, latency_ns: 100000000 }
|
||
- { name: c1_l0_p95, threshold: 0.95, cost_per_lot_per_side: 0.125, latency_ns: 100000000 }
|
||
- { name: c1_l1_p60, threshold: 0.4, cost_per_lot_per_side: 0.125, latency_ns: 200000000 }
|
||
- { name: c1_l1_p70, threshold: 0.55, cost_per_lot_per_side: 0.125, latency_ns: 200000000 }
|
||
- { name: c1_l1_p80, threshold: 0.7, cost_per_lot_per_side: 0.125, latency_ns: 200000000 }
|
||
- { name: c1_l1_p90, threshold: 0.85, cost_per_lot_per_side: 0.125, latency_ns: 200000000 }
|
||
- { name: c1_l1_p95, threshold: 0.95, cost_per_lot_per_side: 0.125, latency_ns: 200000000 }
|
||
- { name: c1_l2_p60, threshold: 0.4, cost_per_lot_per_side: 0.125, latency_ns: 300000000 }
|
||
- { name: c1_l2_p70, threshold: 0.55, cost_per_lot_per_side: 0.125, latency_ns: 300000000 }
|
||
- { name: c1_l2_p80, threshold: 0.7, cost_per_lot_per_side: 0.125, latency_ns: 300000000 }
|
||
- { name: c1_l2_p90, threshold: 0.85, cost_per_lot_per_side: 0.125, latency_ns: 300000000 }
|
||
- { name: c1_l2_p95, threshold: 0.95, cost_per_lot_per_side: 0.125, latency_ns: 300000000 }
|
||
- { name: c1_l3_p60, threshold: 0.4, cost_per_lot_per_side: 0.125, latency_ns: 400000000 }
|
||
- { name: c1_l3_p70, threshold: 0.55, cost_per_lot_per_side: 0.125, latency_ns: 400000000 }
|
||
- { name: c1_l3_p80, threshold: 0.7, cost_per_lot_per_side: 0.125, latency_ns: 400000000 }
|
||
- { name: c1_l3_p90, threshold: 0.85, cost_per_lot_per_side: 0.125, latency_ns: 400000000 }
|
||
- { name: c1_l3_p95, threshold: 0.95, cost_per_lot_per_side: 0.125, latency_ns: 400000000 }
|
||
- { name: c2_l0_p60, threshold: 0.4, cost_per_lot_per_side: 0.1875, latency_ns: 100000000 }
|
||
- { name: c2_l0_p70, threshold: 0.55, cost_per_lot_per_side: 0.1875, latency_ns: 100000000 }
|
||
- { name: c2_l0_p80, threshold: 0.7, cost_per_lot_per_side: 0.1875, latency_ns: 100000000 }
|
||
- { name: c2_l0_p90, threshold: 0.85, cost_per_lot_per_side: 0.1875, latency_ns: 100000000 }
|
||
- { name: c2_l0_p95, threshold: 0.95, cost_per_lot_per_side: 0.1875, latency_ns: 100000000 }
|
||
- { name: c2_l1_p60, threshold: 0.4, cost_per_lot_per_side: 0.1875, latency_ns: 200000000 }
|
||
- { name: c2_l1_p70, threshold: 0.55, cost_per_lot_per_side: 0.1875, latency_ns: 200000000 }
|
||
- { name: c2_l1_p80, threshold: 0.7, cost_per_lot_per_side: 0.1875, latency_ns: 200000000 }
|
||
- { name: c2_l1_p90, threshold: 0.85, cost_per_lot_per_side: 0.1875, latency_ns: 200000000 }
|
||
- { name: c2_l1_p95, threshold: 0.95, cost_per_lot_per_side: 0.1875, latency_ns: 200000000 }
|
||
- { name: c2_l2_p60, threshold: 0.4, cost_per_lot_per_side: 0.1875, latency_ns: 300000000 }
|
||
- { name: c2_l2_p70, threshold: 0.55, cost_per_lot_per_side: 0.1875, latency_ns: 300000000 }
|
||
- { name: c2_l2_p80, threshold: 0.7, cost_per_lot_per_side: 0.1875, latency_ns: 300000000 }
|
||
- { name: c2_l2_p90, threshold: 0.85, cost_per_lot_per_side: 0.1875, latency_ns: 300000000 }
|
||
- { name: c2_l2_p95, threshold: 0.95, cost_per_lot_per_side: 0.1875, latency_ns: 300000000 }
|
||
- { name: c2_l3_p60, threshold: 0.4, cost_per_lot_per_side: 0.1875, latency_ns: 400000000 }
|
||
- { name: c2_l3_p70, threshold: 0.55, cost_per_lot_per_side: 0.1875, latency_ns: 400000000 }
|
||
- { name: c2_l3_p80, threshold: 0.7, cost_per_lot_per_side: 0.1875, latency_ns: 400000000 }
|
||
- { name: c2_l3_p90, threshold: 0.85, cost_per_lot_per_side: 0.1875, latency_ns: 400000000 }
|
||
- { name: c2_l3_p95, threshold: 0.95, cost_per_lot_per_side: 0.1875, latency_ns: 400000000 }
|
||
- { name: c3_l0_p60, threshold: 0.4, cost_per_lot_per_side: 0.25, latency_ns: 100000000 }
|
||
- { name: c3_l0_p70, threshold: 0.55, cost_per_lot_per_side: 0.25, latency_ns: 100000000 }
|
||
- { name: c3_l0_p80, threshold: 0.7, cost_per_lot_per_side: 0.25, latency_ns: 100000000 }
|
||
- { name: c3_l0_p90, threshold: 0.85, cost_per_lot_per_side: 0.25, latency_ns: 100000000 }
|
||
- { name: c3_l0_p95, threshold: 0.95, cost_per_lot_per_side: 0.25, latency_ns: 100000000 }
|
||
- { name: c3_l1_p60, threshold: 0.4, cost_per_lot_per_side: 0.25, latency_ns: 200000000 }
|
||
- { name: c3_l1_p70, threshold: 0.55, cost_per_lot_per_side: 0.25, latency_ns: 200000000 }
|
||
- { name: c3_l1_p80, threshold: 0.7, cost_per_lot_per_side: 0.25, latency_ns: 200000000 }
|
||
- { name: c3_l1_p90, threshold: 0.85, cost_per_lot_per_side: 0.25, latency_ns: 200000000 }
|
||
- { name: c3_l1_p95, threshold: 0.95, cost_per_lot_per_side: 0.25, latency_ns: 200000000 }
|
||
- { name: c3_l2_p60, threshold: 0.4, cost_per_lot_per_side: 0.25, latency_ns: 300000000 }
|
||
- { name: c3_l2_p70, threshold: 0.55, cost_per_lot_per_side: 0.25, latency_ns: 300000000 }
|
||
- { name: c3_l2_p80, threshold: 0.7, cost_per_lot_per_side: 0.25, latency_ns: 300000000 }
|
||
- { name: c3_l2_p90, threshold: 0.85, cost_per_lot_per_side: 0.25, latency_ns: 300000000 }
|
||
- { name: c3_l2_p95, threshold: 0.95, cost_per_lot_per_side: 0.25, latency_ns: 300000000 }
|
||
- { name: c3_l3_p60, threshold: 0.4, cost_per_lot_per_side: 0.25, latency_ns: 400000000 }
|
||
- { name: c3_l3_p70, threshold: 0.55, cost_per_lot_per_side: 0.25, latency_ns: 400000000 }
|
||
- { name: c3_l3_p80, threshold: 0.7, cost_per_lot_per_side: 0.25, latency_ns: 400000000 }
|
||
- { name: c3_l3_p90, threshold: 0.85, cost_per_lot_per_side: 0.25, latency_ns: 400000000 }
|
||
- { name: c3_l3_p95, threshold: 0.95, cost_per_lot_per_side: 0.25, latency_ns: 400000000 }
|
||
- { name: c4_l0_p60, threshold: 0.4, cost_per_lot_per_side: 0.375, latency_ns: 100000000 }
|
||
- { name: c4_l0_p70, threshold: 0.55, cost_per_lot_per_side: 0.375, latency_ns: 100000000 }
|
||
- { name: c4_l0_p80, threshold: 0.7, cost_per_lot_per_side: 0.375, latency_ns: 100000000 }
|
||
- { name: c4_l0_p90, threshold: 0.85, cost_per_lot_per_side: 0.375, latency_ns: 100000000 }
|
||
- { name: c4_l0_p95, threshold: 0.95, cost_per_lot_per_side: 0.375, latency_ns: 100000000 }
|
||
- { name: c4_l1_p60, threshold: 0.4, cost_per_lot_per_side: 0.375, latency_ns: 200000000 }
|
||
- { name: c4_l1_p70, threshold: 0.55, cost_per_lot_per_side: 0.375, latency_ns: 200000000 }
|
||
- { name: c4_l1_p80, threshold: 0.7, cost_per_lot_per_side: 0.375, latency_ns: 200000000 }
|
||
- { name: c4_l1_p90, threshold: 0.85, cost_per_lot_per_side: 0.375, latency_ns: 200000000 }
|
||
- { name: c4_l1_p95, threshold: 0.95, cost_per_lot_per_side: 0.375, latency_ns: 200000000 }
|
||
- { name: c4_l2_p60, threshold: 0.4, cost_per_lot_per_side: 0.375, latency_ns: 300000000 }
|
||
- { name: c4_l2_p70, threshold: 0.55, cost_per_lot_per_side: 0.375, latency_ns: 300000000 }
|
||
- { name: c4_l2_p80, threshold: 0.7, cost_per_lot_per_side: 0.375, latency_ns: 300000000 }
|
||
- { name: c4_l2_p90, threshold: 0.85, cost_per_lot_per_side: 0.375, latency_ns: 300000000 }
|
||
- { name: c4_l2_p95, threshold: 0.95, cost_per_lot_per_side: 0.375, latency_ns: 300000000 }
|
||
- { name: c4_l3_p60, threshold: 0.4, cost_per_lot_per_side: 0.375, latency_ns: 400000000 }
|
||
- { name: c4_l3_p70, threshold: 0.55, cost_per_lot_per_side: 0.375, latency_ns: 400000000 }
|
||
- { name: c4_l3_p80, threshold: 0.7, cost_per_lot_per_side: 0.375, latency_ns: 400000000 }
|
||
- { name: c4_l3_p90, threshold: 0.85, cost_per_lot_per_side: 0.375, latency_ns: 400000000 }
|
||
- { name: c4_l3_p95, threshold: 0.95, cost_per_lot_per_side: 0.375, latency_ns: 400000000 }
|
||
- { name: c5_l0_p60, threshold: 0.4, cost_per_lot_per_side: 0.5, latency_ns: 100000000 }
|
||
- { name: c5_l0_p70, threshold: 0.55, cost_per_lot_per_side: 0.5, latency_ns: 100000000 }
|
||
- { name: c5_l0_p80, threshold: 0.7, cost_per_lot_per_side: 0.5, latency_ns: 100000000 }
|
||
- { name: c5_l0_p90, threshold: 0.85, cost_per_lot_per_side: 0.5, latency_ns: 100000000 }
|
||
- { name: c5_l0_p95, threshold: 0.95, cost_per_lot_per_side: 0.5, latency_ns: 100000000 }
|
||
- { name: c5_l1_p60, threshold: 0.4, cost_per_lot_per_side: 0.5, latency_ns: 200000000 }
|
||
- { name: c5_l1_p70, threshold: 0.55, cost_per_lot_per_side: 0.5, latency_ns: 200000000 }
|
||
- { name: c5_l1_p80, threshold: 0.7, cost_per_lot_per_side: 0.5, latency_ns: 200000000 }
|
||
- { name: c5_l1_p90, threshold: 0.85, cost_per_lot_per_side: 0.5, latency_ns: 200000000 }
|
||
- { name: c5_l1_p95, threshold: 0.95, cost_per_lot_per_side: 0.5, latency_ns: 200000000 }
|
||
- { name: c5_l2_p60, threshold: 0.4, cost_per_lot_per_side: 0.5, latency_ns: 300000000 }
|
||
- { name: c5_l2_p70, threshold: 0.55, cost_per_lot_per_side: 0.5, latency_ns: 300000000 }
|
||
- { name: c5_l2_p80, threshold: 0.7, cost_per_lot_per_side: 0.5, latency_ns: 300000000 }
|
||
- { name: c5_l2_p90, threshold: 0.85, cost_per_lot_per_side: 0.5, latency_ns: 300000000 }
|
||
- { name: c5_l2_p95, threshold: 0.95, cost_per_lot_per_side: 0.5, latency_ns: 300000000 }
|
||
- { name: c5_l3_p60, threshold: 0.4, cost_per_lot_per_side: 0.5, latency_ns: 400000000 }
|
||
- { name: c5_l3_p70, threshold: 0.55, cost_per_lot_per_side: 0.5, latency_ns: 400000000 }
|
||
- { name: c5_l3_p80, threshold: 0.7, cost_per_lot_per_side: 0.5, latency_ns: 400000000 }
|
||
- { name: c5_l3_p90, threshold: 0.85, cost_per_lot_per_side: 0.5, latency_ns: 400000000 }
|
||
- { name: c5_l3_p95, threshold: 0.95, cost_per_lot_per_side: 0.5, latency_ns: 400000000 }
|
||
- { name: c6_l0_p60, threshold: 0.4, cost_per_lot_per_side: 1.0, latency_ns: 100000000 }
|
||
- { name: c6_l0_p70, threshold: 0.55, cost_per_lot_per_side: 1.0, latency_ns: 100000000 }
|
||
- { name: c6_l0_p80, threshold: 0.7, cost_per_lot_per_side: 1.0, latency_ns: 100000000 }
|
||
- { name: c6_l0_p90, threshold: 0.85, cost_per_lot_per_side: 1.0, latency_ns: 100000000 }
|
||
- { name: c6_l0_p95, threshold: 0.95, cost_per_lot_per_side: 1.0, latency_ns: 100000000 }
|
||
- { name: c6_l1_p60, threshold: 0.4, cost_per_lot_per_side: 1.0, latency_ns: 200000000 }
|
||
- { name: c6_l1_p70, threshold: 0.55, cost_per_lot_per_side: 1.0, latency_ns: 200000000 }
|
||
- { name: c6_l1_p80, threshold: 0.7, cost_per_lot_per_side: 1.0, latency_ns: 200000000 }
|
||
- { name: c6_l1_p90, threshold: 0.85, cost_per_lot_per_side: 1.0, latency_ns: 200000000 }
|
||
- { name: c6_l1_p95, threshold: 0.95, cost_per_lot_per_side: 1.0, latency_ns: 200000000 }
|
||
- { name: c6_l2_p60, threshold: 0.4, cost_per_lot_per_side: 1.0, latency_ns: 300000000 }
|
||
- { name: c6_l2_p70, threshold: 0.55, cost_per_lot_per_side: 1.0, latency_ns: 300000000 }
|
||
- { name: c6_l2_p80, threshold: 0.7, cost_per_lot_per_side: 1.0, latency_ns: 300000000 }
|
||
- { name: c6_l2_p90, threshold: 0.85, cost_per_lot_per_side: 1.0, latency_ns: 300000000 }
|
||
- { name: c6_l2_p95, threshold: 0.95, cost_per_lot_per_side: 1.0, latency_ns: 300000000 }
|
||
- { name: c6_l3_p60, threshold: 0.4, cost_per_lot_per_side: 1.0, latency_ns: 400000000 }
|
||
- { name: c6_l3_p70, threshold: 0.55, cost_per_lot_per_side: 1.0, latency_ns: 400000000 }
|
||
- { name: c6_l3_p80, threshold: 0.7, cost_per_lot_per_side: 1.0, latency_ns: 400000000 }
|
||
- { name: c6_l3_p90, threshold: 0.85, cost_per_lot_per_side: 1.0, latency_ns: 400000000 }
|
||
- { name: c6_l3_p95, threshold: 0.95, cost_per_lot_per_side: 1.0, latency_ns: 400000000 }
|
||
|
||
cells:
|
||
- { name: W1, window: 2025-Q2 }
|
||
- { name: W2, window: 2025-Q3 }
|
||
- { name: W3, window: 2025-Q4 }
|
||
- { name: W4, window: 2026-Q1 }
|