qea stock-ranking model
Portfolio demoA static snapshot of a personal quant research platform — 500 current members of a liquid500 universe, daily history since 2016, exported 2026-11-04 from the live 56.9 GB DuckDB. Every chart and table is the real tool's own output.How this demo works →← Ben Meyer's portfolio

Forking-paths ledger · 29 registrations · 17 blocks with results

Research ledger

Every block was registered — hypothesis, statistic and decision rule fixed in a committed document — before it ran. What was committed to comes first; what came out is below it. Nothing here is live evidence.

Every block that ran is listed, including the ones that tested a return no execution could take — that is what a forking-paths ledger is for, and dropping them would be the selective reporting it exists to prevent. But only one leg is reported as a result anywhere else on this site: the implementable one, open t+1 to open t+2. The credited close-to-close return the record books is an accounting convention, not a strategy.

Blocks at a glance

Each finished block: the question it registered, the verdict its own decision rule produced, and where and when that rule was fixed.

backtest
P1 Phase P
NOT ATTAINABLE

Is the record's booked close-to-close return still there when the position is entered at the next open and closed that same session (the intraday leg only)?

long book attainable bps / all

registered 2026-09-09 22:04 commit d5fe203e
ran 2026-09-09 22:05 run b9ca7ceb
docs/pre-registered-P.md 4 statistics
P2 Phase P
REGIME-DEPENDENT not detected

Does the edge depend on the market regime — volatility, trend, or cross-sectional dispersion?

  • dispersion: REGIME-DEPENDENT
  • trend: not detected
  • vol: REGIME-DEPENDENT
registered 2026-09-09 22:04 commit d5fe203e
ran 2026-09-09 22:05 run b9ca7ceb
docs/pre-registered-P.md 23 statistics
P3 Phase P
IMPLEMENTABLE

Does an execution one day behind the signal — next open to the open after — earn the edge? This is the only leg the platform reports as a result.

implementable over credited / all

registered 2026-09-10 09:23 commit f66894fd
ran 2026-09-10 09:23 run 5669786b
docs/pre-registered-P3.md 7 statistics
Q0 Phase Q
PASS

Are the vendor's option chains complete enough on delisted names to build survivorship-free implied-volatility features?

atm iv usable / served

registered 2026-09-10 09:11 commit 67c5de05
ran 2026-09-10 09:13 run d8a761a6
docs/pre-registered-Q.md 3 statistics
Q3 Phase Q
no SIGNAL PASS

Do option-implied volatility features add rank information over the frozen model?

  • atm_iv30: no
  • cp_iv_spread: SIGNAL
  • iv_rv_spread: SIGNAL
  • skew25: no
  • all: PASS
registered 2026-09-10 09:11 commit 67c5de05
ran 2026-10-02 16:03 run d7ac262b
docs/pre-registered-Q.md 9 statistics
Q3A Phase Q
PASS

Q3 amended before it ran: do the options features add rank information on the leg the book trades, over the survivorship-complete panel, beyond the score and realised risk?

verdict / all

registered 2026-09-29 16:29 commit 7b8eba20
ran 2026-10-02 16:06 run ce9061e5
docs/pre-registered-Q3A.md 100 statistics
Q4 Phase Q
no verdict field

Phase Q: implied volatility as new cross-sectional information

registered 2026-09-10 09:11 commit 67c5de05
ran 2026-10-02 16:03 run d7ac262b
docs/pre-registered-Q.md 3 statistics
Q5 Phase Q
PASS

Does option activity — volume, put share, open interest, implied-vol changes — add rank information on the traded leg beyond the score and realised risk?

verdict / all

registered 2026-10-02 16:39 commit ddc932a7
ran 2026-10-02 16:56 run 314f67da
docs/pre-registered-Q5.md 41 statistics
Q5-7 Phase Q
NONE QUALIFIES

Is any options construction good enough to trade — a paired net gain over the book in both halves and outside the contaminated region?

verdict / all

registered no matching pre-registration found
ran 2026-10-02 16:56 run 314f67da
Q6a Phase Q
IV FORECASTS BETTER

Does implied volatility forecast a stock's coming volatility better than its trailing realised volatility?

verdict / all

registered no matching pre-registration found
ran 2026-10-02 16:56 run 314f67da
Q6b Phase Q
NOT HELPS

Does weighting the book by inverse implied volatility beat equal weight and inverse realised volatility, net?

verdict / all

registered no matching pre-registration found
ran 2026-10-02 16:56 run 314f67da
Q7 Phase Q
ESTABLISHED

Does a market-wide implied-dispersion gate beat the realised-dispersion gate?

verdict / all

registered 2026-09-10 09:11 commit 67c5de05
ran 2026-10-02 16:56 run 314f67da
docs/pre-registered-Q.md 7 statistics
R1 Phase R
no verdict field

What are the factor alphas when the market regressor is aligned to the same window as the return it explains (FINDINGS C8)?

registered 2026-09-19 14:21 commit 9f9b60fc
ran 2026-09-19 14:23 run d86ac3cf
docs/pre-registered-R.md 60 statistics
R2 Phase R
PERSISTS

Does the book's overnight alpha survive a third night?

  • all: PERSISTS
  • night3: PERSISTS
registered 2026-09-19 14:21 commit 9f9b60fc
ran 2026-09-19 14:23 run d86ac3cf
docs/pre-registered-R.md 14 statistics
R3 Phase R
GATE CLOSED

Does the ranking order names inside its own top — the prerequisite for holding fewer of them?

  • within_top_ic: GATE CLOSED
  • all: GATE CLOSED
registered 2026-09-19 14:21 commit 9f9b60fc
ran 2026-09-19 14:23 run d86ac3cf
docs/pre-registered-R.md 18 statistics
R4 Phase R
NOT ESTABLISHED

Does the calm-market result survive a null that preserves how persistent a regime label is?

verdict / gate_family

registered 2026-09-19 14:21 commit 9f9b60fc
ran 2026-09-19 14:23 run d86ac3cf
docs/pre-registered-R.md 26 statistics
R5 Phase R
INDISTINGUISHABLE

Does refitting the model on recent data, weighted toward it, beat the frozen one on identical dates?

  • W: INDISTINGUISHABLE
  • W: INDISTINGUISHABLE
  • all: INDISTINGUISHABLE
registered 2026-09-19 14:45 commit 9f9b60fc
ran 2026-09-19 15:42 run ef069dbb
docs/pre-registered-R5.md 32 statistics

Each stamp is the verdict word the block's own rule produced, read against the claim it tested: a pass is set in the positive colour, a fail in the negative one. Neutral outcomes — INDISTINGUISHABLE, PARTIAL, VOID, “not detected” — stay uncoloured: they are outcomes, not results, and a void run is not a failure of the hypothesis. A block whose verdicts differ by label is counted under each outcome it carries. “Supports” is a reading of a backtest verdict, never a live result.

backtest The frozen model scored on dates it never traded, after the fact. A description of the holdout, not evidence — only live days are evidence.

Closed directions (synthesis 2026-09-19)

Lines of work this project has stopped, each with what closed it. Kept so a later reader — or a later agent — does not spend a week re-opening one, and so that reopening any of them is a deliberate act with a reason.

changed 2026-09-20 docs/research-synthesis-2026-09-19.md
  1. Closed 01

    a finer use of the ranking — weights, concentration, tranches

    closed by R3 GATE CLOSED AG-011 (dead) AG-012 R2's own economics

    the profile is flat below decile 1; the buffer already halves turnover; tranches turn over less and earn less

  2. Closed 02

    adapting the model to recent data

    recency weighting took a third of the IC away at t −1.6

  3. Closed 03

    residualised inputs, as written

    closed by AG-014

    the form subtracts the market twice; its sector half is rs_sector_v1, already in the model

  4. Closed 04

    regime gates and sizing on dispersion or volatility

    closed by R4 NOT ESTABLISHED AG-007 AG-016

    restatements of C16, unstable, absent since 2023; the overlay is mostly free leverage

  5. Closed 05

    overnight persistence as an add-on

    closed by AG-019

    real on the universe, 2020-onward, adds nothing inside the decile, harvestable only below cost

  6. Closed 06

    the illiquid half; the overnight leg alone

    closed by AG-017 (dead) AG-013

    a cost identity; an overnight-only book breaks even below its cost

  7. Closed 07

    the model against single characteristics, by superiority on these days

    closed by AG-020 (dead)

    the design's power was under a tenth; no member of that family may run again without its minimum detectable difference computed first

  8. Closed 08

    the bottom decile, a short book, more regime cuts on the same days

    closed by BLOCKED.md

    settled before today and again in every stream

Read the closed by tags carefully: an R verdict came from a registered block, an AG-0nn from an agent of the research fleet. An agent verdict is not a record finding — it is an argument recorded in research/agent-ledger/ with its own data and its own reasoning, and none of it is live evidence. Nothing here is evidence either way; it is a list of questions that stopped being worth asking.

Pre-registrations

