Factors, tested

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.

8 proposed 0 certified8 rejected 0 re-proposals refused
FactorGross SharpeNet Sharpe Out of sampleDeflatedWhere it stopped
long_while_closed0.915-0.095——rejected
net Sharpe -0.095 after the 12bps round trip (gross was 0.915)
long_while_open0.096-1.437——rejected
net Sharpe -1.437 after the 12bps round trip (gross was 0.096)
weekend_only2.5321.6532.2360.000rejected
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_reversion2.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_trend0.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).

Top ↑