Ondata onesta su angoli non coperti: funding-TS (chiude il filone funding su 3 lati), breadth alt (non-ridondante ma DSR 0.43, rivisitabile con storia), XS-residmom (REDUNDANT), pesi+guardia-DD (EW-STR refutato dallo scettico come selezione-sull'hold-out di 2° ordine, firma best-of-15), VRP-refine (filone esaurito), stagionalità-XS (morta allo step statistico). Lezione codificata: weights_tilt_null + combine_outer in src/portfolio (ogni cambio-pesi vs null di tilt casuali cap-respecting + delta in-sample>=0); 5 test nuovi, suite 165/165. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
13 KiB
2026-07-01 — Pesi statici ri-ottimizzati + guardia-DD sul portafoglio a 4 sleeve
Mandato
Migliorare il portafoglio ATTIVO (TP01 41.25 / XS01 18.75 / VRP01 15 / SKH01 25) SENZA nuove
strategie: (A) ri-ottimizzazione onesta dei pesi statici, (B) guardia-drawdown a livello
portafoglio (replica del soft-guard vincente del tail-hedge lab 2026-06-23), (C) combinazione.
NON meta-allocazione dinamica (già scartata, thread 3 del 2026-06-29).
Script: scripts/research/r0701_portfolio_opt.py. Solo ricerca: nessun file di src/ o live toccato,
i pesi sono PROPOSTI, non applicati.
Baseline riprodotta
run_portfolio.py oggi: FULL Sh 2.12 / HOLD 2.21 / DD full 7.8% / CAGR 23.3% (vs 2.13/2.30
del diario Skyhook: i dati sono avanzati di una settimana, coerente). Matrice sleeve outer-join
2019-03-14 → 2026-07-01 (TP01/SKH01 dal 2019, VRP01 dal 2021-05, XS01 dal 2024-01), combine
identico a portfolio.combined_daily (pesi rinormalizzati per-riga sugli sleeve attivi).
(A) Pesi statici — metodo
- Ottimizzazione SOLO in-sample (pre-cut), valutazione OOS (post-cut), multi-cut {2024-01, 2024-07, 2025-01}. Sleeve con <120 giorni in-sample al cut (XS01 al 2024-01) PINNED al peso corrente (l'ottimizzatore non ha dati per giudicarli).
- Criteri: MAXSH (max-Sharpe del combo simulato), RP (inverse-vol), ERC, MINVAR-R (min-var con vincolo ritorno ≥ pesi correnti). Null: EW (25×4) e CURRENT. Vincoli 5%≤w≤60%, Σ=1.
- Cap STRUTTURALI dichiarati (prudenza, non statistica): VRP01 ≤ 15% (sleeve MODELLATO su DVOL ATM, stress-f non catturato — "niente short-vol da modello in deploy"), XS01 ≤ 25% (STAT-MODE, storia ~2.5 anni). Varianti sotto cap: MAXSH-STR (ottimizzato) e EW-STR (EW proiettato sui cap, parameter-free → TP 30 / XS 25 / VRP 15 / SKH 30).
Risultati (pesi ottimizzati pre-2025, valutati FULL e HOLD-OUT 2025-26)
| criterio | pesi TP/XS/VRP/SKH | FULL Sh | FULL DD | FULL CAGR | HOLD Sh | HOLD DD | HOLD CAGR | multi-cut ΔSh OOS | anni vinti |
|---|---|---|---|---|---|---|---|---|---|
| CURRENT | 41.2/18.8/15/25 | 2.12 | 7.8% | +23.3% | 2.21 | 3.5% | +16.0% | — | — |
| MAXSH | 27.6/17.5/39.5/15.4 | 2.17 | 6.3% | +21.8% | 2.27 | 2.8% | +12.7% | +0.24/+0.08/+0.06 | 1/8 |
| RP-invvol | 26.7/15.5/41.6/16.3 | 2.17 | 6.4% | +21.8% | 2.25 | 2.8% | +12.4% | +0.28/+0.07/+0.04 | — |
| ERC | 26.6/16.2/41.6/15.7 | 2.17 | 6.3% | +21.7% | 2.25 | 2.8% | +12.4% | +0.29/+0.07/+0.05 | — |
| MINVAR-R | 26.7/23.3/29.6/20.4 | 2.18 | 6.4% | +23.3% | 2.37 | 2.6% | +16.1% | +0.20/+0.10/+0.16 | 4/8 |
| MAXSH-STR | 38.6/25/15/21.4 | 2.14 | 7.5% | +23.4% | 2.28 | 3.3% | +16.8% | −0.00/+0.03/+0.07 | 3/8 |
| EW | 25/25/25/25 | 2.14 | 7.0% | +24.5% | 2.39 | 2.8% | +18.1% | +0.16/+0.17/+0.18 | 6/8 |
| EW-STR | 30/25/15/30 | 2.10 | 8.5% | +25.2% | 2.35 | 3.2% | +19.7% | +0.06/+0.13/+0.14 | 7/8 |
Lettura onesta
- Gli OTTIMIZZATORI non aggiungono nulla — anzi overfittano. Tutti (MAXSH/RP/ERC/MINVAR-R) convergono sulla stessa mossa: scaricare TP01 e caricare VRP01 al 30-42% perché ha la vol più bassa (7.7%/anno). Ma quella è la vol del MODELLO (premio BS su DVOL, coda di stress non catturata): è esattamente il punto cieco tipo-CC01 ("Sharpe/vol implausibile → rischio nascosto"). E per-anno MAXSH vince 1/8 anni vs CURRENT — l'uplift multi-cut è smoothing di vol modellata, non alpha di allocazione. Dentro i cap l'ottimizzatore (MAXSH-STR) converge quasi sui pesi correnti (38.6/25/15/21.4) e NON è persistente (−0.00 al cut 2024-01) → i pesi correnti sono già ~ottimi per ciò che il backtest può giudicare lecitamente.
- L'unico segnale robusto è la DE-CONCENTRAZIONE parameter-free: EW-STR (EW sotto i cap, nessun parametro fittato) vince 7/8 anni (unica perdita 2021 −3.1pp), tutti i cut OOS (ΔSh +0.06/+0.13/+0.14), HOLD Sh 2.21→2.35, HOLD CAGR +16.0→+19.7%. Classico "1/N batte l'ottimizzazione" (DeMiguel). La sostanza: CURRENT dà il 41% al peggior Sharpe FULL del book (TP01 1.30) e EW-STR sposta ~11pp da TP01 verso SKH01 (+5pp) e XS01 (+6.25pp).
- MA non è un free lunch risk-adjusted: FULL Sh 2.12→2.10 e FULL DD 7.8→8.5% (più SKH01, che ha DD standalone 18%, pesa di più nei primi anni a 2 sleeve). L'uplift è un TILT di ritorno verso gli sleeve research-grade con la storia più corta/caveat più pesanti (SKH01 = research win, book 230m da verificare a deploy; XS01 = STAT-MODE non eseguibile a 2k). E TP01 resta l'unico sleeve deployed live: il suo 41% nel report riflette una scelta di prudenza/eseguibilità, non solo statistica.
VERDETTO (A)
- Ottimizzazione formale: NON MIGLIORA (viola i cap strutturali o converge ai pesi correnti). Per il book reale i pesi correnti reggono.
- Candidato PROPOSTO (non applicato): EW-STR = TP01 30 / XS01 25 / VRP01 15 / SKH01 30 — uplift OOS persistente e per-anno (7/8), dentro i cap, al costo di FULL DD +0.7pp e FULL Sh −0.02. È una decisione di risk-appetite (più ritorno atteso spostando peso su sleeve research-grade), non un miglioramento dominante. Se si vuole adottare, farlo consapevoli che aumenta la dipendenza da SKH01/XS01, e NON tocca il book Deribit eseguibile (TP75/SKH25).
Caveat metodologici (A)
- Le 3 finestre multi-cut sono ANNIDATE (tutte contengono il 2025-26): non 3 conferme indipendenti. Il test disgiunto vero è il per-anno (7/8 per EW-STR è il dato forte).
- EW-STR è stato costruito DOPO aver visto EW vincere (proiezione del null sui cap dichiarati): costruzione principled e parameter-free, ma va detto — non era nella griglia iniziale.
- I pesi CURRENT stessi furono fissati (2026-06-23) conoscendo l'hold-out → il confronto "in-sample-opt vs CURRENT su hold-out" è semmai sbilanciato A FAVORE di CURRENT; EW-STR vince comunque.
(B) Guardia-drawdown a livello portafoglio — metodo
Soft-guard causale sul combo 4-sleeve (pesi CURRENT): esposizione del giorno D decisa dal DD dell'equity fino a D−1; trigger/re-entry sul NAV ombra non-guardato (lezione stops_lab: sull'equity congelata a expo=0 il DD non rientra mai); isteresi re-risk a 0.4·X come nel tail-hedge lab. Griglia X∈{3,4,5,6}%, derisk∈{0,0.5}. Selezione cella IN-SAMPLE (max Calmar pre-2025), verifica hold-out + multi-cut, null de-levering (expo costante c che pareggia il MaxDD in-sample della guardia: Sharpe di c·r è invariante → la guardia vale solo se batte quello).
Risultati
- Cella scelta in-sample: X=5% / derisk=0.5 (IS Calmar 3.64 vs 3.24 baseline; IS DD 7.8→6.6%, IS CAGR 25.3→23.9%, IS Sh 2.13→2.12). In-sample batte il null de-levering c=0.84 a pari DD (CAGR 23.9% vs 21.0%) — il timing esiste in-sample.
- MA OOS è INERTE: a ogni cut la cella scelta non scatta MAI (ΔSh +0.00, ΔDD 0.0pp, ΔCAGR 0.0pp su tutti e 3 i cut) perché il DD OOS del 4-sleeve resta 3.5-4.8% < trigger 5%. La diversificazione a 4 sleeve fa già il lavoro della guardia (il 2022 del book è +11.6% con DD 3.6%: non c'è il grind da proteggere che aveva il combo TP01+GTAA del tail-hedge lab, DD 8.4% / 2022 −4.4%).
- Trigger più stretti che scattano davvero COSTANO: X=3%/d=0.5 → HOLD Sh 2.10 (< 2.21), CAGR 13.7% (< 16.0%); X=3-4%/d=0 whipsaw pieno (HOLD Sh 1.83-2.09; a X=4/d=0 il DD guardato IS sale addirittura a 8.8% > 7.8% baseline — accumulo di perdite su cicli off/on, lo stesso fenomeno visto in stops_lab con l'uscita totale).
VERDETTO (B)
NON MIGLIORA. La guardia-DD che vinceva sul combo TP01+GTAA (DD 8.4%, 2022 −4.4%) qui non ha bersaglio: il 4-sleeve ha già DD ~3.5-4.8% OOS. Coerente col thread meta-allocazione 2026-06-29 (drawdown-control ridondante). Nota operativa: la cella X=5%/d=0.5 è innocua (non fa nulla finché il DD non supera il 5%) e in-sample mostrava timing genuino sopra il null de-levering — può valere come circuit-breaker di emergenza sul live (risk management, non alpha), ma non è un miglioramento statistico e non la si adotta come tale.
(C) Combinazione
(B) è inerte → niente da combinare. Per completezza: EW-STR + guard X=5%/d=0.5 → FULL Sh 2.08, DD 6.7%, CAGR 23.7% | HOLD invariato 2.35/3.2%/19.7% (la guardia lima il DD 2021-2023 del tilt a costo di −0.02 Sh FULL). Nessuna adozione proposta.
Sintesi
| config | FULL Sh | FULL DD | FULL CAGR | HOLD Sh | HOLD DD | HOLD CAGR |
|---|---|---|---|---|---|---|
| CURRENT (attivo) | 2.12 | 7.8% | +23.3% | 2.21 | 3.5% | +16.0% |
| EW-STR (proposta A, non applicata) | 2.10 | 8.5% | +25.2% | 2.35 | 3.2% | +19.7% |
| CURRENT + guard 5%/0.5 (B) | 2.11 | 6.6% | +22.3% | 2.21 | 3.5% | +16.0% |
| EW-STR + guard (C) | 2.08 | 6.7% | +23.7% | 2.35 | 3.2% | +19.7% |
- (A) NON MIGLIORA in senso forte — i pesi correnti reggono; l'unico candidato onesto è il tilt de-concentrante EW-STR (30/25/15/30), un trade-off di risk-appetite da decidere, non un upgrade dominante. Gli ottimizzatori in-sample o violano i cap strutturali (VRP01 40%) o riconvergono sui pesi correnti.
- (B) NON MIGLIORA — guardia inerte OOS sul 4-sleeve; utile al più come circuit-breaker.
- Nessuna modifica a
src/portfolio/sleeves.pyo al live. Test 160/160 verdi.
Script: scripts/research/r0701_portfolio_opt.py (~4s, vettoriale).
Verifica avversariale (agente scettico)
Script: scripts/research/r0701_portfolio_skeptic.py. VERDETTO: NON APPLICARE — CURRENT resta.
I numeri dell'agente riproducono ESATTAMENTE (via StrategyPortfolio.combined_daily, path di
produzione: CURRENT 2.12/2.21, EW-STR 2.10/2.35, multi-cut +0.06/+0.13/+0.14, |diff|=0). Il claim
muore altrove: l'uplift è selezione-sull'hold-out di 2° ordine, non alpha di allocazione.
- L'uplift OOS vive TUTTO nel 2025-26 — la finestra che ha selezionato i beneficiari. Finestre OOS DISGIUNTE (i 3 cut del diario sono annidati): ΔSh EW-STR vs CURRENT = −0.12 (2024H1) / +0.06 (2024H2) / +0.14 (2025+). L'unica finestra OOS non toccata dalla selezione hold-out è negativa. Sharpe standalone IS→HOLD per sleeve: TP01 1.49→0.30, SKH01 1.42→1.64, XS01 1.22→1.51: EW-STR compra esattamente i due sleeve ammessi/affinati (2026-06-23 / 2026-06-19) PERCHÉ forti sull'hold-out e vende quello che lì collassa. Meccanico.
- Pre-2025 (finestra non contaminata) EW-STR PERDE risk-adjusted: ΔSh aggregato −0.05, Sharpe per-anno vinti 2/6 (2021 −0.29, 2020 −0.10, 2023/2024 negativi).
- "7/8 anni vinti" è un artefatto di metrica: è RITORNO composto (un tilt a più vol/ritorno li vince quasi per costruzione), non risk-adjusted. Su Sharpe per-anno: 3/8. E due dei 7 "vinti" (2023, 2024) hanno margine +0.03pp = tie. Bilancio materiale sul ritorno: 5 vinti / 1 perso (2021 −3.1pp) / 2 pari.
- Plateau: liscio ma il gradiente è solo "meno TP01"; a TP fisso, alzare SKH 25→30 è piatto/negativo (min multi-cut a TP35: +0.07→+0.02). Scomposizione: il tilt solo-SKH (+5pp, TP 36.25) da solo NON è persistente (multi-cut −0.00/+0.05/+0.04); il tilt solo-XS (TP35/XS25/VRP15/SKH25) è l'unico positivo su tutte le finestre disgiunte (+0.05/+0.02/+0.11) — ma pre-2025 fa ΔSh −0.00 (edge ≈ zero fuori dal 2025-26) e carica lo sleeve MENO eseguibile (STAT-MODE).
- Realismo: con l'outer-join rinormalizzato EW-STR tiene SKH01 al 50% effettivo nel 2019-20 e 40% nel 2021-23 (book research 230m a metà portafoglio: da lì il FULL DD 8.5%). Punto onesto A FAVORE: un haircut d'esecuzione a drag su SKH01(-20/30%) e SKH+XS non ribalta il ranking hold-out (ΔSh resta +0.08..+0.13), ma i livelli assoluti crollano (HOLD Sh CURRENT 2.21→1.64 al −30% su entrambi) e il beneficio resta di CARTA: il book Deribit eseguibile (TP75/SKH25) non è toccato dalla decisione.
- Forking paths quantificato: ≥15 config valutate sull'hold-out (7 vettori pesi + 8 celle guardia), EW-STR costruito dopo aver visto EW vincere. Su 500 tilt CASUALI cap-respecting: 51% batte CURRENT sull'hold-out (mediana ΔSh +0.00), solo 11% sul FULL, 30% su tutti e 3 i cut. EW-STR è al 94° percentile dell'uplift hold-out fra i tilt casuali ≈ il massimo atteso di ~15 tentativi (k/(k+1)=93.8%): l'uplift osservato è indistinguibile dal "best of 15 tilt casuali scelto sull'hold-out".
Conclusione: il tilt non è disonesto nei conti ma non è evidenza — è la stessa lezione del gate SELECTION-ON-HOLDOUT applicata al livello dei PESI (2° ordine: gli sleeve stessi sono stati selezionati su quell'hold-out). Unica direzione sopravvissuta: XS01 18.75→25 (solo-XS, positivo su tutte le finestre disgiunte), MA edge ≈0 fuori dal 2025-26, sleeve STAT-MODE non eseguibile a $600, e l'hold-out-strength di XS01 è a sua volta concentrata dal gate di dispersione nel regime 2025-26 → da rivalutare SOLO con più storia forward, non ora. CURRENT (41.25/18.75/15/25) resta.