29 blocks, oldest first: the document, the items committed to, and the commit that fixed them before anything ran. Where a registration's blocks wrote statistics to this ledger, they are linked.

  1. July 2026
    docs/pre-registered-diagnostics.md 7428ff043a

    did the gates over-filter? five diagnostics, no gate tuning in response

    1. D1 fold failure breakdown (a: too few tested folds vs b: tested and inconsistent)
    2. D2 per-cell expectancy of last 5 test windows + drop-the-best-fold FDR robustness
    3. D3 true holdout: fit through 2015-12-31, portfolio 2016-01-01 onward, both combiners
    4. D4 tail-focused binning [0,2,5,15,50,85,95,98,100], original gates, no recency
    5. D5 GBM benchmark (Phase F), depth-3, same folds and purge, diagnostic only
    5 items committed to
  2. August 2026
    docs/pre-registered-gbm-gates.md 0b37450fa5

    GBM must clear the same gates as the combo engine; Phase G parked until G1 clears

    1. G1 permutation null on the GBM (within-date shuffled targets, full walk-forward, both horizons)
    2. G2 frozen-map GBM: fit through 2015-12-31, no refit, score 2016-2026
    3. G3 determinism: pin sklearn threading for bit-reproducible runs
    4. G4 turnover-aware construction: rank buffering (enter top 10%, exit below top 30%), GBM and combo engine at h=5
    4 items committed to
  3. docs/pre-registered-gbm-robustness.md e112951a1c

    is the frozen GBM result a construction artifact, does it decay, and is it timing or a factor tilt?

    1. H1 h=1 rank buffering with a 20/30/40% exit-threshold sweep
    2. H2 four independent frozen cutoffs (2013/2015/2017/2019), forward IC gross turnover year-by-year
    3. H3 decay check on the frozen GBM: year-by-year IC and spread, plus drop-the-best-year
    4. H4 feature attribution: within-date permutation importance and split-value distribution, fast state vs slow characteristics
    4 items committed to
  4. docs/pre-registered-gbm-economics.md da34d5d393

    is the frozen h=1 GBM alpha or repackaged low-vol/trend, does it survive 2008, and is the short book tradeable? Phase G decided on this.

    1. J1 factor attribution vs market/low-vol/momentum/trend/size (value unavailable: no fundamentals)
    2. J2 extended-period frozen models through 2005 and 2007, crisis inside the holdout
    3. J3 long/short leg decomposition, long-only beta, short-book feasibility, borrow cost at 0.5% and 3%
    3 items committed to
  5. docs/pre-registered-verifications.md 427be91c71

    verify the J3(b) long-only regression arithmetic; re-run J1 with value and size proxies. Phase G conditional on both.

    1. K1 explicit inputs and reconciliation of the long-only market regression
    2. K2 J1 re-run with 60-month reversal (value) and dollar volume (size)
    2 items committed to
  6. docs/pre-registered-L.md e9b8696daa

    Phase L: GBM-guided arity-3 combinations (plan docs/phase-L-plan.md)

    1. L2 arity-3 permutation null: shared shuffle, selection-GBM refit, re-selection, map fit on primary binning (hard gate)
    2. L3 triple selection from the frozen 2015 GBM, K=30, leaf-path gain statistic
    3. L4 arity-3 fit through 2015-12-31, primary D4 tail vector, full gate stack
    4. L4b robustness arm, widened tails, reported not decision-bearing
    5. L5 out-of-sample 2016-2026 head-to-head vs frozen GBM, buffered decile construction, identical dates, then STOP
    5 items committed to
  7. docs/pre-registered-L2b.md f2ae541e0b

    L2b: replicate nulls + control arm after the L2 gate failure

    1. L2b Arm A: 10 arity-3 replicate nulls, seeds 43-52, full pipeline incl. shuffled selection
    2. L2b Arm B: 5 arity-2 control nulls, seeds 42-46, same window/binning/gates, no selection
    3. L2b decision: leak check, cause attribution, and the measured-noise-floor L4 gate per the doc
    3 items committed to
  8. docs/pre-registered-L2c.md a642d99175

    L2c: FDR-pool fix + verification battery after the L2b cause finding

    1. L2c code gate: L0 reproduction re-run under default fdr_pool=all must still pass
    2. L2c battery: 11 arity-3 + 5 arity-2 nulls, same seeds as L2b, under fdr_pool=floors, pass = 0 accepted in all 16 and passed_fdr <= 5 per draw
    3. L2c continuation: L3/L4/L5 per pre-registered-L.md with fdr_pool=floors and the noise-floor L4 gate
    3 items committed to
  9. docs/pre-registered-M.md 1c8702f333

    Phase M: tail-cell acceptance rebuild at 2024 cutoff (plan approved; two adversarial review rounds folded in)

    1. M2 null battery: 11 shuffle-paired arity-3+arity-2 couples through 2024-12-31, tier readouts, leak check both halves, noise floor = max per tier
    2. M3: 2024-cutoff selection/baseline GBM + 2-way parent fit + arity-3 primary and arm, tiers live only above their null floors
    3. M4: holdout 2025+ books incl. equal-weight blend (decision-bearing), expectancy-weighted variant under the fixed promotion rule, veto overlay, min 60 comparison dates else unpowered, then STOP
    4. M5: conditional inactive shadow book
    4 items committed to
  10. docs/pre-registered-N1.md 0175c7f51f

    N1: does the downside-state edge survive in untouched data (gates the Phase N watcher)

    1. N1 sign-split recency readout: parent-map negative FDR cells, H=2025-01-01..2026-08-07, permutation-calibrated pooled signed edge at 95th pct, evidence floors 100 dates / 30 episodes
    2. descriptive era table reported, decides nothing
    2 items committed to
  11. docs/pre-registered-O1.md 1e706574ef

    O1: the named falsification test, review-hardened second draft

    1. O1 coverage gate: SIZE-usable reports, 80pct all / 60pct delisted symbol-months, 2016-2026 window
    2. O1 falsification regression: corrected MKT + true SIZE and VALUE on the K1 selection series, NW lag 5, alpha t threshold 1.5 fixed
    3. descriptive columns incl. old spec on identical dates (C8 quantification), decide nothing
    3 items committed to
  12. September 2026
    docs/pre-registered-P.md d5fe203ecd

    Phase P: attainable return and regime map of frozen GBM 09d8c916

    1. P1 attainable-entry verdict
    2. P2 regime map with 200-draw null
    3. P2 BH q=0.10 over three variables
    3 items committed to

    results P1P2

  13. docs/pre-registered-Q.md 67c5de05fc

    Phase Q: implied volatility as new cross-sectional information

    1. Q0 coverage gate (delisted chains >= 60%, ATM IV usable >= 90%)
    2. Q2 null battery 200 draws
    3. Q3 incremental rank IC, four features, BH q=0.10
    3 items committed to

    results Q0Q3Q4Q7

  14. docs/pre-registered-P3.md f66894fda4

    Phase P3: one-day-lagged execution at the open, correction of P1's interpretation

    1. P3 implementable open-to-open verdict (IMPLEMENTABLE / PARTIAL / NOT IMPLEMENTABLE)
    1 item committed to

    results P3

  15. docs/pre-registered-R.md 9f9b60fc70

    pre-registered block: 4 items

    1. R1
    2. R2
    3. R3
    4. R4
    4 items committed to

    results R1R2R3R4

  16. docs/pre-registered-R5.md 9f9b60fc70

    pre-registered block: 1 items

    1. R5
    1 item committed to

    results R5

  17. docs/pre-registered-R0.md 8db71cf945

    R0: vendor-open fidelity and fill slippage, rule fixed before the first fill

    1. R0
    1 item committed to
  18. docs/pre-registered-S.md 28311355bb

    S1: the shadow lane's promotion process, fixed before the shadow model exists

    1. S1
    1 item committed to
  19. docs/pre-registered-Q3A.md 7b8eba200f

    Q3 amended onto the traded leg, complete panel, realised-risk controls; recorded before the backfill restart

    1. Q3A
    1 item committed to

    results Q3A

  20. October 2026
    docs/pre-registered-Q5.md ddc932a7b7

    Q5-Q7 options follow-ups and the tradeability rule (owner 2026-10-02)

    1. Q5
    2. Q6a
    3. Q6b
    4. Q7
    5. Q5-7 tradeability
    5 items committed to

    results Q5

  21. docs/pre-registered-V.md 64ff6d3e81

    Phase V: the engine as a volatility forecaster and an options signal

    1. V1
    2. V2
    3. V3
    4. V4a
    5. V4b
    5 items committed to
  22. research/agent-ledger/AG-023/registration.md 58ae8e55f1

    Fixed volatility forecast family, selected through 2015; retrospective frozen evaluation; no production changes

    1. AG-023-forecast-family
    2. AG-023-triple-increment
    2 items committed to
  23. research/agent-ledger/AG-024/registration.md e0d3be4507

    Owner-directed follow-up; synthetic and independent code review passed; no new real fit yet

    1. AG-024-absolute-variance
    2. AG-024-calibration-tolerance
    2 items committed to
  24. research/agent-ledger/AG-025/registration.md e0d3be4507

    Fixed B2 inputs regardless AG-024 label; calibrated IV and delayed observed bid-ask tests; no real fit or option PnL yet

    1. AG-025-increment-beyond-calibrated-IV
    2. AG-025-quoted-paper-advantage
    2 items committed to
  25. research/agent-ledger/AG-026/registration.md eecc0df1a6

    Owner-directed continuation; independent code and synthetic acceptance before real AG-026 payoff; fixed source committed; N=26, owner pool approximately 46 separate.

    1. AG-026-missing-exit-identification
    2. AG-026-expiry-payoff
    2 items committed to
  26. research/agent-ledger/AG-028/registration.md 6a27816733

    Owner-authorized fixed weekly120 short-horizon forecast pilot; independent synthetic review passed; no real targets or fits yet

    1. AG-028-h1-price-increment
    2. AG-028-h5-price-increment
    3. AG-028-h5-IV-H-increment
    3 items committed to
  27. research/agent-ledger/AG-029/registration.md 5b6888822b

    Owner-authorized offline within-stock five-session variance forecast pilot. Reviewed fixed source committed before any real fit; two fresh complete runs required, no vendor or network use.

    1. AG-029-within-stock-vs-baseline
    2. AG-029-within-stock-vs-raw
    2 items committed to
  28. research/agent-ledger/AG-030/registration.md a337f113fe

    AG-030 SPY index options: S1 hedged short straddle, S2 put-write excess, S3 timed put-write; owner instruction 2026-10-10

    1. AG-030-S1
    2. AG-030-S2
    3. AG-030-S3
    3 items committed to
  29. research/agent-ledger/AG-031/registration.md 31c04f53cc

    AG-031 earnings straddles: E1 long, E2 short, E3 side from implied vs own-history move; owner instruction 2026-10-10

    1. AG-031-E1
    2. AG-031-E2
    3. AG-031-E3
    3 items committed to

Results by block

every statistic each block wrote, with its SE and n

Block P1

Is the record's booked close-to-close return still there when the position is entered at the next open and closed that same session (the intraday leg only)?

NOT ATTAINABLE 4 statistics · run b9ca7ceb · 2026-09-09 22:05

The row the verdict was written on

long book attainable bps · all 0.421± 1.421 n 2685 → NOT ATTAINABLE
All 4 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
live attainable bps live -12.536 12.737 15
live credited bps live 0.190 9.815 15
long book attainable bps all 0.421 1.421 2685 NOT ATTAINABLE ratio=0.113 overnight_share=0.887
long book credited bps all 3.733 1.790 2685

Decision rule fixed in docs/pre-registered-P.md at commit d5fe203e, 2026-09-09 22:04.

Block P2

Does the edge depend on the market regime — volatility, trend, or cross-sectional dispersion?

dispersion: REGIME-DEPENDENTtrend: not detectedvol: REGIME-DEPENDENT 23 statistics · run b9ca7ceb · 2026-09-09 22:05

The rows the verdict was written on

