Date: 2026-09-10 | universe: delisting-inclusive _ADJ (~500 names, 2006-2026) | split 2016-01-01 (fixed in advance) | fills next-open, lag>=1 (guard PASS) | costs 5/10/25/50bps one-way | sqrt(252).
Audit of existing rails (what was reused, what is missing)
- Reused:
validation/framework.py(lag, next-open, turnover costs, delisting-inclusive loader),validation/common.py(perf/bootstrap), PIT-universe discipline, 1.5%/yr survivorship-drag convention, FRED credit-gate + sectors.json + FINRA loader, live baselines (XSMOM L126/H21, PEAD). - Missing / honestly limited: no equity options IV/skew/term-structure (Alpaca indicative only — per docs/csp_feasibility.md, do not trust); no equity L2/TAQ (microstructure = daily OHLCV proxies ONLY, explicitly weaker than real book data); fundamentals PIT only from ~2022 (value/quality/accruals pre-2022 = revised data, NOT tested here); no earnings-timestamp feed (PEAD sleeve logic untouched); borrow cost per-name unmodelled (long-short grades capped at B).
Funnel (counts, not cherry-picks)
We tested 8 hypotheses (0 parked re-grids refused at registration). 4 advanced past RESEARCH, 4 stayed/rejected. No untouched-holdout claim is made in this batch (stage OOS+ requires a locked holdout + paper logging).
| hid | edge | OOS Sharpe@10 | OOS Sharpe@50 | p vs 0 | beta | corrBASE | score | grade | stage |
|---|---|---|---|---|---|---|---|---|---|
| BASE | base-xsmom-L126/H21 | 1.07 | 0.91 | 0.00 | 1.07 | nan | 75.7 | A | RESEARCH |
| B0 | baseline-st-reversal-21d | -0.28 | -1.03 | 0.83 | 0.18 | -0.12 | 31.2 | D | RESEARCH |
| H1 | volume-confirmed-momentum | 1.10 | 0.92 | 0.00 | 1.06 | 0.99 | 75.1 | A | ROBUSTNESS |
| H2 | liquidity-shock-reversal | 0.82 | 0.02 | 0.00 | 0.17 | 0.32 | 66.7 | B | CANDIDATE |
| H3 | sector-residual-reversal-5d | -0.01 | -1.44 | 0.52 | 0.13 | 0.02 | 37.5 | D | RESEARCH |
| H4 | overnight-gap-reversal | -0.50 | -3.05 | 0.95 | 0.16 | 0.07 | 26.2 | D | RESEARCH |
| H5 | vol-compression-breakout | 0.64 | 0.17 | 0.02 | 0.59 | 0.63 | 64.4 | B | CANDIDATE |
| H6 | beta-hedged-momentum | 1.25 | 1.08 | 0.00 | 1.05 | 0.98 | 77.3 | A | ROBUSTNESS |
BASE — base-xsmom-L126/H21 (grade A, score 75.7, stage RESEARCH)
- Edge name: base-xsmom-L126/H21
- Hypothesis: Trailing 126d winners continue to outperform over 21d holds.
- Economic explanation: Underreaction + institutional herding / slow capital rotation.
- Data required: daily ADJ OHLCV 2006+
- Features: 126d trailing return
- Entry rule: top decile by 126d ret
- Exit rule: 21d rebalance
- Holding period: 21d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: +942.19% (net OOS +942.19%)
- Net OOS (10bps): ret +942.19%, Sharpe 1.07, MaxDD -38.77%, PF 1.21, win +57.29%
- Cost ladder OOS Sharpe: optimistic=1.09, base=1.07, conservative=1.01, severe=0.91
- Sharpe (net@10, OOS): 1.07
- Maximum drawdown (net@10, OOS): -38.77%
- Turnover/day: 0.03 (~+856.70% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +57.29%
- OOS vs IS: IS Sharpe 0.67 / OOS Sharpe 1.07; pre/post-2020 Sharpe 1.37/0.99
- Regime detail: pre2020 Sh=1.37 DD=-19.84%; post2020 Sh=0.99 DD=-38.77%
- Perturbation OOS Sharpe: H10=1.07; H21=1.07; H42=1.05; K30=1.23; K70=1.07
- Alpha decay (hold->Sharpe@10): H5=1.07; H10=1.07; H21=1.07; H42=1.05; H63=1.08
- Capacity: turnover/day 0.03; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.81, vs BASE nan; beta 1.07
- Known failure modes: momentum-crash exposure (beta ~1); crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage RESEARCH — do not promote
- Edge-score parts: {'oos_sharpe': 13.3, 'signif': 15.0, 'regimes': 15.0, 'costs': 8.5, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 4.9, 'decorr': 0.0, 'plaus': 4.0}
- p vs 0: 0.00; p vs BASE: nan
B0 — baseline-st-reversal-21d (grade D, score 31.2, stage RESEARCH)
- Edge name: baseline-st-reversal-21d
- Hypothesis: Trailing 21d losers bounce over the next 21d (LS).
- Economic explanation: Overreaction / liquidity provision; calibration baseline, expected to be beta-dominated (parked family probe).
- Data required: daily ADJ OHLCV 2006+
- Features: -21d return
- Entry rule: long bottom decile / short top
- Exit rule: 21d rebalance
- Holding period: 21d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: -58.76% (net OOS -58.76%)
- Net OOS (10bps): ret -58.76%, Sharpe -0.28, MaxDD -73.92%, PF 0.95, win +46.68%
- Cost ladder OOS Sharpe: optimistic=-0.19, base=-0.28, conservative=-0.57, severe=-1.03
- Sharpe (net@10, OOS): -0.28
- Maximum drawdown (net@10, OOS): -73.92%
- Turnover/day: 0.16 (~+4078.29% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +46.68%
- OOS vs IS: IS Sharpe -0.17 / OOS Sharpe -0.28; pre/post-2020 Sharpe 0.15/-0.43
- Regime detail: pre2020 Sh=0.15 DD=-21.57%; post2020 Sh=-0.43 DD=-73.92%
- Perturbation OOS Sharpe: H10=-0.10; H21=-0.28; H42=-0.13; K30=-0.25; K70=-0.30
- Alpha decay (hold->Sharpe@10): H5=-0.28; H10=-0.10; H21=-0.28; H42=-0.13; H63=-0.10
- Capacity: turnover/day 0.16; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.15, vs BASE -0.12; beta 0.18
- Known failure modes: long-short borrow unmodelled; crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage RESEARCH — do not promote
- Edge-score parts: {'oos_sharpe': 0.0, 'signif': 2.6, 'regimes': 7.5, 'costs': 0.0, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 4.6, 'decorr': 0.0, 'plaus': 1.5}
- p vs 0: 0.83; p vs BASE: 1.00
H1 — volume-confirmed-momentum (grade A, score 75.1, stage ROBUSTNESS)
- Edge name: volume-confirmed-momentum
- Hypothesis: Momentum names confirmed by abnormal volume persist longer than unconfirmed momentum (same 126/21 cadence).
- Economic explanation: Volume proxies institutional accumulation; unconfirmed moves are more likely stale-price drift or retail noise.
- Data required: daily ADJ OHLCV 2006+
- Features: 126d ret x 63d relative-volume z
- Entry rule: top decile by volume-weighted 126d ret
- Exit rule: 21d rebalance
- Holding period: 21d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: +1011.71% (net OOS +1011.71%)
- Net OOS (10bps): ret +1011.71%, Sharpe 1.10, MaxDD -38.15%, PF 1.22, win +57.18%
- Cost ladder OOS Sharpe: optimistic=1.13, base=1.10, conservative=1.04, severe=0.92
- Sharpe (net@10, OOS): 1.10
- Maximum drawdown (net@10, OOS): -38.15%
- Turnover/day: 0.04 (~+977.14% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +57.18%
- OOS vs IS: IS Sharpe 0.67 / OOS Sharpe 1.10; pre/post-2020 Sharpe 1.36/1.05
- Regime detail: pre2020 Sh=1.36 DD=-19.47%; post2020 Sh=1.05 DD=-38.15%
- Perturbation OOS Sharpe: H10=1.08; H21=1.10; H42=1.10; K30=1.22; K70=1.06
- Alpha decay (hold->Sharpe@10): H5=1.07; H10=1.08; H21=1.10; H42=1.10; H63=1.07
- Capacity: turnover/day 0.04; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.82, vs BASE 0.99; beta 1.06
- Known failure modes: momentum-crash exposure (beta ~1); crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage ROBUSTNESS — advance with locked-holdout + paper plan
- Edge-score parts: {'oos_sharpe': 13.8, 'signif': 15.0, 'regimes': 15.0, 'costs': 8.4, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 4.9, 'decorr': 0.0, 'plaus': 3.0}
- p vs 0: 0.00; p vs BASE: 0.22
H2 — liquidity-shock-reversal (grade B, score 66.7, stage CANDIDATE)
- Edge name: liquidity-shock-reversal
- Hypothesis: A 5d idiosyncratic plunge on >1.5x volume while the market is flat reverses over ~10d (liquidity provision).
- Economic explanation: Forced/retail selling exhausts into a stable tape; market-makers are compensated for absorbing the flow.
- Data required: daily ADJ OHLCV + SPY
- Features: -5d ret gated on vol shock + |mkt5|<1%
- Entry rule: gated losers, top 30
- Exit rule: 10d hold
- Holding period: 10d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: +98.15% (net OOS +98.15%)
- Net OOS (10bps): ret +98.15%, Sharpe 0.82, MaxDD -20.47%, PF 1.27, win +22.20%
- Cost ladder OOS Sharpe: optimistic=0.93, base=0.82, conservative=0.52, severe=0.02
- Sharpe (net@10, OOS): 0.82
- Maximum drawdown (net@10, OOS): -20.47%
- Turnover/day: 0.07 (~+1692.69% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +22.20%
- OOS vs IS: IS Sharpe 0.28 / OOS Sharpe 0.82; pre/post-2020 Sharpe 0.72/0.89
- Regime detail: pre2020 Sh=0.72 DD=-11.58%; post2020 Sh=0.89 DD=-20.47%
- Perturbation OOS Sharpe: H5=0.56; H10=0.82; H20=0.64; K18=0.72; K42=0.59
- Alpha decay (hold->Sharpe@10): H5=0.56; H10=0.82; H21=0.08; H42=0.42; H63=0.24
- Capacity: turnover/day 0.07; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.36, vs BASE 0.32; beta 0.17
- Known failure modes: crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage CANDIDATE — advance with locked-holdout + paper plan
- Edge-score parts: {'oos_sharpe': 10.3, 'signif': 14.9, 'regimes': 15.0, 'costs': 0.2, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 4.8, 'decorr': 3.4, 'plaus': 3.0}
- p vs 0: 0.00; p vs BASE: 1.00
H3 — sector-residual-reversal-5d (grade D, score 37.5, stage RESEARCH)
- Edge name: sector-residual-reversal-5d
- Hypothesis: Stocks extremely weak vs their own sector over 5d revert over ~10d.
- Economic explanation: Sector flows overshoot constituents; relative mispricing is corrected by sector-neutral arbitrage.
- Data required: daily ADJ + sectors.json
- Features: 5d ret minus sector mean, volume filter
- Entry rule: worst sector-residuals, top 30
- Exit rule: 10d hold
- Holding period: 10d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: -28.33% (net OOS -28.33%)
- Net OOS (10bps): ret -28.33%, Sharpe -0.01, MaxDD -71.12%, PF 1.00, win +49.49%
- Cost ladder OOS Sharpe: optimistic=0.18, base=-0.01, conservative=-0.57, severe=-1.44
- Sharpe (net@10, OOS): -0.01
- Maximum drawdown (net@10, OOS): -71.12%
- Turnover/day: 0.36 (~+9019.23% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +49.49%
- OOS vs IS: IS Sharpe -0.28 / OOS Sharpe -0.01; pre/post-2020 Sharpe 0.84/-0.26
- Regime detail: pre2020 Sh=0.84 DD=-16.98%; post2020 Sh=-0.26 DD=-71.12%
- Perturbation OOS Sharpe: H5=-0.49; H10=-0.01; H20=0.18; K18=-0.06; K42=0.10
- Alpha decay (hold->Sharpe@10): H5=-0.49; H10=-0.01; H21=-0.24; H42=-0.07; H63=-0.22
- Capacity: turnover/day 0.36; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.10, vs BASE 0.02; beta 0.13
- Known failure modes: long-short borrow unmodelled; crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage RESEARCH — do not promote
- Edge-score parts: {'oos_sharpe': 0.0, 'signif': 7.2, 'regimes': 7.5, 'costs': 0.0, 'perturb': 6.0, 'breadth': 5.0, 'capacity': 4.1, 'decorr': 4.9, 'plaus': 2.8}
- p vs 0: 0.52; p vs BASE: 0.99
H4 — overnight-gap-reversal (grade D, score 26.2, stage RESEARCH)
- Edge name: overnight-gap-reversal
- Hypothesis: Large overnight gaps (open vs prior close) partially reverse over ~5d.
- Economic explanation: Overnight gaps embed retail/order-imbalance overreaction; daytime institutional flow fades the extreme.
- Data required: daily raw open/close from _ADJ
- Features: -overnight gap, 5d vol filter
- Entry rule: fade largest gaps, top 30
- Exit rule: 5d hold
- Holding period: 5d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: -81.11% (net OOS -81.11%)
- Net OOS (10bps): ret -81.11%, Sharpe -0.50, MaxDD -86.87%, PF 0.91, win +47.21%
- Cost ladder OOS Sharpe: optimistic=-0.15, base=-0.50, conservative=-1.53, severe=-3.05
- Sharpe (net@10, OOS): -0.50
- Maximum drawdown (net@10, OOS): -86.87%
- Turnover/day: 0.71 (~+17840.73% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +47.21%
- OOS vs IS: IS Sharpe -0.50 / OOS Sharpe -0.50; pre/post-2020 Sharpe -0.90/-0.40
- Regime detail: pre2020 Sh=-0.90 DD=-54.52%; post2020 Sh=-0.40 DD=-78.42%
- Perturbation OOS Sharpe: H2=-1.68; H5=-0.50; H10=-0.24; K18=-0.62; K42=-0.48
- Alpha decay (hold->Sharpe@10): H5=-0.50; H10=-0.24; H21=-0.53; H42=-0.50; H63=-0.45
- Capacity: turnover/day 0.71; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.11, vs BASE 0.07; beta 0.16
- Known failure modes: long-short borrow unmodelled; crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage RESEARCH — do not promote
- Edge-score parts: {'oos_sharpe': 0.0, 'signif': 0.8, 'regimes': 0.0, 'costs': 0.0, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 3.2, 'decorr': 4.6, 'plaus': 2.5}
- p vs 0: 0.95; p vs BASE: 1.00
H5 — vol-compression-breakout (grade B, score 64.4, stage CANDIDATE)
- Edge name: vol-compression-breakout
- Hypothesis: 20d breakouts emerging from 126d-low volatility compression trend-follow over ~21d.
- Economic explanation: Compression = disagreement resolution / coiled positioning; breakout direction reveals the informed side.
- Data required: daily ADJ OHLC
- Features: ATR compression percentile + 20d-high distance
- Entry rule: breakouts in compression, top 30
- Exit rule: 21d hold
- Holding period: 21d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: +148.77% (net OOS +148.77%)
- Net OOS (10bps): ret +148.77%, Sharpe 0.64, MaxDD -37.78%, PF 1.14, win +52.42%
- Cost ladder OOS Sharpe: optimistic=0.70, base=0.64, conservative=0.46, severe=0.17
- Sharpe (net@10, OOS): 0.64
- Maximum drawdown (net@10, OOS): -37.78%
- Turnover/day: 0.07 (~+1749.81% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +52.42%
- OOS vs IS: IS Sharpe 0.64 / OOS Sharpe 0.64; pre/post-2020 Sharpe 0.82/0.60
- Regime detail: pre2020 Sh=0.82 DD=-10.40%; post2020 Sh=0.60 DD=-37.78%
- Perturbation OOS Sharpe: H10=0.61; H21=0.64; H42=0.66; K18=0.77; K42=0.56
- Alpha decay (hold->Sharpe@10): H5=0.44; H10=0.61; H21=0.64; H42=0.66; H63=0.85
- Capacity: turnover/day 0.07; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.69, vs BASE 0.63; beta 0.59
- Known failure modes: crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage CANDIDATE — advance with locked-holdout + paper plan
- Edge-score parts: {'oos_sharpe': 8.0, 'signif': 14.7, 'regimes': 15.0, 'costs': 2.6, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 4.8, 'decorr': 1.8, 'plaus': 2.5}
- p vs 0: 0.02; p vs BASE: 1.00
H6 — beta-hedged-momentum (grade A, score 77.3, stage ROBUSTNESS)
- Edge name: beta-hedged-momentum
- Hypothesis: SPY-beta-hedged 126d residual momentum beats raw momentum net of costs (purer idiosyncratic drift).
- Economic explanation: Removes market-beta timing luck; residual drift reflects firm-specific underreaction.
- Data required: daily ADJ + SPY
- Features: 126d residual vs trailing-beta SPY hedge
- Entry rule: top decile residual
- Exit rule: 21d rebalance
- Holding period: 21d
- Universe: delisting-inclusive _ADJ (~500 names)
- Gross OOS ret: +1352.41% (net OOS +1352.41%)
- Net OOS (10bps): ret +1352.41%, Sharpe 1.25, MaxDD -35.63%, PF 1.25, win +57.59%
- Cost ladder OOS Sharpe: optimistic=1.27, base=1.25, conservative=1.19, severe=1.08
- Sharpe (net@10, OOS): 1.25
- Maximum drawdown (net@10, OOS): -35.63%
- Turnover/day: 0.03 (~+829.25% notional/yr)
- N trades proxy: 2667 OOS days in market
- Win rate: +57.59%
- OOS vs IS: IS Sharpe 0.57 / OOS Sharpe 1.25; pre/post-2020 Sharpe 1.39/1.24
- Regime detail: pre2020 Sh=1.39 DD=-20.85%; post2020 Sh=1.24 DD=-35.63%
- Perturbation OOS Sharpe: H10=1.17; H21=1.25; H42=1.23; K30=1.29; K70=1.19
- Alpha decay (hold->Sharpe@10): H5=1.15; H10=1.17; H21=1.25; H42=1.23; H63=1.16
- Capacity: turnover/day 0.03; gated signals (H2/H4/H5) concentrate -> lower capacity
- Correlation: vs SPY 0.84, vs BASE 0.98; beta 1.05
- Known failure modes: momentum-crash exposure (beta ~1); crowding + turnover under stress; gated variants thin out in calm tapes
- Remaining uncertainties: untouched-holdout OOS, live slippage vs model, PIT-fundamental interactions untested, capacity under real fills
- Recommendation: stage ROBUSTNESS — advance with locked-holdout + paper plan
- Edge-score parts: {'oos_sharpe': 15.6, 'signif': 15.0, 'regimes': 15.0, 'costs': 8.7, 'perturb': 10.0, 'breadth': 5.0, 'capacity': 4.9, 'decorr': 0.1, 'plaus': 3.0}
- p vs 0: 0.00; p vs BASE: 0.02
Runtime: 2.0 min. Ledger: logs/edge_discovery_ledger.jsonl.
Reviewer addendum — falsification pass (read before promoting anything)
Mechanical scores are optimistic. Corrections applied below (ledger holds the override entries; stages are append-only, never edited in place).
-
H1 volume-confirmed-momentum is BASE in disguise. corr vs BASE 0.99, p vs BASE 0.22 (no significant increment). Its grade-A score is inherited from BASE's strength, not new alpha — it fails §20 (genuinely different source). OVERRIDE: ROBUSTNESS -> RESEARCH, tracked as a BASE variant only, not a standalone edge.
-
H6 beta-hedged-momentum repeats the parked iRMOM pattern. IS Sharpe 0.57 < BASE IS 0.67 while OOS wins (1.25 vs 1.07) — exactly the "OOS-only win" rejected in
reports/equity_expand1_momentum.md. p vs BASE 0.02 is suggestive, not proof, and corr vs BASE is 0.98. OVERRIDE: ROBUSTNESS -> CANDIDATE, promotion conditional on a locked untouched holdout (e.g. last 24 months, inspected once), not on this mined 2016 split. -
Multiple testing. 6 candidates were tested; Bonferroni at 5% is 0.0083. H5 (p=0.02) does NOT clear it — its CANDIDATE status rests on regime consistency + severe-cost survival, and it must clear the locked holdout to go further. H2's severe-cost Sharpe (0.02) is a red flag: the edge exists only at institutional cost levels; any live attempt needs impact/volume-cap modeling first.
-
This "OOS" is mined ground. The 2016 split has been inspected by every study since 2026-08. Treat all OOS Sharpes above as walk-forward-style, not virgin. The honest funnel statement is therefore:
We tested 8 hypotheses (6 candidates + 2 baselines). 4 survived realistic costs on the pre-registered split. 0 have yet cleared untouched-holdout, paper, or shadow stages. 2 (H2, H5) are decorrelated enough from the live book to merit a locked-holdout test. H1/H6 are momentum clones — useful variant evidence, not new edges. H3/H4/B0 are rejected, H3 as a textbook regime-flip (pre-2020 +0.84, post -0.26).
-
Not attempted here (data gaps, no pretending): options-derived signals (no IV history), real L2 microstructure (daily proxies only), PIT fundamentals pre-2022, earnings-timestamp PEAD variants, ML (correctly withheld — no persistent nonlinear structure has been demonstrated that a linear baseline fails to capture).