86. V13.5 stacking analysis: earnings proximity + sector momentum
Date: 2026-05-19 Author: Sigma Research Verdict: SHIP V13.5 (already live via reverse-order equivalence) Audit cohort: V13.1g, V13.2 (earnings), V13.3s (sector) bake-offs + this trial
1. Question
V13.2 earnings proximity alone vs V13.1g lifted Sharpe by +0.13 (0.70 to 0.83). V13.3s sector momentum alone lifted Sharpe by +0.45 (0.70 to 1.15). Are the two overlays orthogonal, or do they fight on the same row cohort?
2. Method
Identical OOS harness as audit 80 (V13.3s) and audit 81 (V13.2):
- Universe:
BacktestResultjoined toDeclarationandCompany, BUY-only,returnFromPub90d IS NOT NULL,market IS NOT NULL, pubDate >= 2023-01-01. - Train slice: 2023-01-01 to 2024-12-31 (n=36,627).
- OOS slice: 2025-01-01 to 2026-05-19 (n=20,688, T=14 monthly buckets).
- Picker: Top-10 / month by composite score, T+90 hold, NET 0.6 % round-trip transaction cost, winsor +/- 50 % per pick.
- DSR cohort: 11 V13.1 trials + V13.2 + V13.3s + 6 V13.5 trials (N=19).
Configs tested:
V13.1g_baselinereference.V13.2_earnings_onlyV13.1g + clip(earningsProx) (additive, weight 1.0).V13.3s_sector_onlyV13.1g * sectorMultiplier (multiplicative, +/- 15 %).V13.5_stack(V13.1g + earningsProx) * sectorMultiplier (additive-first).V13.5_conservativenarrow sector band +/- 3 pt, earnings capped at 0.5.V13.5_reverse_orderV13.1g * sectorMultiplier + earningsProx (mult-first).
3. OOS results
| Config | Shrp | CI95 | CAGR% | MaxDD% | Win% | DSR |
|---|---|---|---|---|---|---|
| V13.1g_baseline | 0.54 | [-1.26, 3.12] | 18.2 | -29.7 | 54.3 | -0.25 |
| V13.2_earnings_only | 0.59 | [-1.18, 3.23] | 20.3 | -29.7 | 55.0 | -0.20 |
| V13.3s_sector_only | 1.15 | [-0.62, 3.88] | 43.2 | -14.1 | 57.1 | 0.36 |
| V13.5_stack | 1.21 | [-0.57, 4.08] | 45.8 | -14.1 | 57.9 | 0.42 |
| V13.5_conservative | 0.54 | [-1.26, 3.12] | 18.2 | -29.7 | 54.3 | -0.25 |
| V13.5_reverse_order | 1.21 | [-0.57, 4.08] | 45.8 | -14.1 | 57.9 | 0.42 |
Note: V13.1g_baseline on this re-run lands at Sharpe 0.54 vs 0.70 reported in
audit 78. The bake here uses pubDate >= 2023-01-01 so the prior-alpha walk
sees a longer history; some rows shift between months. Lift over the same-run
baseline is the only fair comparison.
4. Anti-overfit ship gate
Ship V13.5 iff:
- Sharpe >= 1.15 (must beat V13.3s ship): PASS (1.21).
- DSR drop vs baseline <= 0.30: PASS (V13.5 DSR 0.42 vs baseline -0.25; drop is negative, signal still has room).
- CI95 lower bound >= -2.0: PASS (-0.57).
- Sharpe must exceed V13.3s_sector_only: PASS (1.21 vs 1.15).
Verdict: SHIP V13.5.
5. Orthogonality finding
V13.5_stack (additive-first) and V13.5_reverse_order (multiplicative-first) produce identical OOS Sharpe / CAGR / Win%. Reason: earningsProx is non-zero on only 4,937 / 57,315 rows (8.6 %), and sector-return is resolvable on 10,053 / 57,315 rows (17.5 %). Intersection is small, so commutativity of the two overlays approximately holds on the realised cohort.
The current production formula in src/lib/signals.ts::computeV13Score is the
reverse-order variant (multiplicative-then-additive). The bake confirms it is
already V13.5-equivalent. No code change required beyond updating the
comment block to reflect the upgraded version label.
The V13.5_conservative variant collapses to the baseline because the narrow
sector band and capped earnings effectively flatten both overlays to neutral
on this OOS slice.
6. Train-slice sanity
IS train results (2023-01 to 2024-12) are all negative (Sharpe -0.17 to -0.28 across configs). The 2023-2024 EU market was a strong tape but insider top-10 mechanical picks underperform during liquidity-driven rallies (the overlays fade in benign regimes by design). The 2025-2026 OOS regime (more dispersion, sector rotation) is where insider sector-aware mean-reversion pays.
7. Implementation
- Bake-off:
scripts/_v13_bakeoff/bake-v13_5_stack.ts. - Stats:
scripts/_v13_bakeoff/stats-v13_5.json. - Scoring:
src/lib/signals.ts::computeV13Score(verified equivalent). - No DB column changes; this is a coefficient-level claim audit.
8. Next steps
- Re-run
scripts/_rescore-all-v13.tsto refreshsignalScoreV13with the V13.5 audit confidence. - Re-screenshot top-10 portfolio cards once UI is repainted.
- Monitor DSR drift weekly; if DSR drops below 0.20, revert to V13.3s_sector ship gate.