Files
PythagorasGoal/Old/docs/diary/2026-06-08-dispersion-correlation-search.md
T
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

4.7 KiB
Raw Blame History

2026-06-08 — Ricerca multi-agente: dispersion / correlation index (165 agenti)

Workflow dispersion-correlation-research (run wf_72edef49-6d9): 60 celle esplorate (15 famiglie × 4 finestre di correlazione W=24/72/168/336), 165 agenti totali, ~10M token, verifica avversariale a 2 skeptic su ogni candidato robusto + sintesi.

Infrastruttura riusabile: scripts/analysis/dispersion_lab.py — feature REALIZED causali (avg pairwise correlation, dispersione cross-sectional, beta vs indice EW, componente idiosincratica rel_A = ret_A ret_idx), universo 8-asset, finestra comune dal 2022-07-22, cache su disco, no-look-ahead verificato. NB: niente implied (opzioni non backtestabili — stesso muro ARGO/GEX).

Esito: 2 edge confermati su 60, 13 famiglie su 15 sono RUMORE

Nessun look-ahead "hard" stile-squeeze (le feature hanno retto la perturbazione del futuro ovunque). Il fallimento dominante è overfit/concentrazione di regime, non leakage. Tre pattern ricorrenti di falso positivo:

  1. OOS circolare: le feature esistono solo dal 2022-07 → lo split OOS (ultimo 30%) cade nel bull/calm 2024-25 (il regime che il progetto documenta come ottimistico ~50%); FULL≈OOS non era robustezza ma "quasi tutti i trade in OOS".
  2. Il gate corr/disp non è quasi mai load-bearing: in ablazione, togliere il gate spesso MIGLIORA i numeri → è un throttle di esposizione, non alpha (e Hurst-guard + EXIT-16 fanno già quel lavoro).
  3. Riconferma del prior: l'edge è sempre mean-reversion del residuo, mai momentum/continuation/breakout cross-sectional.

I 2 edge reali (entrambi fade del residuo idiosincratico)

  • index_comp_disp W=168 (BTC) — il vero "dispersion-trading realizzato": fade della componente idiosincratica estrema verso l'indice, gated da alta dispersione (disp_168 ≥ quantile 0.7). rel_len=12, z_thr=1.5, TP=1.0·ATR, SL=1.5·ATR, mb=24. FULL +63% / OOS +36% (fee0.2% +23%), win 66%, Sharpe 2.7-3.0, DD 7-9%, 5/5 anni. È l'UNICA famiglia dove il gate dispersione fa davvero qualcosa.
  • rel_idio_fade W=24 — fade dello z-score di rel_A su 24h, exit a tempo (no TP/SL). Cella più pulita BTC z3.0 mb12: win 58.5%, Sharpe 4.40, DD 7%, OOS +98%. Più forte ma è quasi MR07 ri-etichettata in chiave cross-sectional.

Script preservati: scripts/analysis/dispersion_edges/{index_comp_disp,rel_idio_fade}.py.

Raccomandazione: bassa priorità

Entrambi sono fade-BTC mean-reversion → sovrapposti alle fade MR già deployate. P(migliora PORT06): ~20-25% per index_comp_disp, ~15-20% per rel_idio_fade. Vale la lezione FR01 (robusto-individualmente ≠ migliora-il-portafoglio: FR01 era robusto e causale ma diluiva PORT06 OOS Sharpe 8.89→8.72). index_comp_disp ha il profilo trade più distinto (win 66%, hold corto, TP vicino) → è l'unico che merita eventualmente un gate combine_v2/PORT06 formale, misurando corr col MASTER e ΔSharpe/ΔDD. Se non decorrela, scartare.

13 famiglie rumore (record in _disp_scratch/, gitignored): corr_gate_fade/pairs, disp_xs_reversal/momentum, corr_spike_btc, corr_meanrev, beta_disp, disp_regime_rot, corr_vol_interact, leadlag_corr, corr_trend, disp_compression_breakout, corr_disp_combo — tutte MR/fade ri-etichettate, concentrazione 2024-25, o artefatti di feed morto (ADA/LTC 97% candele flat). disp_compression_breakout riconferma la lezione squeeze (i breakout rientrano).

Conclusione onesta: nessun nuovo motore di ritorno. Il dispersion-trading realizzato funziona solo come l'ennesima faccia della mean-reversion già sfruttata.

Gate PORT06 del candidato n.1 (2026-06-08) — PROMOSSO MARGINALE, NON deployato

scripts/analysis/dispersion_edges/gate_index_comp_disp.py (config W=168: rel_len=12, z_win=336, z_thr=1.5, disp_q=0.7, TP=1.0ATR, SL=1.5ATR, mb=24; equity daily innestata come 18° sleeve, pesi cap):

  • Sorpresa positiva: decorrela DAVVERO. corr daily col candidato: MR01_BTC +0.01, MR02_BTC +0.05, MR07_BTC +0.06, DIP01_BTC +0.02, MASTER(EW) +0.06. Il timore di ridondanza con le fade BTC era infondato (gate dispersione + TP vicino = profilo trade distinto). Standalone 311 trade, FULL +67% / OOS +30%.
  • Ma beneficio nel rumore: PORT06 BASE→+DISP: FULL Sharpe 6.43→6.47, FULL DD 3.96→3.73 (migliora), OOS Sharpe 8.58→8.56 (0.01), OOS DD 1.36→1.40 (+0.04) — l'OOS è PIATTO. Passa il gate tecnico ma il guadagno è solo nel FULL (regime storico).
  • Decisione (utente): documenta e rimanda. NON deployato — wiring (nuova Strategy+worker, famiglia DISP, peso cap) + resterebbe simulato (no executor), per un beneficio OOS nullo. Gate script committato e pronto: riprendere SOLO se si costruisce una famiglia DISP più ampia (più asset/sleeve) che insieme sposti l'OOS. Esito ~20% previsto, confermato.