Files
PythagorasGoal/docs/diary/2026-06-08-dispersion-correlation-search.md
T
Adriano Dal Pastro 7f4378190e research: ricerca dispersion/correlation index (165 agenti) — 2 edge su 60, nessun nuovo motore
Workflow 60 celle (15 famiglie x 4 finestre), verifica avversariale 2-skeptic.
Esito: 2 edge confermati causali (index_comp_disp W168, rel_idio_fade W24), ma
entrambi fade-BTC del residuo idiosincratico -> sovrapposti alle MR esistenti
(P migliora-PORT06 ~20%, lezione FR01). 13/15 famiglie rumore (overfit/regime,
non look-ahead). Edge preservati in scripts/analysis/dispersion_edges/; harness
riusabile dispersion_lab.py (gia' committato). Diario + TODO follow-up.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 03:32:31 +00:00

3.5 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.