regime test · dispersion 0.005 n 200 → REGIME-DEPENDENT
regime test · trend 0.930 n 200 → not detected
regime test · vol 0.005 n 200 → REGIME-DEPENDENT
All 23 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
long book attainable bps dispersion:high 1.681 2.182 1615
long book attainable bps dispersion:low -1.869 1.609 437
long book attainable bps dispersion:mid -1.212 2.070 633
long book attainable bps trend:above -0.331 1.081 2236
long book attainable bps trend:below 4.166 6.570 449
long book attainable bps vol:high 4.165 4.169 733
long book attainable bps vol:low -2.978 1.331 1063
long book attainable bps vol:mid 1.398 2.327 889
long book credited bps dispersion:high 5.493 2.752 1615
long book credited bps dispersion:low 0.255 1.971 437
long book credited bps dispersion:mid 1.644 2.529 633
long book credited bps trend:above 3.279 1.388 2236
long book credited bps trend:below 5.998 8.183 449
long book credited bps vol:high 6.315 5.229 733
long book credited bps vol:low 0.002 1.689 1063
long book credited bps vol:mid 6.066 2.984 889
null pct95 bps overall 1.140 — 200
regime difference bps dispersion:high-low 5.239 — 2685 null_pct95=1.930
regime difference bps trend:above-below -2.720 — 2685 null_pct95=2.803
regime difference bps vol:high-low 6.312 — 2685 null_pct95=2.038
regime test dispersion 0.005 — 200 REGIME-DEPENDENT q_value=0.007
regime test trend 0.930 — 200 not detected q_value=0.930
regime test vol 0.005 — 200 REGIME-DEPENDENT q_value=0.007

Decision rule fixed in docs/pre-registered-P.md at commit d5fe203e, 2026-09-09 22:04.

Block P3

Does an execution one day behind the signal — next open to the open after — earn the edge? This is the only leg the platform reports as a result.

IMPLEMENTABLE 7 statistics · run 5669786b · 2026-09-10 09:23

The row the verdict was written on

implementable over credited · all 1.303 n 2684 → IMPLEMENTABLE
All 7 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
implementable over credited all 1.303 — 2684 IMPLEMENTABLE ci_excludes_zero=1.000 floor=0.500
long book bps credited 3.785 1.771 2684
long book bps implementable 4.932 1.825 2684
long book bps intraday 0.436 1.415 2684
long book bps overnight_credited 3.378 0.928 2684
long book bps overnight_fresh_next_book 3.360 0.945 2684 descriptive=1.000
long book bps overnight_next 4.295 0.981 2684

Decision rule fixed in docs/pre-registered-P3.md at commit f66894fd, 2026-09-10 09:23.

Block Q0

Are the vendor's option chains complete enough on delisted names to build survivorship-free implied-volatility features?

PASS 3 statistics · run d8a761a6 · 2026-09-10 09:13

The row the verdict was written on

atm iv usable · served 1.000 n 218 → PASS
All 3 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
atm iv usable served 1.000 — 218 PASS gate=0.900
deep history served 2010-2013 1.000 — 10
delisted chain coverage delisted 0.933 — 120 gate=0.600

Decision rule fixed in docs/pre-registered-Q.md at commit 67c5de05, 2026-09-10 09:11.

Block Q3

Do option-implied volatility features add rank information over the frozen model?

atm_iv30: nocp_iv_spread: SIGNALiv_rv_spread: SIGNALskew25: noall: PASS 9 statistics · run d7ac262b · 2026-10-02 16:03

The rows the verdict was written on

incremental ic · atm_iv30 0.013± 0.009 n 557 → no
incremental ic · cp_iv_spread 0.008± 0.003 n 557 → SIGNAL
incremental ic · iv_rv_spread 0.018± 0.004 n 557 → SIGNAL
incremental ic · skew25 -0.006± 0.004 n 557 → no
verdict · all 1.000 n 557 → PASS
All 9 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
incremental ic atm_iv30 0.013 0.009 557 no p=0.005 q=0.007 null95_abs=0.004 univariate_ic=0.014 share_positive=0.555 expected_sign=?
incremental ic cp_iv_spread 0.008 0.003 557 SIGNAL p=0.005 q=0.007 null95_abs=0.004 univariate_ic=0.009 share_positive=0.542 expected_sign=+
incremental ic iv_rv_spread 0.018 0.004 557 SIGNAL p=0.005 q=0.007 null95_abs=0.004 univariate_ic=0.018 share_positive=0.567 expected_sign=?
incremental ic skew25 -0.006 0.004 557 no p=0.015 q=0.015 null95_abs=0.004 univariate_ic=-0.006 share_positive=0.456 expected_sign=-
incremental ic h5 atm_iv30 -0.003 0.008 557 reported_only=1.000
incremental ic h5 cp_iv_spread 0.003 0.003 557 reported_only=1.000
incremental ic h5 iv_rv_spread 0.008 0.004 557 reported_only=1.000
incremental ic h5 skew25 0.011 0.004 557 reported_only=1.000
verdict all 1.000 — 557 PASS coverage=0.999

Decision rule fixed in docs/pre-registered-Q.md at commit 67c5de05, 2026-09-10 09:11.

Block Q3A

Q3 amended before it ran: do the options features add rank information on the leg the book trades, over the survivorship-complete panel, beyond the score and realised risk?

PASS 100 statistics · run ce9061e5 · 2026-10-02 16:06

The row the verdict was written on

