Files
PythagorasGoal/docs/diary/2026-05-29.md
T
Adriano 9ebdfc7a7a feat(ROT02): riduce il DD diversificando (top_k 2 -> 3)
ROT02 concentrava il book su 2 soli asset (DD 40%). top_k=3 dimezza quasi il DD
(40% -> 26%) e ALZA il ritorno full (+1095 -> +1303%, ret/DD da 27 a 50). Il
vol-target abbassa il DD ma sacrifica ritorno (de-leverage) -> tenuto top_k=3
senza VT. Caveat: OOS di ROT02 cala (+98 -> +68%, DD 12 -> 14%), ma il portafoglio
MASTER migliora lo Sharpe full (3.95 -> 4.23). Applicato a ROT02_dual_momentum.py
e a _rot_daily_equity (usata da PORT01/PORT03). Docstring/CLAUDE/diario aggiornati.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 00:30:55 +02:00

3.7 KiB
Raw Blame History

Diario di ricerca — 2026-05-29

Combinare le strategie migliora i risultati?

Domanda: usare insieme le due famiglie di strategie presenti sul repo migliora il profilo rischio/rendimento rispetto a usarle separatamente?

  • FADE (mie): reversione intraday 1h, long/short, BTC/ETH — MR01 Bollinger, MR02 Donchian, MR03 Keltner, MR07 Return-reversal (tutte col filtro trend 3.0 ATR).
  • HONEST (altra sessione): long-only multi-regime multi-crypto — DIP01 (dip-buy 1h BTC), TR01 (EMA-trend 4h basket), ROT02 (dual-momentum rotation 1d).

Metodo (scripts/analysis/combine_portfolio.py): per ogni sleeve si costruisce l'equity giornaliera normalizzata su un indice comune (2021-01-01 → 2026-05-26), si passa ai rendimenti giornalieri, si misura la correlazione cross-famiglia e si confrontano i portafogli equal-weight (ribilanciati ogni giorno), 50/50 fra famiglie e inverse-vol. Metriche FULL e OOS (ultimo 30% della finestra comune, da 2024-10-12): ritorno, CAGR, max DD, Sharpe annualizzato. Le curve honest sono riusate da honest_improve2.py; quelle fade da risk_management.build_trades.

Correlazione: cross-famiglia +0.05 (quasi indipendenti). Intra-fade +0.18, intra-honest +0.05. L'unica coppia un po' correlata è MR01_BTC↔DIP01_BTC (+0.43), entrambe mean-reversion su BTC. Famiglie scorrelate ⇒ diversificazione quasi ideale.

Risultati (FULL | OOS):

Portafoglio Ret% CAGR DD% Sharpe oDD% oSharpe
FADE only (8) +549 41 8.6 3.75 5.4 4.14
HONEST only (3) +642 45 12.0 1.90 6.5 2.23
ALL equal-weight (11) +589 43 6.1 3.95 4.6 4.46
ALL 50/50 famiglie +615 44 5.5 3.18 4.0 3.87
ALL inverse-vol +483 39 5.8 3.97 4.6 4.02

Conclusione: sì, combinare conviene.

  • DD crolla: combinato 5.56.1% full / 4.04.6% OOS, contro 8.6% (fade) e 12% (honest) da sole → drawdown ridotto del 3550%.
  • Sharpe sale: combinato OOS 4.46 vs honest 2.23 (raddoppia) e batte pure fade (4.14).
  • CAGR resta ~4344% (≈ media delle due famiglie) ma con metà del rischio: è il "free lunch" della diversificazione fra sorgenti di edge scorrelate.
  • Best Sharpe = equal-weight degli 11 sleeve; best DD = 50/50 fra le due famiglie.

Caveat onesti: la finestra comune è 20212026 (5.4 anni), OOS ~2024-10→oggi (1.6 anni) — pochi regimi. CAGR e Sharpe sono backtest a leva 3x; il 2024 cripto favorevole pesa. Il target €50/giorno resta vincolato dal capitale: 43% CAGR su €1000 non fa €50/giorno a breve, serve compounding pluriennale o più capitale. Prossimo passo: confermare il portafoglio combinato nel paper trader live.

File: scripts/analysis/combine_portfolio.py (nuovo).

Pulizia roster + miglioria ROT02

  • Waste delle peggiori: MR03 Keltner (fade più debole, Sharpe 1.22, ridondante con MR01 — rimuoverla migliora il portafoglio fade: DD 8.6→8.2, ret +549→+666) e ROT01 (dominata da ROT02). Spostate in scripts/waste/.
  • Portafogli pronti: PORT02_fade_master (6 sleeve fade) e PORT03_all_master (9 sleeve fade+honest, varianti equal/5050).
  • ROT02 DD alto → migliorato: la rotazione concentrava il book su 2 asset (DD 40%). Sweep su rot_improved: top_k=3 dimezza quasi il DD (40%→26%) e alza il ritorno full (+1095→+1303%, ret/DD 27→50). Il vol-target abbassa il DD ma sacrifica ritorno (de-leverage) → tenuto top_k=3 senza VT. Caveat onesto: l'OOS di ROT02 cala un po' (+98→+68%, DD 12→14%), ma il MASTER (config deployata) migliora lo Sharpe full 3.95→4.23. Applicato a ROT02_dual_momentum.py e _rot_daily_equity. Sweep in honest_improve.rot_improved.