{
  "study": "H20 VIX ETP carry (SVIX/SVXY contango roll-yield, VIX3M/VIX hysteresis gate)",
  "date": "2026-07-13",
  "pre_registration": "ALPACA_ATP_PLAN.md §C.1 H20 (commit 4d3447d, 2026-07-10)",
  "grid": "enter VIX3M/VIX > {1.00,1.05} x exit < {0.97,1.00}, instrument {splice SVXY->SVIX@2022-05-02, SVXY-throughout}; num_trials=8",
  "selection": "best IS (2018-2022) net Sharpe @10bps = e100x100 (enter>1.00, exit<1.00): splice 0.029 (all other cells negative)",
  "is_selected": {"cell": "e100x100", "splice_sharpe": 0.029, "splice_maxdd_pct": 28.6, "svxy_sharpe": 0.0, "svxy_maxdd_pct": 29.1},
  "oos_selected_10bps": {
    "splice": {"sharpe": -0.091, "cagr_pct": 1.218, "maxdd_pct": 48.5, "vs_uncond_sharpe": 0.011},
    "svxy":   {"sharpe": 0.152,  "cagr_pct": 9.282, "maxdd_pct": 38.3, "vs_uncond_sharpe": 0.295}
  },
  "oos_all_cells_10bps_sharpe": {"e100x97_splice": 0.003, "e100x100_splice": -0.091, "e105x97_splice": -0.094, "e105x100_splice": -0.179,
                                  "e100x97_svxy": 0.286, "e100x100_svxy": 0.152, "e105x97_svxy": 0.164, "e105x100_svxy": 0.051},
  "cost_sweep_oos_sharpe": {
    "gated_e100x100_splice": {"0bps": -0.068, "5bps": -0.08, "10bps": -0.091, "20bps": -0.113},
    "gated_e100x100_svxy":   {"0bps": 0.189, "5bps": 0.17, "10bps": 0.152, "20bps": 0.116},
    "uncond_splice":         {"0bps": 0.024, "5bps": 0.017, "10bps": 0.011, "20bps": -0.002},
    "uncond_svxy":           {"0bps": 0.309, "5bps": 0.3, "10bps": 0.295, "20bps": 0.28}
  },
  "yearly_folds_full_e100x100": {
    "splice": {"2018": -24.72, "2019": 17.66, "2020": 2.97, "2021": 10.59, "2022": -0.02, "2023": 41.92, "2024": -26.52, "2025": 1.19, "2026p": -0.53, "positive_frac": 0.56},
    "svxy":   {"2018": -24.72, "2019": 17.66, "2020": 2.97, "2021": 10.59, "2022": -3.61, "2023": 51.73, "2024": -15.82, "2025": 7.13, "2026p": 0.67, "positive_frac": 0.67}
  },
  "timing_permutation": {
    "method": "exposure-matched circular shift of the daily gate series (B=4000, seed 7) re-run through the identical offline sizing/cost engine; gate+adjclose series parsed from the LEAN run's own H20 DAY log lines; close-to-close approximation of LEAN's next-open execution (H18 methodology)",
    "oos_e100x100_splice": {"p_sharpe": 0.2705, "p_mean": 0.2905, "sharpe_actual_rf0": 0.337},
    "oos_e100x100_svxy":   {"p_sharpe": 0.2263, "p_mean": 0.3083, "sharpe_actual_rf0": 0.728},
    "full_e100x100_splice": {"p_sharpe": 0.0263, "p_mean": 0.0335, "sharpe_actual_rf0": 0.144},
    "full_e100x100_svxy":  {"p_sharpe": 0.1083, "p_mean": 0.1188, "sharpe_actual_rf0": 0.274},
    "oos_e100x97_svxy":    {"p_sharpe": 0.3215, "p_mean": 0.3603},
    "note": "FULL-period p=0.026 (splice) = the gate's genuine skill is dodging the 2018 Volmageddon and Mar-2020 collapses; in the 2023+ OOS window that skill is borderline (p 0.23-0.31 vs the 0.3 bar) and adds no Sharpe over unconditional. Offline rf0 recon Sharpe exceeds LEAN net Sharpe by rf-drag + next-open-execution slippage (0.728 vs 0.152 LEAN, oos svxy); valid for the null comparison since actual and permuted use the identical engine."
  },
  "dsr": {"num_trials": 8, "sr_std_across_oos_trials": 0.1572, "expected_max_sharpe_null": 0.229,
          "dsr_best_oos_0.286": 0.543, "dsr_selected_svxy_0.152": 0.442},
  "kill_criteria_evaluation": {
    "1_filter_beats_unconditional": "FAIL OOS — every gated cell <= unconditional on the same instrument (splice: max 0.003 vs 0.011; svxy: max 0.286 vs 0.295); gate only helped IS via Volmageddon-dodging",
    "2_replay_maxdd_le_25pct": "FAIL — best variant IS maxDD 28.6% (e100x100); all others 29-55%; OOS maxDD 38-52% (Aug-2024 + Apr-2025 vol spikes)",
    "3_folds_ge_60pct_positive": "FAIL for splice (5/9 = 56%); pass for svxy-only (6/9 = 67%)",
    "4_permutation_p_le_0.3": "pass on selected cell (OOS p 0.23-0.27; FULL p 0.026-0.11) — the gate has timing skill, concentrated in 2018/2020 crash exits, but it does not translate into net Sharpe over unconditional",
    "5_pnl_concentrated_pre2018": "n/a (backtest starts 2018 per spec)"
  },
  "verdict": "KILL — kill criteria 1 and 2 both decisively triggered (either suffices). Deeper finding: the carry premise itself failed on ETPs 2018-2026: unconditional vol-sized short-vol full-period CAGR -0.4% (SVXY) to -3.5% (splice/SVIX) with 55% maxDD; the 1.5-3%/mo gross roll yield is repeatedly confiscated by convex overnight gaps (Feb-2018, Mar-2020, Aug-2024, Apr-2025) that vol-targeting cannot size away (gap loss scales with leverage, not realized vol — SVIX -1x is strictly worse than SVXY -0.5x at the same vol target: OOS maxDD 48.5% vs 38.3%).",
  "sizing_note": "Per the pre-registered fallback ('then at most a sizing note'): the only defensible residue is UNCONDITIONAL SVXY (-0.5x) vol-sized to ~22.5%, OOS 2023+ net Sharpe 0.295, CAGR 13.4%, maxDD 39.4% — tail-dominated equity-correlated beta, not an edge; DSR 0.54 at 8 trials; does not meet any deployment bar."
}
