trd.fun / lab
Strategy candidates

Wave-9 paper candidate selection rule

Updated 2026-09-05
Pre-registered before batch numbers: The deterministic survivor rule gates integrity, PBO, Holm, clustered DSR, cost stress, recency, family diversity, and the disclosed cap.
CURRENT
docs/research/wave9-paper-selection-rule-2026-09-05.md

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:

  1. Require successful batch reconciliation, exact receipt row count, and cryptographic verification of every sealed row. Any integrity failure refuses the command.
  2. 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.
  3. 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.
  4. Require the sealed clustered DSR probability to be at least 0.95. Raw DSR is report-only.
  5. Require the sealed 25-basis-point-per-side scenario endpoint annualized return to be positive.
  6. 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.
  7. Keep at most one row from each family cluster: highest clustered DSR wins, with ties broken by batch ID ascending.
  8. 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.

On this page 2 sections
LAB documentation describes design intent and research safeguards. It does not provide trading instructions or operational access.