8 factors proposed, 0 certified, 8 rejected. Every factor passes the same gates in the same order — backtest, costs, out of sample, the deflated Sharpe over all 8 trials, split-half reliability — and is certified only if it survives all of them. A model may propose a factor, and the proposer receives ProposerContext, which has no field for performance; evaluation is deterministic Python and no model grades a factor.
| Factor | Gross Sharpe | Net Sharpe | Out of sample | Deflated | Where it stopped |
|---|---|---|---|---|---|
| long_while_closed | 0.915 | -0.095 | — | — | rejected net Sharpe -0.095 after the 12bps round trip (gross was 0.915) |
| long_while_open | 0.096 | -1.437 | — | — | rejected net Sharpe -1.437 after the 12bps round trip (gross was 0.096) |
| weekend_only | 2.532 | 1.653 | 2.236 | 0.000 | rejected DSR 0.0 over 8 trials — not distinguishable from the best of a random search |
| closure_momentum | -2.681 | -9.000 | — | — | rejected net Sharpe -9.000 after the 12bps round trip (gross was -2.681) |
| closure_reversion | 2.681 | -3.746 | — | — | rejected net Sharpe -3.746 after the 12bps round trip (gross was 2.681) |
| near_reopen | -0.369 | -1.625 | — | — | rejected net Sharpe -1.625 after the 12bps round trip (gross was -0.369) |
| slow_trend | 0.850 | -0.310 | — | — | rejected net Sharpe -0.310 after the 12bps round trip (gross was 0.850) |
| slow_fade | -0.420 | -2.111 | — | — | rejected net Sharpe -2.111 after the 12bps round trip (gross was -0.420) |
A dash is a gate the factor never reached. Tested
2026-09-12 17:52 UTC by
research/factor_lab.py;
the record is data/factor_lab.json.
Against FactorMiner, run in its own engine on the same bars through the same gates: its paper factors pass all of them on 2 of 1308 factor-instrument pairs, its Alpha101 set on 0 of 144, the adapted variants on 0 of 720, and these rules on 0 of 96; coin flips pass split-half alone 25 times in 480. Neither side finds an edge these gates can see, so the row is TIED (data/factor_quality_rivals.json).