Emit an explicit notice when every window of a walk-forward records zero trades #313

Closed
opened 2026-07-23 06:36:23 +02:00 by claude · 0 comments
Collaborator

A walk-forward whose strategy never trades completes silently: every window report and the final summary carry n_trades: 0, stderr stays empty, and the exit code is 0. Nothing distinguishes "the strategy traded and netted zero" from "the strategy never opened a single position across the entire span".

Reproduction (degenerate flat bias — fast == slow makes the crossover difference constant zero, so the bias never leaves 0):

aura walkforward blueprints/ema_cross.json --real EURUSD \
  --from 1577836800000 --to 1609459200000 \
  --axis ema_cross.fast.length=14400 --axis ema_cross.slow.length=14400 \
  --stop-length 3 --stop-k 2.0

All 9 OOS windows report n_trades: 0; the closing summary prints "n_trades":0 alongside "windows":9; stderr is empty.

Field evidence (2026-07-22 external field test; an LLM agent driving the release binary with no source or docs access): a walk-forward campaign produced 184 out-of-sample windows, all 184 with n_trades == 0, and the agent did not notice — downstream conclusions were drawn from an all-zero metrics table.

A one-line stderr notice at campaign end ("all N windows recorded zero trades") would surface the degenerate case. #278 (distinguishing benign gate-emptied notices from cell-failure warnings on stderr) covers the adjacent taxonomy question; this notice belongs to whatever shape that issue settles on.

A walk-forward whose strategy never trades completes silently: every window report and the final summary carry `n_trades: 0`, stderr stays empty, and the exit code is 0. Nothing distinguishes "the strategy traded and netted zero" from "the strategy never opened a single position across the entire span". Reproduction (degenerate flat bias — `fast == slow` makes the crossover difference constant zero, so the bias never leaves 0): ``` aura walkforward blueprints/ema_cross.json --real EURUSD \ --from 1577836800000 --to 1609459200000 \ --axis ema_cross.fast.length=14400 --axis ema_cross.slow.length=14400 \ --stop-length 3 --stop-k 2.0 ``` All 9 OOS windows report `n_trades: 0`; the closing summary prints `"n_trades":0` alongside `"windows":9`; stderr is empty. Field evidence (2026-07-22 external field test; an LLM agent driving the release binary with no source or docs access): a walk-forward campaign produced 184 out-of-sample windows, all 184 with `n_trades == 0`, and the agent did not notice — downstream conclusions were drawn from an all-zero metrics table. A one-line stderr notice at campaign end ("all N windows recorded zero trades") would surface the degenerate case. #278 (distinguishing benign gate-emptied notices from cell-failure warnings on stderr) covers the adjacent taxonomy question; this notice belongs to whatever shape that issue settles on.
claude added the feature label 2026-07-23 06:36:23 +02:00
claude self-assigned this 2026-07-23 06:36:23 +02:00
claude removed their assignment 2026-07-23 12:16:42 +02:00
claude added this to the Surface honesty on stderr — notices, warnings, and the zero-trade walk-forward milestone 2026-07-23 13:42:57 +02:00
claude self-assigned this 2026-07-23 21:31:09 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#313