Pre-registered before batch numbers: The deterministic survivor rule gates integrity, PBO, Holm, clustered DSR, cost stress, recency, family diversity, and the disclosed cap.
Status: PRE-REGISTERED 2026-09-05. This rule was written and sealed before any Stage-1a or Stage-2 batch numbers were read. It grants no paper or live trading authority; it only determines which Wave-9 rows may proceed to paper pre-registration.
Owner mandate: Sam Mathews, 2026-09-05: pick as many as honest evidence allows; recommended cap 3, one per family cluster.
Mechanical rule
Run node scripts/wave9-select-paper-candidates.mjs <batch-<hash>.json> after the authoritative combined batch receipt exists. The command applies these gates in order and discloses the surviving batch IDs after every gate:
- Require successful batch reconciliation, exact receipt row count, and cryptographic verification of every sealed row. Any integrity failure refuses the command.
- Require the batch's sealed probability of backtest overfitting to be at most 0.20. A failure makes the whole batch exploration-only and selects nothing.
- Require the sealed Holm rejection at exploration alpha 0.10. Benjamini–Hochberg is report-only and cannot admit a row. Paper and real-money testing retain the separately registered alpha 0.05 per family with Holm.
- Require the sealed clustered DSR probability to be at least 0.95. Raw DSR is report-only.
- Require the sealed 25-basis-point-per-side scenario endpoint annualized return to be positive.
- On the sealed 10-basis-point-per-side monthly candidate-minus-benchmark net returns from 2017-01 onward, require 12 times the arithmetic monthly mean to be positive.
- Keep at most one row from each family cluster: highest clustered DSR wins, with ties broken by batch ID ascending.
- Rank the remaining cluster winners by clustered DSR descending, break ties by batch ID ascending, and retain at most three by default.
--max <n>changes only that disclosed cap and therefore changes the rule hash in the output receipt.
An empty survivor list is a valid selection result. The receipt is canonical JSON; identical batch bytes and arguments produce identical receipt bytes. --out <file> writes the same bytes printed to standard output.
Sealed default rule
{"costStressBps":25,"dsrMin":0.95,"holmAlpha":0.1,"max":3,"onePerCluster":true,"pboMax":0.2,"recencyFrom":"2017-01"}ruleSha256=eabbefc15a7e8a22ee656706fcd2a52b25f95980c0b3a9b57407f405887f0e82
The hash is SHA-256 over the canonical rule-object JSON bytes, including the canonical trailing newline used by the Wave-9 serializer.