verdict · all 1.000 n 2680 → PASS
All 100 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
build guard abs delta atm_iv30 0.000 — — limit=0.000
build guard abs delta cp_iv_spread 0.000 — — limit=0.000
build guard abs delta iv_rv_spread 0.000 — — limit=0.000
build guard abs delta skew25 0.000 — — limit=0.000
gate coverage 0.999 — 278566 summarised=278,258.000 min=0.950 passed=1.000 build_a={'summarised': 278258, 'member_weeks': 278566, 'coverage': 0.998894337428114}
gate reproduction_b9ca7ceb 0.000 — 1210935 identity_cut=2025-07-28 heal_cut=2026-08-10 identity_rows=1,093,176.000 identity_stored_rows=1,093,176.000 identity_only_panel=0.000 identity_only_stored=0.000 enforced_rows=1,210,935.000 max_rel_dev=0.000 rtol=0.000 tail_rows=10,279.000 tail_deviating=60.000 tail_max_rel_dev=11.618 passed=1.000 ruling=owner ruling 1, 2026-10-02 15:26
null a t atm_iv30 -0.174 — 20 sd_t=1.149 in_band=1.000 band_sd=[0.7, 1.4] band_mean=[-0.7, 0.7] t=['0.32282523585177547', '-0.12053116075533202', '1.774331828417384', '-2.121639020618992', '-1.278182124521727', '0.5438998823778598', '1.0942795209748415', '-0.8377057635196306', '-0.6871129141280489', '-0.5361395569029835', '-0.7919062982237917', '-1.2484896241849557', '2.851567889355719', '-0.47064255837151003', '0.880870181573885', '-0.31529588563547556', '-0.9802779800390755', '-0.6865433994376815', '-0.23460145323988263', '-0.6406654356068487'] decision_bearing=0.000
null a t cp_iv_spread -0.097 — 20 sd_t=1.086 in_band=1.000 band_sd=[0.7, 1.4] band_mean=[-0.7, 0.7] t=['1.9451224695020906', '0.7208625832828837', '0.9216500130044359', '0.37894822450311616', '-2.427533632139178', '-0.3914188066306125', '0.7444727236278186', '-0.0741770629332214', '-0.6155757755921794', '1.5703254100643447', '-0.20058928397966538', '-0.1771951501975128', '-1.1285659069079423', '1.044566741450869', '-0.009191646769057163', '-0.6303191349683155', '-0.5991576119955552', '-1.7521877198574414', '-1.2609118142836593', '-0.007462981180542812'] decision_bearing=1.000
null a t iv_rv_spread -0.032 — 20 sd_t=0.919 in_band=1.000 band_sd=[0.7, 1.4] band_mean=[-0.7, 0.7] t=['0.3099966515401694', '-0.9482510344283445', '-1.31225802440315', '0.5816528611400007', '-0.8393915427972307', '-0.9256657051060793', '0.5715168920911771', '-0.8842965961936847', '0.8459308546593348', '0.5562669934866301', '0.21008796258321383', '0.5904413384897501', '1.2506891696911469', '-0.33087734890476256', '-2.2315203726866812', '0.6131330615144278', '0.3514044886973268', '1.2982967039297135', '-0.11620445848724589', '-0.23401577106341548'] decision_bearing=1.000
null a t skew25 -0.078 — 20 sd_t=0.889 in_band=1.000 band_sd=[0.7, 1.4] band_mean=[-0.7, 0.7] t=['0.6213226133973735', '1.4774494608691784', '-1.5008855722519545', '1.1351500491387865', '-0.9467332871121222', '0.5034139918417586', '-0.7326516417920026', '0.19162536951273462', '-0.7720596967999407', '0.4024803291493362', '0.40562967487317075', '-1.6582521931389504', '0.32711973893495727', '-0.16542517046739505', '0.27464467497250206', '1.2504894702762017', '-0.9591794517201182', '-0.08257787966986513', '-0.5210569500579217', '-0.8077038481148422'] decision_bearing=1.000
null b mean ic atm_iv30 0.000 — 200 sd=0.001 p95_abs=0.002 plumbing_only=1.000
null b mean ic cp_iv_spread -0.000 — 200 sd=0.001 p95_abs=0.002 plumbing_only=1.000
null b mean ic iv_rv_spread 0.000 — 200 sd=0.001 p95_abs=0.002 plumbing_only=1.000
null b mean ic skew25 -0.000 — 200 sd=0.001 p95_abs=0.002 plumbing_only=1.000
partial ic atm_iv30 0.002 0.001 2680 t=1.512 share_positive=0.518 expected_sign=? decision_bearing=0.000 null_a_mean_t=-0.174 null_a_sd_t=1.149 null_a_in_band=1.000 label=vol level: a significant value restates AG-020/AG-015/AG-018 reported_only=1.000
partial ic cp_iv_spread 0.001 0.001 2680 t=1.214 share_positive=0.506 expected_sign=+ decision_bearing=1.000 null_a_mean_t=-0.097 null_a_sd_t=1.086 null_a_in_band=1.000 p=0.225 q=0.225 bh_reject=0.000
partial ic iv_rv_spread 0.003 0.001 2680 t=2.017 share_positive=0.515 expected_sign=? decision_bearing=1.000 null_a_mean_t=-0.032 null_a_sd_t=0.919 null_a_in_band=1.000 p=0.044 q=0.065 bh_reject=1.000
partial ic skew25 0.003 0.001 2680 t=2.650 share_positive=0.527 expected_sign=- decision_bearing=1.000 null_a_mean_t=-0.078 null_a_sd_t=0.889 null_a_in_band=1.000 p=0.008 q=0.024 bh_reject=1.000
partial ic by age atm_iv30:0 0.004 0.003 557 t=1.249 reported_only=1.000 note=age 0 = Q3's weekly dates
partial ic by age atm_iv30:1 0.001 0.003 556 t=0.528 reported_only=1.000
partial ic by age atm_iv30:2 0.002 0.003 556 t=0.535 reported_only=1.000
partial ic by age atm_iv30:3 -0.001 0.003 556 t=-0.319 reported_only=1.000
partial ic by age atm_iv30:4 0.005 0.004 455 t=1.284 reported_only=1.000
partial ic by age cp_iv_spread:0 0.006 0.002 557 t=2.416 reported_only=1.000 note=age 0 = Q3's weekly dates
partial ic by age cp_iv_spread:1 -0.001 0.003 556 t=-0.251 reported_only=1.000
partial ic by age cp_iv_spread:2 0.003 0.002 556 t=1.204 reported_only=1.000
partial ic by age cp_iv_spread:3 0.003 0.003 556 t=1.158 reported_only=1.000
partial ic by age cp_iv_spread:4 -0.006 0.002 455 t=-2.323 reported_only=1.000
partial ic by age iv_rv_spread:0 0.008 0.003 557 t=2.733 reported_only=1.000 note=age 0 = Q3's weekly dates
partial ic by age iv_rv_spread:1 0.005 0.003 556 t=1.767 reported_only=1.000
partial ic by age iv_rv_spread:2 -0.001 0.003 556 t=-0.293 reported_only=1.000
partial ic by age iv_rv_spread:3 -0.003 0.003 556 t=-1.088 reported_only=1.000
partial ic by age iv_rv_spread:4 0.005 0.004 455 t=1.524 reported_only=1.000
partial ic by age skew25:0 0.001 0.003 557 t=0.303 reported_only=1.000 note=age 0 = Q3's weekly dates
partial ic by age skew25:1 0.007 0.003 556 t=2.551 reported_only=1.000
partial ic by age skew25:2 0.002 0.003 556 t=0.834 reported_only=1.000
partial ic by age skew25:3 0.003 0.003 556 t=1.192 reported_only=1.000
partial ic by age skew25:4 0.003 0.003 455 t=0.964 reported_only=1.000
partial ic by year atm_iv30:2016 0.004 0.004 248 t=0.901 reported_only=1.000
partial ic by year atm_iv30:2017 0.009 0.005 251 t=1.964 reported_only=1.000
partial ic by year atm_iv30:2018 -0.004 0.004 251 t=-1.082 reported_only=1.000
partial ic by year atm_iv30:2019 -0.002 0.003 252 t=-0.682 reported_only=1.000
partial ic by year atm_iv30:2020 0.008 0.004 253 t=2.011 reported_only=1.000
partial ic by year atm_iv30:2021 -0.005 0.005 252 t=-1.068 reported_only=1.000
partial ic by year atm_iv30:2022 -0.001 0.005 251 t=-0.217 reported_only=1.000
partial ic by year atm_iv30:2023 -0.002 0.004 250 t=-0.591 reported_only=1.000
partial ic by year atm_iv30:2024 0.005 0.004 252 t=1.382 reported_only=1.000
partial ic by year atm_iv30:2025 0.007 0.004 250 t=1.639 reported_only=1.000
partial ic by year atm_iv30:2026 0.003 0.006 170 t=0.527 reported_only=1.000
partial ic by year cp_iv_spread:2016 -0.001 0.004 248 t=-0.233 reported_only=1.000
partial ic by year cp_iv_spread:2017 0.000 0.004 251 t=0.134 reported_only=1.000
partial ic by year cp_iv_spread:2018 0.002 0.003 251 t=0.796 reported_only=1.000
partial ic by year cp_iv_spread:2019 0.002 0.004 252 t=0.523 reported_only=1.000
partial ic by year cp_iv_spread:2020 0.008 0.003 253 t=2.323 reported_only=1.000
partial ic by year cp_iv_spread:2021 -0.002 0.003 252 t=-0.752 reported_only=1.000
partial ic by year cp_iv_spread:2022 -0.001 0.003 251 t=-0.222 reported_only=1.000
partial ic by year cp_iv_spread:2023 0.004 0.003 250 t=1.238 reported_only=1.000
partial ic by year cp_iv_spread:2024 0.003 0.004 252 t=0.781 reported_only=1.000
partial ic by year cp_iv_spread:2025 -0.005 0.003 250 t=-1.571 reported_only=1.000
partial ic by year cp_iv_spread:2026 0.006 0.005 170 t=1.240 reported_only=1.000
partial ic by year iv_rv_spread:2016 0.004 0.004 248 t=0.828 reported_only=1.000
partial ic by year iv_rv_spread:2017 0.010 0.004 251 t=2.614 reported_only=1.000
partial ic by year iv_rv_spread:2018 -0.006 0.004 251 t=-1.494 reported_only=1.000
partial ic by year iv_rv_spread:2019 -0.002 0.004 252 t=-0.597 reported_only=1.000
partial ic by year iv_rv_spread:2020 0.008 0.006 253 t=1.442 reported_only=1.000
partial ic by year iv_rv_spread:2021 -0.006 0.005 252 t=-1.178 reported_only=1.000
partial ic by year iv_rv_spread:2022 -0.001 0.005 251 t=-0.167 reported_only=1.000
partial ic by year iv_rv_spread:2023 0.001 0.005 250 t=0.116 reported_only=1.000
partial ic by year iv_rv_spread:2024 0.008 0.004 252 t=2.106 reported_only=1.000
partial ic by year iv_rv_spread:2025 0.012 0.005 250 t=2.471 reported_only=1.000
partial ic by year iv_rv_spread:2026 0.006 0.007 170 t=0.863 reported_only=1.000
partial ic by year skew25:2016 -0.002 0.004 248 t=-0.515 reported_only=1.000
partial ic by year skew25:2017 0.001 0.004 251 t=0.304 reported_only=1.000
partial ic by year skew25:2018 0.000 0.004 251 t=0.014 reported_only=1.000
partial ic by year skew25:2019 0.002 0.004 252 t=0.596 reported_only=1.000
partial ic by year skew25:2020 -0.001 0.004 253 t=-0.197 reported_only=1.000
partial ic by year skew25:2021 0.012 0.003 252 t=3.826 reported_only=1.000
partial ic by year skew25:2022 0.002 0.004 251 t=0.636 reported_only=1.000
partial ic by year skew25:2023 0.008 0.004 250 t=2.051 reported_only=1.000
partial ic by year skew25:2024 0.005 0.004 252 t=1.242 reported_only=1.000
partial ic by year skew25:2025 0.003 0.004 250 t=0.754 reported_only=1.000
partial ic by year skew25:2026 0.003 0.006 170 t=0.564 reported_only=1.000
partial ic credited atm_iv30 0.001 0.001 2680 t=1.044 reported_only=1.000
partial ic credited cp_iv_spread 0.003 0.001 2680 t=2.618 reported_only=1.000
partial ic credited iv_rv_spread 0.003 0.001 2680 t=2.433 reported_only=1.000
partial ic credited skew25 0.003 0.001 2680 t=2.747 reported_only=1.000
partial ic h5 schedule atm_iv30 -0.001 0.003 557 t=-0.325 reported_only=1.000
partial ic h5 schedule cp_iv_spread 0.002 0.003 557 t=0.614 reported_only=1.000
partial ic h5 schedule iv_rv_spread 0.001 0.003 557 t=0.190 reported_only=1.000
partial ic h5 schedule skew25 0.007 0.003 557 t=2.505 reported_only=1.000
partial ic score only atm_iv30 -0.002 0.004 2680 t=-0.554 reported_only=1.000 label=Q3's statistic (score-only residualisation) on the traded leg — exposed to the volatility rediscovery the controls exist to remove
partial ic score only cp_iv_spread 0.001 0.001 2680 t=0.408 reported_only=1.000 label=Q3's statistic (score-only residualisation) on the traded leg — exposed to the volatility rediscovery the controls exist to remove
partial ic score only iv_rv_spread 0.004 0.002 2680 t=2.159 reported_only=1.000 label=Q3's statistic (score-only residualisation) on the traded leg — exposed to the volatility rediscovery the controls exist to remove
partial ic score only skew25 0.006 0.002 2680 t=3.376 reported_only=1.000 label=Q3's statistic (score-only residualisation) on the traded leg — exposed to the volatility rediscovery the controls exist to remove
partial ic survivor atm_iv30 0.002 0.001 2680 t=1.874 reported_only=1.000
partial ic survivor cp_iv_spread 0.001 0.001 2680 t=1.019 reported_only=1.000
partial ic survivor iv_rv_spread 0.004 0.001 2680 t=2.860 reported_only=1.000
partial ic survivor skew25 0.003 0.001 2680 t=2.524 reported_only=1.000
survivor accounting by_year — — — by_year=[{'year': 2016, 'member_sessions': 123944, 'no_indicator_rows': 15, 'survivor': 102191, 'nan_routed': 21690, 'nan_routed_delisted': 19940, 'excluded_other_feature': 48, 'scored_with_chain': 110602, 'routed_with_chain': 18217}, {'year': 2017, 'member_sessions': 125382, 'no_indicator_rows': 0, 'survivor': 105251, 'nan_routed': 20048, 'nan_routed_delisted': 18166, 'excluded_other_feature': 83, 'scored_with_chain': 113447, 'routed_with_chain': 17329}, {'year': 2018, 'member_sessions': 125304, 'no_indicator_rows': 2, 'survivor': 109023, 'nan_routed': 16272, 'nan_routed_delisted': 14365, 'excluded_other_feature': 7, 'scored_with_chain': 113511, 'routed_with_chain': 13665}, {'year': 2019, 'member_sessions': 125815, 'no_indicator_rows': 20, 'survivor': 112488, 'nan_routed': 13293, 'nan_routed_delisted': 11673, 'excluded_other_feature': 14, 'scored_with_chain': 115787, 'routed_with_chain': 11570}, {'year': 2020, 'member_sessions': 126295, 'no_indicator_rows': 0, 'survivor': 115896, 'nan_routed': 10395, 'nan_routed_delisted': 8852, 'excluded_other_feature': 4, 'scored_with_chain': 118472, 'routed_with_chain': 9079}, {'year': 2021, 'member_sessions': 125913, 'no_indicator_rows': 4, 'survivor': 117676, 'nan_routed': 8227, 'nan_routed_delisted': 6538, 'excluded_other_feature': 6, 'scored_with_chain': 118764, 'routed_with_chain': 7065}, {'year': 2022, 'member_sessions': 125440, 'no_indicator_rows': 80, 'survivor': 119030, 'nan_routed': 6204, 'nan_routed_delisted': 4828, 'excluded_other_feature': 126, 'scored_with_chain': 119971, 'routed_with_chain': 5887}, {'year': 2023, 'member_sessions': 124930, 'no_indicator_rows': 27, 'survivor': 119799, 'nan_routed': 4845, 'nan_routed_delisted': 3554, 'excluded_other_feature': 259, 'scored_with_chain': 120185, 'routed_with_chain': 4728}, {'year': 2024, 'member_sessions': 125946, 'no_indicator_rows': 61, 'survivor': 122434, 'nan_routed': 3034, 'nan_routed_delisted': 1938, 'excluded_other_feature': 417, 'scored_with_chain': 120778, 'routed_with_chain': 2871}, {'year': 2025, 'member_sessions': 124925, 'no_indicator_rows': 6162, 'survivor': 116818, 'nan_routed': 1735, 'nan_routed_delisted': 1124, 'excluded_other_feature': 210, 'scored_with_chain': 114787, 'routed_with_chain': 1623}, {'year': 2026, 'member_sessions': 86841, 'no_indicator_rows': 6459, 'survivor': 79517, 'nan_routed': 712, 'nan_routed_delisted': 328, 'excluded_other_feature': 153, 'scored_with_chain': 77936, 'routed_with_chain': 584}] lost_to_controls={'2016': 0, '2017': 0, '2018': 0, '2019': 0, '2020': 0, '2021': 0, '2022': 0, '2023': 0, '2024': 0, '2025': 0, '2026': 0}
verdict all 1.000 — 2680 PASS band_ok=1.000 p_finite=1.000 q3_verdict=PASS joint_reading=Q3 PASS, Q3A PASS: Q3A alone governs any follow-on; neither is quoted as confirming the other fail_wording=None params={'block': 'Q3A', 'model': '09d8c916-37bb-4807-a2b6-266c46d0950d', 'p1_run': 'b9ca7ceb-3a78-4ff9-9fc7-b9a50636ca74', 'prereg': 'ce9061e5-3a72-4e24-9f29-09451c744ffc', 'registered_text_sha256': 'b8f43e25e2d3427ca5e8128cf7c7a11fe2d62ae304894331ed0c8943b217fcb9', 'registered_blob': 'e45c74add3d6a7eaf7f85d9e362fa888496129d4', 'script_blob_sha': '7fdfbcd654555be3b7db0776ada55ce630b5083c', 'script_committed': '2026-10-02 16:02:36', 'q3_started': '2026-10-02 16:03', 'git': '4e8476313c57575252e5cf311a15c69263f68bb1', 'build_a': 'logs/q3a/build-A-20261002-160413', 'build_b': 'logs/q3a/build-B-20261002-160413', 'panel_sha256': '47dd5171c9cf5ce575cd01fbfbeef03b826f17156ae317836f0aac55877c3346', 'weekly_sha256': 'cbad93c04785e59bb89a98df169ca9d7eb37dc35bfb4b1da971d57ee09fc5997', 'build_a_built_at': '2026-10-02 16:04:38', 'build_b_built_at': '2026-10-02 16:05:07', 'price_max_a': '2026-10-01', 'price_max_b': '2026-10-01', 'compute_dirs': ['logs/q3a/compute-1-20261002-160413', 'logs/q3a/compute-2-20261002-160413'], 'compute_digests': {'daily.csv': '805ba42e97970882686384e0729f9a224090d4173524b80cfc643efe96f49c7d', 'report.txt': 'da4a4cf3907e529407451a2910561ee002b2a9929a4e4d0ba0d447bbd0d01217', 'results.json': '1c675541868a1efcaa828a920b2cd3d1fa94ef1689bd846ca934569cbe511984'}, 'n_null_a': 20, 'n_null_b': 200, 'seed': 42, 'perm_seed': 24263, 'fdr_q': 0.1, 'min_names': 100, 'band_sd': [0.7, 1.4], 'band_mean': [-0.7, 0.7], 'coverage': 0.998894337428114, 'summarize_chain_sha': '458eb5baed545b9b4bc02896f287b9ea6731dd140b5456297af8a568cefc4603', 'parse_reduce_sha': '8ccf682f7cc2455a53bf7a54d5ec4688c96e2957f6ff3145e414e17452a7eee3', 'sklearn': '1.9.0'}

