# 2026-06-29 — Filone D: MACRO regime-gate sul book crypto — RIDONDANTE col trend, SCARTATO **Tesi.** Usare segnali macro/cross-market — equity (SPY/QQQ/IWM), credito (HYG/LQD), oro (GLD/SLV), tassi (TLT/IEF) — come **gate risk-on/risk-off** sul book BTC/ETH, per migliorare il *timing* del drawdown di TP01: regime risk-off (credito che cede, equity sotto trend, fuga sui bond) → riduci/azzera l'esposizione crypto; risk-on → lascia agire TP01. **È eseguibile** (gata solo BTC/ETH perp, non aggiunge gambe). Script `scripts/research/macro_regime_gate.py`, test `tests/test_macro_regime_gate.py`. Branch `research/equity-meanrev-ib` (separato, nessun impatto live). Dati: `data/raw/eq_*_1d.parquet` (ETF daily, allineati causale `merge_asof backward` sul calendario SPY). **NON è un lead-lag direzionale** (già morto: diari 2026-06-22/-23). L'angolo nuovo = un overlay binario/continuo di **de-risk** sul book esistente. ## Il rischio noto in partenza (CLAUDE.md) La lezione DVOL-spike (2026-06-26): un gate di de-risk rischia di essere **ridondante col trend** — TP01 è già long-flat e va a 0 nei crash (Δ 0.00). Questo script DOVEVA dimostrare che il gate aggiunge **oltre** quel che TP01 fa da solo. **Non ci riesce.** ## Gate provati (tutti causali: SMA/ratio/z-score rolling, merge_asof backward) `SPY>MA{50,100,150,200,250}`, `HYG>MA`, ratio di credito `HYG/LQD`, `HYG/IEF`, combo a maggioranza (SPY+HYG+HYG/LQD, binario e continuo), flight-to-quality (`TLTup&SPYdn`, `GLDup&SPYdn`), regime di vol equity `SPYvol_z1` (proxy "VIX-spike" senza VIX). g_off ∈ {0.0, 0.5}. ## Esiti I gate di trend equity alzano lo Sharpe FULL della combo (SPY>MA150/200/250 → FULL ~1.22-1.25 vs TP01-solo 1.30) ma **non l'hold-out** (HOLD ~0.17-0.19) → è **de-levering**, non timing: tagliano DD spegnendo il book in mercati equity laterali, non anticipando i crash crypto. Il miglior profilo DD è `SPYvol_z1`. ### Deep-dive `SPYvol_z1` — il controllo decisivo (ridondanza col trend) | | exposure TP01 risk-off | exposure risk-on | giorni risk-off | **giorni in cui il gate LAVORA** | corr(1-gate, 1-expo) | |---|---|---|---|---|---| | BTC | 0.023 | 0.093 | 18% | **3%** | 0.278 | | ETH | 0.013 | 0.068 | 16% | **2%** | 0.296 | "Il gate lavora" = giorno risk-off **E** posizione TP01 non già flat. Accade nel **2-3% dei giorni**: nel resto, quando il gate vorrebbe de-riskare, TP01 è **già flat da solo**. Il gate spegne un motore già spento. ### Marginal scorer vs TP01 (gate come candidato-sleeve) ``` abs=FAIL marginal=REDUNDANT EARNS_SLOT=False corr->TP01 full 0.989 hold 0.984 beta 0.978 resid Sharpe 0.739 multi-cut persistent=True has_insample_edge=True (standalone 1.634) is_hedge=False blend w25: full 1.323 (+0.026) hold 0.257 (-0.046) blend w50: full 1.348 (+0.051) hold 0.21 (-0.093) ``` corr→TP01 **0.989**, beta 0.98: lo stream gated **È** TP01. L'uplift hold-out è **negativo** (de-levering che toglie ritorno fuori dai crash). overlay-delta (gated−solo) come stream a sé: `verdict=NEUTRAL`. ## Causalità / eseguibilità (gli unici aspetti promossi) - **Leak-free**: `causality_ok=True` (max_tail_diff 0.0); STRICT align (1 barra equity extra di lag) → FULL invariato; `day_boundary_robust=INVARIANT` (spread 0.0). Allineamento macro→crypto backward-only. - **Eseguibile a $600**: haircut `eval_weights_smallcap` ≈ **0.00** su BTC ed ETH. Fee-survivente (0.00→0.30% RT: 1.42→1.33). Tecnicamente impeccabile — semplicemente **non aggiunge alpha**. ## Verdetto: **SCARTATO (ridondante col trend).** earns_slot=False. Conferma esatta della lezione in CLAUDE.md: un overlay di de-risk su un book che è **già** long-flat e già a 0 nei crash non ha quasi nulla da fare (lavora il 2-3% dei giorni, corr→TP01 0.99). Il taglio di DD che mostra è **de-levering**, replicabile meglio con un `target_vol` più basso (stessa lezione del TP01×DVOL overlay del 2026-06-26). Il macro-regime **non anticipa** i drawdown crypto meglio del prezzo crypto stesso. Nessuno sleeve registrato; nessun impatto sul book live. **Sottoprodotto utile:** il gate `redundancy_diag` (exposure risk-off vs risk-on + "quota giorni in cui il gate lavora") è il test pulito da riusare ogni volta che si propone un overlay di de-risk — se "il gate lavora" è basso e corr→TP01 ~1, è ridondante, a prescindere dallo Sharpe FULL che mostra.