Forward window: 2026-08-01 .. 2026-08-31 (31 days, 12 SOL-gate60 long days). SPLIT moved to 2026-07-31 so this is a strict holdout: the data here was not used in the original study's selection or pre-registration. Pre-registered thresholds unchanged: look=168h, carry|z|>=1.5, basis|z|>=2.0, multipliers {0.5, 1.0, 1.25}.
Forward OOS variants
| Variant | Days | LongDays | Ret | Sharpe | PF | MaxDD |
|---|---|---|---|---|---|---|
| baseline (gate60, no overlay) | 31 | 12 | +20.61% | 4.92 | 2.85 | -6.77% |
| primary overlay (0.5/1.0/1.25) | 31 | 12 | +22.57% | 5.02 | 3.01 | -6.77% |
Forward bucket distribution (gate60-long days only)
| Bucket | Days | Share |
|---|---|---|
| 1.0x (no signal) | 10 | 83.3% |
| 1.0x (mixed) | 1 | 8.3% |
| 1.25x (both stretched short) | 1 | 8.3% |
Bootstrap p(forward overlay beats baseline): 0.351
Original study (for context)
Original OOS 2025-01..2026-07-31: Sharpe -0.45 -> -0.07, p=0.014, maxDD delta -6.42%, verdict=PASS (see reports/carry_basis_overlay_sol.md).
Verdict
- Forward OOS baseline Sharpe: 4.92, ret +20.61%, maxDD -6.77%
- Forward OOS overlay Sharpe: 5.02, ret +22.57%, maxDD -6.77%
- Bootstrap p(forward): 0.351
- Result: CONFIRMED (forward Sharpe 5.02 >= baseline 4.92; pre-registered verdict holds in forward OOS, n_active=1)
Honest caveats
- 31 days is a small sample. The std error on a daily-Sharpe at 31 obs is roughly sqrt(252/31) ~ 2.85x the long-run std. A single lucky or unlucky day can move the verdict; the bootstrap p accounts for this but the absolute Sharpe has wide confidence intervals.
- Inert signal risk: if the bucket_active_frac is below 5%, the verdict is INERT and the overlay did not have a chance to confirm or refute itself.
- Forward verdict is NOT a promotion gate by itself. It is one more data point. The original study's pre-registered verdict (PASS) is the primary gate. A clean forward confirmation is a positive signal; a marginal or INERT forward is a yellow flag, not a veto.