Decision rule fixed in docs/pre-registered-Q3A.md at commit 7b8eba20, 2026-09-29 16:29.

Block Q4

Phase Q: implied volatility as new cross-sectional information

3 statistics · run d7ac262b · 2026-10-02 16:03
All 3 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
walk forward ic frozen_gbm 0.014 0.004 453 top_decile_bps=3.023 reported_only=1.000
walk forward ic gbm19_wf 0.001 0.005 453 top_decile_bps=8.700 reported_only=1.000
walk forward ic gbm23_wf 0.003 0.005 453 top_decile_bps=9.634 reported_only=1.000

Decision rule fixed in docs/pre-registered-Q.md at commit 67c5de05, 2026-09-10 09:11.

Block Q5

Does option activity — volume, put share, open interest, implied-vol changes — add rank information on the traded leg beyond the score and realised risk?

PASS 41 statistics · run 314f67da · 2026-10-02 16:56

The row the verdict was written on

verdict · all 1.000 n 2675 → PASS
All 41 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
clause3 paired net diff bps pc_oi_ratio -0.967 0.481 2681 adverse_end=bottom quintile (observed IC > 0) clause3_met=0.000 construction={'gross_mean': 4.0811886485673625, 'n_held_mean': 36.129429317418875, 'net_mean': 1.8393772357625116, 'turnover_mean': 0.2241811412804851} cost_bps_per_unit_turnover=10.000 dates=['2016-01-08', '2026-09-08'] ex_c10={'mean': -0.9912851746816378, 'n': 2379, 'p': 0.04258452666935073, 'se': 0.4888567246649992, 't': -2.0277621737962996} halves={'first': {'mean': -0.9885046636042831, 'n': 1340, 'p': 0.06570283698269327, 'se': 0.5371007097308947, 't': -1.8404456477064735}, 'first_dates': ['2016-01-08', '2021-05-05'], 'second': {'mean': -0.9464597908079091, 'n': 1341, 'p': 0.21187251931907558, 'se': 0.7581181913906027, 't': -1.248433030042235}, 'second_dates': ['2021-05-06', '2026-09-08']} production={'gross_mean': 4.829791275374525, 'n_held_mean': 45.06415516598284, 'net_mean': 2.806851621701768, 'turnover_mean': 0.20229396536727576} t=-2.012
clause3 paired net diff bps put_vol_share 0.097 0.390 2681 adverse_end=bottom quintile (observed IC > 0) clause3_met=0.000 construction={'gross_mean': 5.273391338810665, 'n_held_mean': 38.143976128310335, 'net_mean': 2.903372333575402, 'turnover_mean': 0.23700190052352613} cost_bps_per_unit_turnover=10.000 dates=['2016-01-08', '2026-09-08'] ex_c10={'mean': -0.025399936590044365, 'n': 2379, 'p': 0.9494002327604311, 'se': 0.4002513053207356, 't': -0.06345997190362813} halves={'first': {'mean': -0.2357332310051178, 'n': 1340, 'p': 0.6462457609123755, 'se': 0.5135980908244191, 't': -0.458983853749773}, 'first_dates': ['2016-01-08', '2021-05-05'], 'second': {'mean': 0.42852688894860047, 'n': 1341, 'p': 0.4589328314397443, 'se': 0.578617146157622, 't': 0.7406052374947506}, 'second_dates': ['2021-05-06', '2026-09-08']} production={'gross_mean': 4.829791275374525, 'n_held_mean': 45.06415516598284, 'net_mean': 2.806851621701768, 'turnover_mean': 0.20229396536727576} t=0.247
gate coverage 1.000 — 278566 min=0.950 passed=1.000 q5_schedule={'coverage': 0.9999964294130669, 'member_weeks': 280066, 'summarised': 280065} summarised=278,566.000
gate reproduction_b9ca7ceb 0.000 — 1210935 enforced_rows=1,210,935.000 heal_cut=2026-08-10 identity_cut=2025-07-28 identity_only_panel=0.000 identity_only_stored=0.000 identity_rows=1,093,176.000 identity_stored_rows=1,093,176.000 max_rel_dev=0.000 passed=1.000 rtol=0.000 ruling=Q3A owner ruling 1, 2026-10-02 15:26 tail_deviating=64.000 tail_max_rel_dev=11.618 tail_rows=10,776.000
null a t d4_cp_iv_spread -0.022 — 20 band_mean=[-0.7, 0.7] band_sd=[0.7, 1.4] in_band=1.000 sd_t=1.303 t=[-1.4043011055479035, -0.2281908942803271, 1.610032979629181, -0.4508084145679816, 1.733941929269845, -0.3997725875856025, -1.5394346290091536, 0.8482257493612418, 1.5245288689030498, 0.0478655901328368, 0.16955431523500095, 0.055866433837786875, -2.6221647190158244, 0.32956862299848033, -0.11411503578512065, -0.6648197379059251, 2.464881305680106, -2.1160825904790963, -0.46186753773318534, 0.7788072350421643]
null a t os_volume 0.187 — 20 band_mean=[-0.7, 0.7] band_sd=[0.7, 1.4] in_band=1.000 sd_t=0.951 t=[1.585288591417686, 0.6893789929968873, -1.0238756319503743, -0.9994654410673516, 1.042003743375761, 0.2615080532525225, -0.2300345924948983, 2.2487037375771286, -0.860317503764535, 0.32907428146821044, 0.6168124631659727, -0.27290400525479286, 0.9054255453003233, 0.015508676770734028, 1.5106304458782542, 0.14732826590564702, 0.1897490512164405, -0.46548857819483414, -1.0854113273013772, -0.8587139430193625]
null a t pc_oi_ratio 0.171 — 20 band_mean=[-0.7, 0.7] band_sd=[0.7, 1.4] in_band=1.000 sd_t=0.921 t=[1.3181694980230496, 1.2762025488444246, 1.5240834599764725, 0.47819799848244127, 1.704159454601486, -0.9395388186392419, 0.4219147509027379, 0.11155062157217172, -0.06385385031658948, 1.7153351143656106, -0.24360325519940462, 0.1467625429124123, -0.831461283840156, -0.9640784507223719, 0.03804644782586628, -0.33912121318371663, -0.6083131779207858, -1.245288579719921, 0.1949738544313151, -0.27908234136351096]
null a t put_vol_share 0.003 — 20 band_mean=[-0.7, 0.7] band_sd=[0.7, 1.4] in_band=1.000 sd_t=1.251 t=[1.4325512429178555, -0.5613613472989992, -1.6509999299739238, 2.749200518876184, 0.17770227520515275, 2.429859441997294, -0.6131868651213273, -0.7285833474972747, -0.6412301387934779, -1.802757067168012, -0.720256585994154, -1.7196755655970135, -0.4304910006515616, 0.579810204789596, 0.7261092948073605, 0.03929281959845663, -0.4599648529053031, 0.02337769329763477, -0.11709678489758936, 1.3483432390143433]
partial ic d4_cp_iv_spread 0.001 0.001 2675 bh_reject=0.000 literature_sign=+ null_a_in_band=1.000 null_a_mean_t=-0.022 null_a_sd_t=1.303 p=0.236 q=0.314 share_positive=0.510 t=1.186
partial ic os_volume -0.000 0.001 2694 bh_reject=0.000 literature_sign=- null_a_in_band=1.000 null_a_mean_t=0.187 null_a_sd_t=0.951 p=0.887 q=0.887 share_positive=0.503 t=-0.142
partial ic pc_oi_ratio 0.003 0.001 2694 bh_reject=1.000 literature_sign=? null_a_in_band=1.000 null_a_mean_t=0.171 null_a_sd_t=0.921 p=0.003 q=0.008 share_positive=0.523 t=3.000
partial ic put_vol_share 0.003 0.001 2694 bh_reject=1.000 literature_sign=- null_a_in_band=1.000 null_a_mean_t=0.003 null_a_sd_t=1.251 p=0.004 q=0.008 share_positive=0.519 t=2.863
partial ic block20 d4_cp_iv_spread 0.001 0.001 2675 label=full series, block_se at block 20 p=0.228 reported_only=1.000 t=1.205
partial ic block20 os_volume -0.000 0.001 2694 label=full series, block_se at block 20 p=0.881 reported_only=1.000 t=-0.150
partial ic block20 pc_oi_ratio 0.003 0.001 2694 label=full series, block_se at block 20 p=0.004 reported_only=1.000 t=2.906
partial ic block20 put_vol_share 0.003 0.001 2694 label=full series, block_se at block 20 p=0.005 reported_only=1.000 t=2.817
partial ic credited d4_cp_iv_spread 0.002 0.001 2675 label=credited close-to-close h=1 (stored fwd_ret_sector_excess) p=0.091 reported_only=1.000 t=1.690
partial ic credited os_volume 0.000 0.001 2694 label=credited close-to-close h=1 (stored fwd_ret_sector_excess) p=0.944 reported_only=1.000 t=0.070
partial ic credited pc_oi_ratio 0.004 0.001 2694 label=credited close-to-close h=1 (stored fwd_ret_sector_excess) p=0.002 reported_only=1.000 t=3.093
partial ic credited put_vol_share 0.003 0.001 2694 label=credited close-to-close h=1 (stored fwd_ret_sector_excess) p=0.003 reported_only=1.000 t=3.009
partial ic ex c10 d4_cp_iv_spread 0.001 0.001 2360 label=ex-C10 (sessions before 2025-06-26) p=0.191 reported_only=1.000 t=1.308
partial ic ex c10 os_volume -0.001 0.001 2379 label=ex-C10 (sessions before 2025-06-26) p=0.602 reported_only=1.000 t=-0.522
partial ic ex c10 pc_oi_ratio 0.003 0.001 2379 label=ex-C10 (sessions before 2025-06-26) p=0.007 reported_only=1.000 t=2.706
partial ic ex c10 put_vol_share 0.003 0.001 2379 label=ex-C10 (sessions before 2025-06-26) p=0.005 reported_only=1.000 t=2.785
partial ic half 1 d4_cp_iv_spread 0.003 0.001 1337 dates=['2016-02-05', '2021-05-27'] label=first chronological half (first n // 2 sessions of each series) p=0.017 reported_only=1.000 t=2.392
partial ic half 1 os_volume -0.003 0.002 1347 dates=['2016-01-08', '2021-05-14'] label=first chronological half (first n // 2 sessions of each series) p=0.138 reported_only=1.000 t=-1.482
partial ic half 1 pc_oi_ratio 0.004 0.002 1347 dates=['2016-01-08', '2021-05-14'] label=first chronological half (first n // 2 sessions of each series) p=0.021 reported_only=1.000 t=2.314
partial ic half 1 put_vol_share 0.002 0.001 1347 dates=['2016-01-08', '2021-05-14'] label=first chronological half (first n // 2 sessions of each series) p=0.103 reported_only=1.000 t=1.631
partial ic half 2 d4_cp_iv_spread -0.001 0.001 1338 dates=['2021-05-28', '2026-09-25'] label=second chronological half p=0.456 reported_only=1.000 t=-0.745
partial ic half 2 os_volume 0.002 0.002 1347 dates=['2021-05-17', '2026-09-25'] label=second chronological half p=0.226 reported_only=1.000 t=1.211
partial ic half 2 pc_oi_ratio 0.003 0.002 1347 dates=['2021-05-17', '2026-09-25'] label=second chronological half p=0.068 reported_only=1.000 t=1.823
partial ic half 2 put_vol_share 0.003 0.001 1347 dates=['2021-05-17', '2026-09-25'] label=second chronological half p=0.028 reported_only=1.000 t=2.193
partial ic plus skew25 iv rv d4_cp_iv_spread 0.002 0.001 2675 label=with Q3A's skew25 and iv_rv_spread added to the controls (decile dummies) p=0.064 reported_only=1.000 t=1.849
partial ic plus skew25 iv rv os_volume -0.001 0.001 2694 label=with Q3A's skew25 and iv_rv_spread added to the controls (decile dummies) p=0.510 reported_only=1.000 t=-0.659
partial ic plus skew25 iv rv pc_oi_ratio 0.004 0.001 2694 label=with Q3A's skew25 and iv_rv_spread added to the controls (decile dummies) p=0.000 reported_only=1.000 t=3.528
partial ic plus skew25 iv rv put_vol_share 0.003 0.001 2694 label=with Q3A's skew25 and iv_rv_spread added to the controls (decile dummies) p=0.004 reported_only=1.000 t=2.861
partial ic survivor d4_cp_iv_spread 0.000 0.001 2675 label=survivor-only panel (all 19 features finite) p=0.643 reported_only=1.000 t=0.464
partial ic survivor os_volume -0.001 0.001 2694 label=survivor-only panel (all 19 features finite) p=0.613 reported_only=1.000 t=-0.506
partial ic survivor pc_oi_ratio 0.004 0.001 2694 label=survivor-only panel (all 19 features finite) p=0.002 reported_only=1.000 t=3.126
partial ic survivor put_vol_share 0.002 0.001 2694 label=survivor-only panel (all 19 features finite) p=0.024 reported_only=1.000 t=2.255
verdict all 1.000 — 2675 PASS band_ok=1.000 bh_rejected=['put_vol_share', 'pc_oi_ratio'] clause3={'pc_oi_ratio': False, 'put_vol_share': False} fail_wording=None p_finite=1.000 tradeability_note=clause 3 is not met by either BH-rejected feature's registered construction, so no Q5 construction can meet the tradeability rule whatever clause 2 returns

Decision rule fixed in docs/pre-registered-Q5.md at commit ddc932a7, 2026-10-02 16:39.

Block Q5-7

Is any options construction good enough to trade — a paired net gain over the book in both halves and outside the contaminated region?

NONE QUALIFIES 5 statistics · run 314f67da · 2026-10-02 16:56

The row the verdict was written on

verdict · all 0.000 n — → NONE QUALIFIES
All 5 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
Q5:clause3 paired net diff bps pc_oi_ratio -0.967 0.481 2681 adverse_end=bottom quintile (observed IC > 0) clause3_met=0.000 construction={'gross_mean': 4.0811886485673625, 'n_held_mean': 36.129429317418875, 'net_mean': 1.8393772357625116, 'turnover_mean': 0.2241811412804851} cost_bps_per_unit_turnover=10.000 dates=['2016-01-08', '2026-09-08'] ex_c10={'mean': -0.9912851746816378, 'n': 2379, 'p': 0.04258452666935073, 'se': 0.4888567246649992, 't': -2.0277621737962996} halves={'first': {'mean': -0.9885046636042831, 'n': 1340, 'p': 0.06570283698269327, 'se': 0.5371007097308947, 't': -1.8404456477064735}, 'first_dates': ['2016-01-08', '2021-05-05'], 'second': {'mean': -0.9464597908079091, 'n': 1341, 'p': 0.21187251931907558, 'se': 0.7581181913906027, 't': -1.248433030042235}, 'second_dates': ['2021-05-06', '2026-09-08']} production={'gross_mean': 4.829791275374525, 'n_held_mean': 45.06415516598284, 'net_mean': 2.806851621701768, 'turnover_mean': 0.20229396536727576} t=-2.012
Q5:clause3 paired net diff bps put_vol_share 0.097 0.390 2681 adverse_end=bottom quintile (observed IC > 0) clause3_met=0.000 construction={'gross_mean': 5.273391338810665, 'n_held_mean': 38.143976128310335, 'net_mean': 2.903372333575402, 'turnover_mean': 0.23700190052352613} cost_bps_per_unit_turnover=10.000 dates=['2016-01-08', '2026-09-08'] ex_c10={'mean': -0.025399936590044365, 'n': 2379, 'p': 0.9494002327604311, 'se': 0.4002513053207356, 't': -0.06345997190362813} halves={'first': {'mean': -0.2357332310051178, 'n': 1340, 'p': 0.6462457609123755, 'se': 0.5135980908244191, 't': -0.458983853749773}, 'first_dates': ['2016-01-08', '2021-05-05'], 'second': {'mean': 0.42852688894860047, 'n': 1341, 'p': 0.4589328314397443, 'se': 0.578617146157622, 't': 0.7406052374947506}, 'second_dates': ['2021-05-06', '2026-09-08']} production={'gross_mean': 4.829791275374525, 'n_held_mean': 45.06415516598284, 'net_mean': 2.806851621701768, 'turnover_mean': 0.20229396536727576} t=0.247
Q6b:clause3 paired net bps iv_minus_ew -1.924 0.828 2680 t=-2.323 met=0.000
Q7:clause3 paired net bps gated_minus_every_day 0.574 1.503 — t=0.382 first_half=1.432 second_half=-0.283 ex_c10=1.453 gross=-3.091 met=0.000
verdict all 0.000 — — NONE QUALIFIES note=clause 3 fails for every construction (Q5 vetoes, Q6b IV-weighted, Q7 gated), so no construction is good enough to trade and no live track starts

Block Q6a

Does implied volatility forecast a stock's coming volatility better than its trailing realised volatility?

IV FORECASTS BETTER 7 statistics · run 314f67da · 2026-10-02 16:56

The row the verdict was written on

verdict · all 1.000 n 2680 → IV FORECASTS BETTER
All 7 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
d spearman iv minus rv all 0.131 0.005 2680 t=25.888 block=21.000 rule=IV FORECASTS BETTER iff mean d > 0 and t >= 2
reported ex_c10 0.132 0.006 2379 t=23.912 reported_only=1.000
reported half_1 0.133 0.008 1340 t=17.122 reported_only=1.000
reported half_2 0.129 0.006 1340 t=20.204 reported_only=1.000
reported rho_iv 0.797 0.006 2680 t=131.713 reported_only=1.000
reported rho_rv 0.666 0.008 2680 t=81.483 reported_only=1.000
verdict all 1.000 — 2680 IV FORECASTS BETTER

Block Q6b

Does weighting the book by inverse implied volatility beat equal weight and inverse realised volatility, net?

NOT HELPS 7 statistics · run 314f67da · 2026-10-02 16:56

The row the verdict was written on

verdict · all 0.000 n 2680 → NOT HELPS
All 7 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
delta ir iv_minus_ew -0.243 0.124 2680 p_one_sided=0.975
delta ir iv_minus_rv 0.027 0.077 2680 p_one_sided=0.333
net ir ew 0.446 — 2680 cost_bps_per_turnover=10.000
net ir iv 0.203 — 2680 cost_bps_per_turnover=10.000
net ir rv 0.175 — 2680 cost_bps_per_turnover=10.000
paired net mean bps iv_minus_ew -1.924 0.828 2680 t=-2.323 margin_bps=-1.624 clauses={'1_dir_iv_ew_pos_p_le_0.05': False, '2_dir_iv_rv_pos_p_le_0.05': False, '3_noninferior_mean': False, 'noninferiority_margin_bps': -1.6237383421483287}
verdict all 0.000 — 2680 NOT HELPS r3_trials=3.000

Block Q7

Does a market-wide implied-dispersion gate beat the realised-dispersion gate?

ESTABLISHED 7 statistics · run 314f67da · 2026-10-02 16:56

The row the verdict was written on

verdict · all 1.000 n 2680 → ESTABLISHED
All 7 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
family p studentized_max 0.015 — 2680 z_max=2.757
gate delta bps I 15.262 — 2680 z=2.757 p_one_sided_rotation=0.011 block_t=1.513 on_days=330.000
gate delta bps R 11.318 — 2680 z=2.742 p_one_sided_rotation=0.004 block_t=2.470 on_days=977.000
reported implied_correlation_gate 8.436 6.708 579 p_one_sided_rotation=0.014 reported_only=1.000
reproduction ag007 11.298 — 977 recorded=11.316 guard_bps=0.500 holds=1.000
spy coverage weeks 0.993 — 560 usable=556.000 unusable_weeks=['2019-04-26', '2020-02-21', '2021-08-13', '2022-01-14']
verdict all 1.000 — 2680 ESTABLISHED delta_I=15.262 delta_R=11.318 p_family=0.015

Decision rule fixed in docs/pre-registered-Q.md at commit 67c5de05, 2026-09-10 09:11.

Block R1

What are the factor alphas when the market regressor is aligned to the same window as the return it explains (FINDINGS C8)?

60 statistics · run d86ac3cf · 2026-09-19 14:23
All 60 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
baseline max abs dev bps old_spec_vs_recorded 1.455 — 2692 reported_only=1.000 worst_spec=J1_spread n_recorded=2,653.000 tolerance_bps=0.050 reproduces=0.000
hac5 coefficient J1_spread:aligned:LMH_vol 0.085 0.031 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=J1_spread t=2.761
hac5 coefficient J1_spread:aligned:MKT 0.148 0.036 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=J1_spread t=4.109
hac5 coefficient J1_spread:aligned:MOM 0.272 0.069 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=J1_spread t=3.948
hac5 coefficient J1_spread:aligned:SIZE -0.031 0.067 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=J1_spread t=-0.461
hac5 coefficient J1_spread:aligned:TREND -0.556 0.072 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=J1_spread t=-7.741
hac5 coefficient J1_spread:aligned:alpha 3.925 2.116 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=J1_spread t=1.855
hac5 coefficient J1_spread:old:LMH_vol 0.049 0.029 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=J1_spread t=1.694
hac5 coefficient J1_spread:old:MKT -0.037 0.033 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=J1_spread t=-1.110
hac5 coefficient J1_spread:old:MOM 0.284 0.069 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=J1_spread t=4.081
hac5 coefficient J1_spread:old:SIZE -0.043 0.067 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=J1_spread t=-0.643
hac5 coefficient J1_spread:old:TREND -0.578 0.072 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=J1_spread t=-7.988
hac5 coefficient J1_spread:old:alpha 4.866 2.081 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=J1_spread t=2.339
hac5 coefficient K1_long_raw:aligned:MKT 1.465 0.038 2692 reported_only=1.000 r_squared=0.629 alignment=aligned spec=K1_long_raw t=38.542
hac5 coefficient K1_long_raw:aligned:alpha 0.645 2.213 2692 reported_only=1.000 r_squared=0.629 alignment=aligned spec=K1_long_raw t=0.291
hac5 coefficient K1_long_raw:old:MKT -0.165 0.090 2692 reported_only=1.000 r_squared=0.008 alignment=old spec=K1_long_raw t=-1.840
hac5 coefficient K1_long_raw:old:alpha 10.774 3.941 2692 reported_only=1.000 r_squared=0.008 alignment=old spec=K1_long_raw t=2.734
hac5 coefficient K1_selection:aligned:MKT 0.342 0.025 2692 reported_only=1.000 r_squared=0.157 alignment=aligned spec=K1_selection t=13.821
hac5 coefficient K1_selection:aligned:alpha 1.685 1.557 2692 reported_only=1.000 r_squared=0.157 alignment=aligned spec=K1_selection t=1.082
hac5 coefficient K1_selection:old:MKT -0.034 0.029 2692 reported_only=1.000 r_squared=0.002 alignment=old spec=K1_selection t=-1.152
hac5 coefficient K1_selection:old:alpha 4.024 1.752 2692 reported_only=1.000 r_squared=0.002 alignment=old spec=K1_selection t=2.297
hac5 coefficient K1_universe:aligned:MKT 1.068 0.013 2692 reported_only=1.000 r_squared=0.903 alignment=aligned spec=K1_universe t=85.248
hac5 coefficient K1_universe:aligned:alpha -0.823 0.752 2692 reported_only=1.000 r_squared=0.903 alignment=aligned spec=K1_universe t=-1.093
hac5 coefficient K1_universe:old:MKT -0.127 0.066 2692 reported_only=1.000 r_squared=0.013 alignment=old spec=K1_universe t=-1.924
hac5 coefficient K1_universe:old:alpha 6.602 2.464 2692 reported_only=1.000 r_squared=0.013 alignment=old spec=K1_universe t=2.679
hac5 coefficient K2_novalue:aligned:LMH_vol 0.085 0.031 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=K2_novalue t=2.761
hac5 coefficient K2_novalue:aligned:MKT 0.148 0.036 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=K2_novalue t=4.109
hac5 coefficient K2_novalue:aligned:MOM 0.272 0.069 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=K2_novalue t=3.948
hac5 coefficient K2_novalue:aligned:SIZE -0.031 0.067 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=K2_novalue t=-0.461
hac5 coefficient K2_novalue:aligned:TREND -0.556 0.072 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=K2_novalue t=-7.741
hac5 coefficient K2_novalue:aligned:alpha 3.925 2.116 2692 reported_only=1.000 r_squared=0.285 alignment=aligned spec=K2_novalue t=1.855
hac5 coefficient K2_novalue:old:LMH_vol 0.049 0.029 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=K2_novalue t=1.694
hac5 coefficient K2_novalue:old:MKT -0.037 0.033 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=K2_novalue t=-1.110
hac5 coefficient K2_novalue:old:MOM 0.284 0.069 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=K2_novalue t=4.081
hac5 coefficient K2_novalue:old:SIZE -0.043 0.067 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=K2_novalue t=-0.643
hac5 coefficient K2_novalue:old:TREND -0.578 0.072 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=K2_novalue t=-7.988
hac5 coefficient K2_novalue:old:alpha 4.866 2.081 2692 reported_only=1.000 r_squared=0.273 alignment=old spec=K2_novalue t=2.339
hac5 coefficient K2_value:aligned:LMH_vol 0.079 0.031 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=2.571
hac5 coefficient K2_value:aligned:MKT 0.147 0.036 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=4.049
hac5 coefficient K2_value:aligned:MOM 0.212 0.070 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=3.021
hac5 coefficient K2_value:aligned:SIZE 0.016 0.072 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=0.218
hac5 coefficient K2_value:aligned:TREND -0.550 0.072 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=-7.629
hac5 coefficient K2_value:aligned:VALUE -0.127 0.047 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=-2.704
hac5 coefficient K2_value:aligned:alpha 4.181 2.092 2692 reported_only=1.000 r_squared=0.291 alignment=aligned spec=K2_value t=1.998
hac5 coefficient K2_value:old:LMH_vol 0.042 0.029 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=1.486
hac5 coefficient K2_value:old:MKT -0.031 0.033 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=-0.928
hac5 coefficient K2_value:old:MOM 0.225 0.072 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=3.122
hac5 coefficient K2_value:old:SIZE 0.002 0.072 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=0.031
hac5 coefficient K2_value:old:TREND -0.572 0.073 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=-7.850
hac5 coefficient K2_value:old:VALUE -0.125 0.047 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=-2.649
hac5 coefficient K2_value:old:alpha 5.077 2.060 2692 reported_only=1.000 r_squared=0.280 alignment=old spec=K2_value t=2.464
hac5 coefficient book_raw_open_to_open:aligned:SPY_o2o 1.585 0.042 2685 reported_only=1.000 r_squared=0.637 alignment=aligned spec=book_raw_open_to_open dates=P3 t=37.964
hac5 coefficient book_raw_open_to_open:aligned:alpha 1.424 2.266 2685 reported_only=1.000 r_squared=0.637 alignment=aligned spec=book_raw_open_to_open dates=P3 t=0.628
input bps j1_raw_spread_bps 5.632 — 0 reported_only=1.000
input bps k1_long_raw_bps 9.756 — 0 reported_only=1.000
input bps k1_long_vs_universe_bps 3.815 — 0 reported_only=1.000
input bps k1_spy_bps 6.162 — 0 reported_only=1.000
input bps k1_spy_fwd_bps 6.219 — 0 reported_only=1.000
input bps k1_universe_ew_bps 5.817 — 0 reported_only=1.000
input bps k2_raw_spread_bps 5.632 — 0 reported_only=1.000

Decision rule fixed in docs/pre-registered-R.md at commit 9f9b60fc, 2026-09-19 14:21.

Block R2

Does the book's overnight alpha survive a third night?

all: PERSISTSnight3: PERSISTS 14 statistics · run d86ac3cf · 2026-09-19 14:23

The rows the verdict was written on

night3 over overnight next · all 0.797 n 2685 → PERSISTS
verdict · night3 0.005 n 2685 → PERSISTS
All 14 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
breakeven bps daily_book 24.054 — 2685 reported_only=1.000
breakeven bps tranche2 21.288 — 2685 reported_only=1.000
compounding identity max abs dev intraday2*night3 == oo23 0.000 — 1345101 reported_only=1.000
long book bps hold2 6.902 3.340 2685 marks=('open', 1)->('open', 3) decision_bearing=0.000
long book bps implementable 4.857 1.832 2685 reported_only=1.000
long book bps intraday2 -1.157 1.382 2685 marks=('open', 2)->('close', 2) decision_bearing=0.000
long book bps night3 3.398 0.936 2685 marks=('close', 2)->('open', 3) decision_bearing=1.000
long book bps overnight_next 4.263 0.986 2685 marks=('close', 1)->('open', 2) decision_bearing=0.000
night3 over overnight next all 0.797 — 2685 PERSISTS ci_excludes_zero=1.000 floor=0.500 permutation_p=0.005
null pct95 bps night3 0.589 — 200 null_mean=-0.014
replaced fraction daily 0.202 — 2684 reported_only=1.000 convention=C3 per-leg, charged once
replaced fraction lag2 0.324 — 2683 reported_only=1.000
tranche2 nav turnover per_day 0.162 — 2683 reported_only=1.000 tickets_per_day=29.216 daily_book_tickets_per_day=18.199
verdict night3 0.005 — 2685 PERSISTS p_definition=(1 + #{null >= observed}) / (draws + 1), one-sided upper over 200 within-date permutation draws; floor 1/201 bh_q=0.015 bh_reject=1.000

Decision rule fixed in docs/pre-registered-R.md at commit 9f9b60fc, 2026-09-19 14:21.

Block R3

Does the ranking order names inside its own top — the prerequisite for holding fewer of them?

within_top_ic: GATE CLOSEDall: GATE CLOSED 18 statistics · run d86ac3cf · 2026-09-19 14:23

The rows the verdict was written on

verdict · within_top_ic 0.965 n 2685 → GATE CLOSED
within top ic · all -0.004± 0.004 n 2685 → GATE CLOSED
All 18 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
decile profile bps decile:1 5.429 1.900 2685 reported_only=1.000 trials=15.000
decile profile bps decile:10 -1.422 1.891 2685 reported_only=1.000 trials=15.000
decile profile bps decile:2 1.223 0.796 2685 reported_only=1.000 trials=15.000
decile profile bps decile:3 -0.050 0.688 2685 reported_only=1.000 trials=15.000
decile profile bps decile:4 -0.425 0.608 2685 reported_only=1.000 trials=15.000
decile profile bps decile:5 -0.508 0.640 2685 reported_only=1.000 trials=15.000
decile profile bps decile:6 0.250 0.663 2685 reported_only=1.000 trials=15.000
decile profile bps decile:7 -1.618 0.684 2685 reported_only=1.000 trials=15.000
decile profile bps decile:8 -0.775 0.662 2685 reported_only=1.000 trials=15.000
decile profile bps decile:9 -0.943 0.753 2685 reported_only=1.000 trials=15.000
null pct95 ic within_top 0.003 — 200 null_mean=-0.000
top decile subbucket bps bucket:1 10.313 4.367 2685 reported_only=1.000 n_buckets=5.000 granularity_not_registered=1.000 trials=15.000
top decile subbucket bps bucket:2 3.067 2.981 2685 reported_only=1.000 n_buckets=5.000 granularity_not_registered=1.000 trials=15.000
top decile subbucket bps bucket:3 4.844 2.236 2685 reported_only=1.000 n_buckets=5.000 granularity_not_registered=1.000 trials=15.000
top decile subbucket bps bucket:4 5.913 2.011 2685 reported_only=1.000 n_buckets=5.000 granularity_not_registered=1.000 trials=15.000
top decile subbucket bps bucket:5 2.822 1.580 2685 reported_only=1.000 n_buckets=5.000 granularity_not_registered=1.000 trials=15.000
verdict within_top_ic 0.965 — 2685 GATE CLOSED p_definition=(1 + #{null >= observed}) / (draws + 1), one-sided upper over 200 within-date permutation draws; floor 1/201 bh_q=0.965 bh_reject=0.000
within top ic all -0.004 0.004 2685 GATE CLOSED top_fraction=0.200 permutation_p=0.965 lower_95=-0.011 dates_dropped=0.000

Decision rule fixed in docs/pre-registered-R.md at commit 9f9b60fc, 2026-09-19 14:21.

Block R4

Does the calm-market result survive a null that preserves how persistent a regime label is?

NOT ESTABLISHED 26 statistics · run d86ac3cf · 2026-09-19 14:23

The row the verdict was written on

verdict · gate_family 0.217 n 2684 → NOT ESTABLISHED
All 26 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
family max z credited 2.030 — 2684 p=0.228 reported_only=1.000
family max z implementable 2.059 — 2684 p=0.217 gate=vol=mid+high rotations=2,683.000 null_pct95=2.649
gate difference bps dispersion=high 6.094 — 1614 z=1.691 episodes=42.000 switches=187.000 series=implementable
gate difference bps dispersion=low -5.445 — 437 z=-1.252 episodes=34.000 switches=120.000 series=implementable
gate difference bps dispersion=low+high 3.988 — 2051 z=0.912 episodes=52.000 switches=297.000 series=implementable
gate difference bps dispersion=low+mid -6.094 — 1070 z=-1.691 episodes=47.000 switches=187.000 series=implementable
gate difference bps dispersion=mid -3.988 — 633 z=-0.912 episodes=74.000 switches=297.000 series=implementable
gate difference bps dispersion=mid+high 5.445 — 2247 z=1.252 episodes=29.000 switches=120.000 series=implementable
gate difference bps trend=above -4.872 — 2235 z=-1.169 episodes=14.000 switches=53.000 series=implementable
gate difference bps trend=below 4.872 — 449 z=1.169 episodes=13.000 switches=53.000 series=implementable
gate difference bps vol=high 3.788 — 733 z=1.108 episodes=20.000 switches=55.000 series=implementable
gate difference bps vol=low -6.184 — 1062 z=-2.059 episodes=31.000 switches=85.000 series=implementable
gate difference bps vol=low+high -3.281 — 1795 z=-0.930 episodes=46.000 switches=140.000 series=implementable
gate difference bps vol=low+mid -3.788 — 1951 z=-1.108 episodes=21.000 switches=55.000 series=implementable
gate difference bps vol=mid 3.281 — 889 z=0.930 episodes=52.000 switches=140.000 series=implementable
gate difference bps vol=mid+high 6.184 — 1622 z=2.059 episodes=32.000 switches=85.000 series=implementable
ic by gate vol=mid+high 0.004 0.002 2684 ic_all=0.007 ic_excluded=0.003 conjunct_met=0.000 ic_definition=full cross-section average-rank Spearman(frozen score, implementable excess), per date (R3's) threshold_ignores_gate_selection=1.000 se_construction=paired block bootstrap of x*(off/p_off) - x with p_off held at its observed value
state ir annualised dispersion:high 0.965 — 1614 reported_only=1.000 mean_bps=7.362 sd_bps=121.058 untestable_under_rotation=1.000
state ir annualised dispersion:low 0.138 — 437 reported_only=1.000 mean_bps=0.374 sd_bps=42.886 untestable_under_rotation=1.000
state ir annualised dispersion:mid 0.472 — 633 reported_only=1.000 mean_bps=1.885 sd_bps=63.419 untestable_under_rotation=1.000
state ir annualised trend:above 0.819 — 2235 reported_only=1.000 mean_bps=4.117 sd_bps=79.770 untestable_under_rotation=1.000
state ir annualised trend:below 0.845 — 449 reported_only=1.000 mean_bps=8.989 sd_bps=168.914 untestable_under_rotation=1.000
state ir annualised vol:high 0.868 — 733 reported_only=1.000 mean_bps=7.686 sd_bps=140.525 untestable_under_rotation=1.000
state ir annualised vol:low 0.336 — 1062 reported_only=1.000 mean_bps=1.195 sd_bps=56.522 untestable_under_rotation=1.000
state ir annualised vol:mid 1.115 — 889 reported_only=1.000 mean_bps=7.126 sd_bps=101.440 untestable_under_rotation=1.000
verdict gate_family 0.217 — 2684 NOT ESTABLISHED p_definition=(1 + #{Z*_k >= Z*_0}) / T over the exhaustive circular shift; floor 1/T bh_q=0.325 bh_reject=0.000 ic_conjunct=0.000 gate=vol=mid+high

Decision rule fixed in docs/pre-registered-R.md at commit 9f9b60fc, 2026-09-19 14:21.

Block R5

Does refitting the model on recent data, weighted toward it, beat the frozen one on identical dates?

W: INDISTINGUISHABLEW: INDISTINGUISHABLEall: INDISTINGUISHABLE 32 statistics · run ef069dbb · 2026-09-19 15:42

The rows the verdict was written on

delta bps · W -0.961± 1.559 n 2404 → INDISTINGUISHABLE
delta ic · W -0.003± 0.002 n 2404 → INDISTINGUISHABLE
verdict · all 0.000 n 2404 → INDISTINGUISHABLE
All 32 statistics value, SE, n and the run's own metadata · sortable
StatisticLabelValueSEnDetail
delta bps U -1.396 1.194 2404 reported_only=1.000
delta bps W -0.961 1.559 2404 INDISTINGUISHABLE null_pct95_abs=0.946 frozen_bps=4.411 leg=implementable open t+1 -> open t+2 decision_bearing=1.000 null_cleared=1.000
delta ic U -0.001 0.001 2404 reported_only=1.000
delta ic W -0.003 0.002 2404 INDISTINGUISHABLE null_pct95_abs=0.002 floor=0.002 frozen_ic=0.010 decision_bearing=1.000 null_cleared=1.000
delta ic by year U:2016 0.004 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2017 0.000 — 251 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2018 -0.002 — 251 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2019 0.000 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2020 0.001 — 253 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2021 -0.019 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2022 -0.003 — 251 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2023 0.000 — 250 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2024 0.009 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year U:2025 0.005 — 140 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2016 0.001 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2017 0.005 — 251 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2018 0.001 — 251 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2019 -0.004 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2020 -0.001 — 253 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2021 -0.031 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2022 -0.007 — 251 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2023 -0.008 — 250 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2024 0.005 — 252 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
delta ic by year W:2025 0.009 — 140 reported_only=1.000 trials=10.000 note=per-fold breakdown; a later block citing it counts these as trials
frozen bps comparator 4.411 — 2404 run=b9ca7ceb-3a78-4ff9-9fc7-b9a50636ca74 leg=implementable open t+1 -> open t+2
frozen ic comparator 0.010 — 2404 run=b9ca7ceb-3a78-4ff9-9fc7-b9a50636ca74
null mean delta ic W 0.000 0.000 20 cleared=1.000 rule=mean within 2 SE of zero
null pct95 abs delta bps W 0.946 — 20
null pct95 abs delta ic W 0.002 — 20
reproduction max rel dev arm_u_2015_vs_pickle 42,815.515 — 103827 gate=reported max_abs=0.020 rank_corr=0.947
reproduction max rel dev frozen_pickle_vs_backtest_scores 0.000 — 1093176 gate=hard rtol=0.000 passed=1.000
verdict all 0.000 — 2404 INDISTINGUISHABLE null_cleared=1.000 excluded_from=2025-07-28 excluded_to=2026-08-19

Decision rule fixed in docs/pre-registered-R5.md at commit 9f9b60fc, 2026-09-19 14:45.