# 2026-06-09 — XS01: reversione cross-sectional (famiglia nuova, trovata + deployata PAPER) ## Origine Dopo aver scartato (alla cieca, coi giochi) trend/breakout/seasonal/opzioni/funding come rumore o −EV, ho cercato io un meccanismo *diverso* dalla mean-reversion pairwise. Trovato: **XS01 — reversione CROSS-SECTIONAL** su 8 asset (BTC/ETH/LTC/ADA/SOL/BNB/XRP/DOGE). ## Meccanismo Ogni HOLD=12 ore: classifica gli 8 asset per rendimento su LB=48 ore, pesi w = −(ret − media_cross-section), normalizzati a gross 1 → **long i perdenti relativi / short i vincenti**, market-neutral. Roll non sovrapposto (entry-to-entry = hold+1 barre). Fee 0.10% RT/book. Cattura il FATTORE reversione trasversale, distinto dai pairs (pairwise). ## Verifica (engine canonico `scripts/strategies/XS01_cross_sectional.py`) - **No look-ahead** verificato (segnale invariato perturbando il futuro). - **Robusto**: plateau OOS Sharpe **2–3.9** su lb 12–72 × hold 6–24. - **Scorrelato**: corr **−0.006 / 0.035** da PR01 ETH/BTC, −0.028 dai fade → diversificatore. - Per-anno (entry): 2022 +34, 2023 +6, 2024 +21, **2025 +225**, 2026 +85 (5/5 anni+). - **Caveat**: edge concentrato sul 2025; cost-sensitive (muore ~0.35% RT/book); 8 gambe; storia dal 2022 (no 2018-2020). ## Worker validato (== backtest esatto) `src/live/xsec_worker.py` `CrossSectionalWorker`: book market-neutral che rolla ogni HOLD barre, stessa formula pesi e cadenza dell'engine. `validate_xsec_worker.py`: replay bar-per-bar == backtest **ESATTO** (worker 4993/1427 trade/49.8% == backtest 4993/1427/49.8%). Bug risolto: il primo prototipo rollava 1 barra troppo tardi (cooldown extra) → rimosso, guard a lb+1, entry-to-entry = hold+1. ## Gate PORT06 — PROMOSSO (con asterisco) | | corr | FULL Sh | FULL DD | OOS Sh | OOS DD | |---|---|---|---|---|---| | ATTUALE (19→ senza XS01) | — | 7.20 | 3.68 | 9.66 | 1.31 | | **+XS01** | −0.006 | **7.34** | **3.46** | **10.07** | 1.48 | Migliora 3 metriche su 4 (OOS Sharpe **+0.41**, il salto più grande dal 15m; FULL DD giù). Unico neo: OOS DD +0.17pp. Risk-contrib XS01 solo **2.2%** (diversificatore a bassa vol). ## Deploy (v?, 2026-06-09) — PAPER 8 gambe → niente esecuzione reale (come TR01/ROT02/TSM01) → XS01 gira **PAPER** (`paper_sleeves`), fuori dal pool, raccoglie statistica forward. Wiring: `_defs.XSEC` in PORT06 (19 sleeve, family XSEC via prefix "XS"), `build_everything` (equity da xsec_sim), `runner` kind="xsec" → CrossSectionalWorker, `asset_days` ora include i paper (fix: gli alt BNB/DOGE/XRP ora vengono fetchati anche per TR01/ROT02/TSM01). Regression-lock aggiornati (18→19 sleeve, FULL 7.20→7.34, OOS 9.66→10.07, DD 3.68→3.46). 93 test verdi. **Direzione futura:** se la statistica forward conferma, costruire l'esecuzione reale a N gambe (oggi inesistente) per portarlo nel pool. Per ora: candidato validato che gira PAPER e si osserva. Artefatti: `scripts/strategies/XS01_cross_sectional.py`, `src/live/xsec_worker.py`, `scripts/analysis/{validate_xsec_worker,xsec_port06_gate}.py`.