Files
PythagorasGoal/Old/docs/diary/2026-06-10-xs01-dispersion-gate.md
Adriano Dal Pastro 14522262e6 chore(reset): v2.0.0 — storico certificato Deribit mainnet, ripartenza pulita
Reset del progetto su fondamenta verificate dopo la scoperta che l'intera
libreria "validata OOS" era artefatto di feed contaminato (print fantasma del
feed Cerbero TESTNET + storico Binance/USDT).

- Storico ricostruito da Deribit MAINNET (ccxt pubblico, tokenless) e
  CERTIFICATO (certify_feed.py): BTC/ETH puliti su TUTTA la storia
  (mediana 2-6 bps vs Coinbase USD), integrita' OHLC + coerenza resample
  (maxΔ 0.00) + cross-venue OK. Alt esclusi (illiquidi/divergenti: LTC/DOGE
  50-82% barre flat; XRP/BNB non certificabili).
- Verdetto sul feed pulito: FADE / PAIRS / XS01 / TSM01 morti (ogni
  portafoglio Sharpe -2.3..-3.0, DD ~40%); solo SH01 e frammenti HONEST
  con segnale residuo, da ri-validare in isolamento.
- Cleanup "restart pulito": strategie, stack live (src/live, src/portfolio,
  runner/executor, yml, docker), ~100 script ricerca/gate, waste/games/
  portfolios, dati non certificati + cache e 60+ diari -> archiviati in Old/
  (preservati, non cancellati). Diario consolidato in un unico documento.
- Skeleton ricerca tenuto: Strategy ABC + indicatori + src/fractal +
  src/backtest/engine + load_data; tool dati certificati (rebuild_history,
  certify_feed, audit_feed, multi_source_check).
- Universo dati ATTIVO: solo BTC/ETH (5m/15m/1h); guardrail fisico
  (load_data su alt -> FileNotFoundError). Esecuzione DISABILITATA, conto flat.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:20:59 +00:00

2.7 KiB
Raw Permalink Blame History

2026-06-10 — XS01 dispersion-gate: PROMOSSO e LIVE (entry solo con dispersione da fare rientrare)

Domanda

L'edge di XS01 (reversione cross-sectional 8 asset) era concentrato (2025 domina, 2023 quasi piatto) e cost-sensitive. La reversione cross-sezionale va accesa solo quando c'e' dispersione da far rientrare?

Metodo (anti multiple-testing): scripts/analysis/xs01_dispersion_gate.py

3 feature di regime CAUSALI calcolate dallo stesso panel closes (nessun feed esterno): g_disp = std cross-section del momentum lb (la grandezza che si fada), g_corr = correlazione media pairwise 72h (identita' della varianza dell'indice), g_vol = vol BTC 168h. Diagnostica per quintili (quintili dal TRAIN, 70/30) sul net per-trade dell'engine canonico NON gateato, TRAIN e OOS separati: si procede solo con relazione monotona e concorde nelle due finestre.

Esito diagnostica

  • g_disp: monotona e concorde — Q1 NEGATIVO (10 bps TRAIN / 8 OOS) → Q5 +26/+280. Senza dispersione i trade sono solo fee. PROMOSSA.
  • g_corr e g_vol: non monotone / segno incoerente → BOCCIATE (niente fishing).

Gate (sweep soglie = percentili TRAIN, side dal TRAIN)

Plateau pieno p30-p70, niente picco: TRAIN Sh 1.51 → 2.0-2.3, OOS Sh 5.73 → 6.2-7.5. Scelta p50 (disp_min = 0.0313), ~47% delle ore aperte:

  • Standalone: trade 1427→859 (40% turnover → meta' fee), win 50→53%, Sharpe 2.50→3.46, DD 16.2→15.8%. Ogni anno migliora: 2022 +34→+40, 2023 +6→+28, 2024 +21→+44, 2025 +225→+237, 2026 +85→+108 — risolve la concentrazione, il punto debole della validazione originale.
  • Fee stress 2x (0.20% RT/book): OOS Sh 6.76 — la cost-sensitivity e' mitigata (il gate taglia proprio i trade che pagavano fee senza edge).
  • Gate PORT06 (swap equity sleeve): FULL Sh 7.34→7.41 DD pari, OOS Sh 10.07→10.37 DD 1.48→1.47 → PROMOSSO (criterio standard).

Implementazione (solo path LIVE, come trend/hurst sulle fade)

  • src/live/xsec_worker.py: param opzionale disp_min (None = off), check in _open_book su nanstd(logC[i] logC[ilb]). Default off → la validazione validate_xsec_worker (replay == backtest) resta esatta.
  • src/portfolio/runner.py: pass-through di disp_min (il runner costruiva il dict params esplicitamente e l'avrebbe perso).
  • scripts/portfolios/_defs.py: disp_min: 0.0313 nella spec XS01.
  • Il backtest canonico (build_everything) resta NON filtrato → il live fara' meglio del backtest, coerente con le altre guardie.

Unit check: gate blocca panel piatto / apre panel disperso / default off invariato. 99/99 test. Nota macro della giornata: FC01 funding-carry SCARTATA (diario separato) — il protocollo promuove ~1 idea su molte, come deve.