# 2026-06-21 — Caccia all'ORTOGONALE a TP01: relative-value BTC/ETH (eseguibile a $600)

## Perché (richiesta utente: "cerca ortogonale a TP01")

La flotta cieca (stesso giorno) ha confermato: niente di NUOVO in direzionale BTC/ETH — tutto è
trend-beta di TP01 (soffitto ~1.3). L'unica via a un nuovo slot LIVE è un meccanismo **ortogonale**
(bassa correlazione, alpha residua). Il più promettente **eseguibile al capitale reale ~$600** è un
**book RELATIVE-VALUE a 2 gambe BTC/ETH** (long una / short l'altra), grosso modo market-neutral →
correlazione naturale bassa col trend, e a 2 gambe è eseguibile (a differenza del book a 19 gambe di
XS01 che serve ~$20k).

## Setup — ortho-lab + giudice MARGINALE (non Sharpe assoluto)

`scripts/research/ortho/ortholib.py`: BTC/ETH 1d allineati su date comuni; `eval_book(book_fn)` con
`book(btc,eth)->(w_btc,w_eth)`, **shift di entrambe le gambe** (no leak), fee su entrambe, serie netta
**giornaliera**; guardia di causalità online; check **eseguibilità a $600** (max gamba ≤ 0.5 = cap
$300/asset). Il giudice è `altlib.marginal_vs_tp01`: **corr a TP01, uplift OOS del blend, alpha
residua, robust_oos** (clean-year + jackknife drop-month). Verdetto = ADDS, **non** Sharpe assoluto.
`ortho_score.py` (giudice), `meta_ortho.py` (corr mutua + persistenza multi-cut), `sleeve_rv.py`.

Sanity: ratio-momentum → ADDS (corr 0.05); ratio-mean-reversion → DILUTES. L'harness discrimina.

## Flotta — 18 agenti relative-value (~40 min)

18 ipotesi distinte: ratio-momentum multi-orizzonte, XS a 2 asset, beta-neutral residuo, Donchian
sul ratio, EMA-cross, accel, carry lento, Kalman-spread, gate-correlazione, gate-vol, inverse-vol,
rebalance-harvest, lead-lag, **DVOL-spread**, **VRP relativo**, dispersione, ensemble.

**Esito grezzo: 18 riportati, 17 "ADDS / earns_slot".** → **bandiera rossa**: non esistono 17 alpha.
Gli agenti stessi l'hanno annotato ("hold-out corto ~537g", "uplift dipende dal regime ETH-bleed
2025", "forward-monitor non full-weight").

## Diagnosi dell'orchestratore — il "17 slot" è gonfiato

1. **Una scommessa o tante?** corr mutua media **0.43** → collassano a **8 rappresentanti**
   de-correlati. Non 17, non 1.
2. **Persistente o solo finestra 2025?** `marginal_vs_tp01` fissa l'hold-out al 2025-01-01 = proprio
   la finestra dove ETH ha perso vs BTC e TP01 è debole. Ri-misurando l'uplift a **più cut**
   (2022/23/24/25): il basket selection-free era +0.06/+0.06/+0.11/+0.38 (positivo ovunque ma
   crescente verso il 2025). Smaschera anche i **falsi** che il robust_oos fisso-2025 non vede:
   `kalman_spread` (−0.14/−0.16/−0.10 poi +0.37) e `xs2_zscore` sono **2025-only**.
3. **Selezione walk-forward (senza hindsight):** scegliere i top-4 per uplift sul **solo passato** e
   testare in avanti → uplift **−0.07** (sel <2023) / +0.05 (<2024) / +0.43 (<2025). **Scegliere la
   variante vincente in anticipo è inaffidabile**; il mio "curated 4" è in parte hindsight.

## Verifica avversariale (scettico indipendente) — REFUTED

Sul **basket selection-free** (equal-weight di tutti i book market-neutral, NESSUN cherry-picking):
- standalone Sharpe **0.61**, maxDD 15%, **corr a TP01 0.05** (genuinamente ortogonale).
- **uplift full +0.078 = pre-2025 +0.027 / solo-2025+ +0.401.** Il pre-2025 **+0.027 sta al 49°
  percentile di 500 asset-rumore a corr-zero** (+0.029 per costruzione) → è **matematica di
  diversificazione, non segnale**.
- **corr(Sharpe annuo TP01, uplift annuo basket) = −0.87**; condizionato: TP01 su → +0.014, TP01 giù
  → +0.369. **È un hedge dei drawdown di TP01, non un premio autonomo.** Paga nel 2022 (orso) e
  2025-26 (ETH-bleed) — i due anni peggiori di TP01 — rumore altrove (2023 −0.06, 2024 −0.12).
- Block-bootstrap P(uplift>0): full 90%, **pre-2025 66% (testa o croce)**, 2025+ 99%.
- Fee: a **0.30% RT il pre-2025 va NEGATIVO** (−0.021); sopravvive solo il numero del regime 2025.
- Eseguibilità OK ($264/gamba, turnover 12/yr) — non è quello il problema.

## Verdetto

**Niente di questa flotta merita uno slot LIVE.** Il meccanismo relative-value BTC/ETH è REALE e
genuinamente ortogonale (corr ~0.05), ma è un **hedge della debolezza di TP01 travestito da alpha**:
il suo contributo pre-2025 è indistinguibile da un asset-rumore a corr-zero (49° percentile del null)
e muore a fee realistiche; l'unico payoff vero è una singola finestra di 537 giorni (2025-26).
Deployarlo = deployare un backtest mono-regime. **Resta live solo TP01** (l'unica cosa che supera
tutto questo scrutinio). Coerente con XS01 (stessa famiglia cross-sectional): diversificatore
da monitorare, non alpha da eseguire — e la versione a 2 asset è ancora più sottile della 19-gambe.

### Valore metodologico (cosa resta, ed è importante)

- **Il marginal scorer fisso-2025 è ingannabile** (17/18 "ADDS"). Ciò che ha ucciso i falsi positivi:
  **persistenza multi-cut** + **selezione walk-forward** + **bootstrap vs null a corr-zero**. Lezione
  da cablare nello scorer: testare PIÙ cut e confrontare l'uplift col **null di un asset-rumore
  ortogonale** (un'asset scorrelato con drift positivo "aggiunge" +0.03 per pura matematica — non è
  un edge). Un basso-corr che paga solo quando il core è debole è un **hedge**, va prezzato come tale.
- Lab riusabile: `ortholib`/`ortho_score`/`meta_ortho` (giudice marginale + persistenza). I 18 book +
  `sleeve_rv.py` (curated, **selection-biased — non deployare**) restano come riferimento.

File: `scripts/research/ortho/{ortholib,ortho_score,meta_ortho,sleeve_rv}.py`,
`agents/agent_00..17_*.py`, `ortho_leaderboard.json`, skeptic `skeptic_{basket,regime,null}.py`.

## AGGIORNAMENTO — lezione codificata in `altlib.marginal_vs_tp01` (stesso giorno)

I tre gate sono ora **codice**, non solo prosa (test `tests/test_marginal_scorer.py`, +5 test):
1. **persistenza multi-cut** (`multicut_uplift`/`multicut_persistent`): uplift a ogni inizio anno,
   non solo all'HOLDOUT fisso → uccide i 2025-only (es. `kalman_spread`, negativo a ogni cut pre-2025).
2. **edge in-sample** (`has_insample_edge`): lo Sharpe standalone PRE-holdout dev'essere ≥0.5. È il
   discriminante onesto (la basket faceva 0.29). I `null_pctl_*` (vs asset-rumore a corr-zero) restano
   come CONTESTO — mostrano che un low-corr "aggiunge" ~+0.03 per matematica, vero per sleeve buoni e
   cattivi, quindi non possono essere IL gate; l'edge in-sample sì.
3. **hedge vs alpha** (`is_hedge`): `corr(Sharpe-TP01, uplift annuo)` molto negativa + paga solo
   quando TP01 è giù → HEDGE, non alpha.

Verdetti nuovi **HEDGE** e **NOISE**; `earns_slot` ora pretende ADDS + robust_oos + has_insample_edge
+ not is_hedge. **Sull'onda ortho lo scorer indurito ribalta 17/18 "ADDS" → 1** (`dvol_spread`, unico
con edge in-sample reale 0.57; gli altri 16 → NOISE/HEDGE). Controllo: un sleeve sintetico Sharpe~1.3
scorrelato resta **ADDS** (non rigetta i diversificatori veri — XS01-like). La verifica avversariale
di 3 giorni è ora una chiamata di funzione.
