b9b2ef1b26
Domanda: "quale sleeve terrei?". Il leave-one-out ovvio e' misurato all'ancora canonica di tutti e cinque gli sleeve, quindi NON e' credibile: un LOO e' un Delta, ed eredita la fortuna d'ancora come ogni Delta (lezione 26/07, altlib.anchor_luck_delta). Metodo: 2000 estrazioni uniformi indipendenti sullo spazio congiunto 24x10x7x23x5 = 193.200 configurazioni; book completo + 5 LOO alla STESSA configurazione; statistica = mediana delle differenze appaiate. Sanity bit-exact 5/5 (max|dif| = 0.0) contro gli sleeve di produzione. Quattro repliche ancorate riusate dagli audit 02/07-03/07, solo la fase di GTAA01 e' nuova (ed e' l'unica coperta da test dedicato). RISULTATI - Livello del book: la stima a occhio del 02/07 era ottimista su 3/3 metriche. FULL 2.222 (97.0 pctl) -> 1.95 | HOLD 2.364 (99.6 pctl) -> 1.54 [1.11, 1.91] | maxDD 6.07% (12.0 pctl) -> 6.85%. Solo 9 estrazioni su 2000 battono l'hold-out canonico. La somma delle fortune marginali NON e' la mediana congiunta: sbagliava di +0.82 di Sharpe. - SKH01 non e' il motore del book: l'ancora regala 2/3 del FULL, 70% dell'hold-out, 80% della protezione DD -> de-luckato e' il meno affidabile dei cinque. - GTAA01 e' l'unico positivo nel 100% delle estrazioni su tutte e tre le metriche e il miglior protettore di DD. Ma attribuzione != eseguibilita': sotto $3k resta non deployabile. - TP01 e' il maggior contributore (+0.390 FULL, 2000/2000) e il canonico lo SOTTOSTIMAVA. Il suo hold-out negativo non e' artefatto d'ancora (negativo nel 99.1%): e' la firma dell'assicurazione. Uno sleeve difensivo si giudica sul sinistro, non sul premio. - XS01: protezione DD esattamente zero (positiva nel 43% = moneta) -> diversificatore di rendimento, non di rischio. VRP01: 2a conferma di zero fortuna (canonico all'1.8 pctl). Corretto in sessione: un "pctl 100%" era arrotondamento di 99.55% con %.0f — un percentile a 0 decimali mente esattamente agli estremi, che sono l'unico posto dove lo si legge. Book, pesi, cron, config INVARIATI. Non e' un gate sui pesi (resta weights_tilt_null) e non e' evidenza out-of-sample: e' attribuzione, de-luckata. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
226 lines
12 KiB
Markdown
226 lines
12 KiB
Markdown
# 2026-07-26 — "Quale strategia terrei?" — leave-one-out del book DE-LUCKATO sulle ancore
|
||
|
||
**Richiesta:** *"dimmi qual strategia pensi di tenere"*.
|
||
|
||
**Script:** `scripts/research/r0726_loo_deluck.py` — **test:** `tests/test_loo_deluck.py` (9).
|
||
**Book, pesi, cron, config: INVARIATI.** Nessuna decisione di allocazione cambia.
|
||
Cambia invece un **numero documentato in CLAUDE.md** (§4) e cambiano **due giudizi che avevo
|
||
dato un'ora prima nella stessa sessione** (§3).
|
||
|
||
---
|
||
|
||
## 0. Perche' la risposta ovvia non vale
|
||
|
||
La domanda "quanto vale ogni sleeve al suo posto nel book" ha una misura ovvia: togli lo sleeve,
|
||
guarda quanto cala il book. L'ho fatta, e alla prima lettura diceva questo:
|
||
|
||
```
|
||
BOOK COMPLETO FULL +2.222 HOLD +2.364 maxDD 6.07%
|
||
tolto dFULL dHOLD dDD
|
||
TP01 (33%) +0.280 -0.219 +0.24pp
|
||
XS01 (15%) +0.142 +0.640 +0.25pp
|
||
VRP01 (12%) +0.087 +0.064 +1.08pp
|
||
SKH01 (20%) +0.432 +0.652 +1.64pp
|
||
GTAA01 (20%) +0.120 +0.244 +1.70pp
|
||
```
|
||
|
||
Letta cosi', SKH01 e' il motore del book e TP01 e' un peso morto sull'hold-out.
|
||
**Entrambe le letture sono sbagliate**, e il motivo era gia' scritto nel progetto il giorno prima:
|
||
|
||
> *se si de-lucka una strategia va de-luckato anche il suo DEGRADO* — ogni Δ fra due varianti
|
||
> misurato a un'ancora sola eredita la fortuna di quell'ancora.
|
||
> (lezione 26/07, codificata in `altlib.anchor_luck_delta`)
|
||
|
||
Un leave-one-out **e' esattamente un Δ fra due varianti**. E qui il problema e' al quadrato: 4
|
||
sleeve su 5 sono ancorati, e per 3 di loro l'ancora canonica era gia' stata misurata come
|
||
fortunata (TP01 92° pctl su 24 ancore, SKH01 93-98° su 23 offset, XS01 fase 0 al 15° pctl di DD).
|
||
VRP01 e' l'unico senza firma — la sua fase canonica e' la **peggiore** delle 7.
|
||
|
||
---
|
||
|
||
## 1. Il metodo: estrazioni CONGIUNTE, non una griglia per sleeve
|
||
|
||
Gli audit del 02/07 e del 03/07 hanno de-luckato **uno sleeve alla volta**, tenendo gli altri alla
|
||
loro ancora canonica. Va bene per giudicare quello sleeve; non basta per giudicare il **book**,
|
||
perche' i numeri del book sono calcolati con tutti e cinque alla canonica insieme.
|
||
|
||
Spazio di luck congiunto: **24 (TP01, ancore orarie) x 10 (XS01, fasi H=10) x 7 (VRP01, fasi
|
||
settimanali) x 23 (SKH01, offset di griglia 230m/690m) x 5 (GTAA01, fasi della cadenza
|
||
settimanale) = 193.200 configurazioni.** Non enumerabile: si campiona.
|
||
|
||
**2000 estrazioni uniformi e indipendenti** (seed 20260726). Uniformi-indipendenti e' il null
|
||
onesto: non avevamo nessuna ragione a priori di preferire un'ancora a un'altra — se ce l'avessimo
|
||
avuta, sarebbe stata parte della strategia.
|
||
|
||
Per ogni estrazione: book completo + i 5 leave-one-out, **tutti alla stessa configurazione
|
||
d'ancora**. La statistica e' la **mediana delle differenze appaiate**, mai la differenza delle
|
||
mediane (l'errore che il 26/07 aveva ribaltato il verdetto sul recupero on-book di SKH01: le due
|
||
mediane cadono su ancore diverse).
|
||
|
||
**Repliche riusate, non riscritte.** I quattro generatori ancorati vengono dagli audit che li
|
||
hanno gia' verificati bit-exact (`r0702_tp01_offset.daily_off`, `r0702_anchor_xs01.xs_phase`,
|
||
`r0703_vrpimp_anchor.combo_weekly`, `r0702_anchor_skh01.skh_port`). Riscriverli avrebbe voluto
|
||
dire rifare gli stessi errori di convenzione. L'unico pezzo nuovo e' la fase di GTAA01
|
||
(`i % REBAL_EVERY == ph` invece di `== 0`), ed e' l'unico coperto da test dedicato.
|
||
|
||
**Sanity obbligatorio prima di tutto** — ogni replica ancorata deve riprodurre lo sleeve di
|
||
**produzione** alla sua ancora canonica, altrimenti sto misurando un'altra strategia:
|
||
|
||
```
|
||
TP01 ancora 0 max|dif| = 0.0e+00 (n=2692) OK
|
||
XS01 ancora 0 max|dif| = 0.0e+00 (n=938) OK
|
||
VRP01 ancora 0 max|dif| = 0.0e+00 (n=1884) OK
|
||
SKH01 ancora 0 max|dif| = 0.0e+00 (n=2690) OK
|
||
GTAA01 ancora 0 max|dif| = 0.0e+00 (n=2690) OK
|
||
```
|
||
|
||
Costo totale: 69 serie, ~8s di precalcolo, 34s per le 2000 estrazioni.
|
||
|
||
---
|
||
|
||
## 2. Il livello del book: i numeri pubblicati stanno in cima alla banda
|
||
|
||
```
|
||
canonico pctl MEDIANA p10 p90 fortuna
|
||
Sharpe FULL +2.222 97.0% +1.946 +1.807 +2.116 +0.276
|
||
Sharpe HOLD-OUT +2.364 99.6% +1.542 +1.109 +1.910 +0.822
|
||
maxDD FULL 6.07% 12.0% 6.85% 5.99% 7.94% -0.78%
|
||
```
|
||
|
||
**L'hold-out canonico sta al 99.6° percentile dello spazio d'ancora: solo 9 estrazioni su 2000
|
||
fanno meglio.** La stima onesta e' **1.54**, con banda [1.11, 1.91].
|
||
|
||
⚠️ **Un "100%" che ho dovuto correggere.** La prima stampa dava `pctl 100%` — arrotondamento di
|
||
99.55% con un `%.0f`. In un artefatto di ricerca un 100% stampato significa "e' il massimo, punto"
|
||
e avrebbe fatto concludere a una sessione futura qualcosa di piu' forte del vero. Verificato a
|
||
mano (max fra le 2000 = +2.577, a `TP01=0 / XS01=7 / VRP01=1 / SKH01=0 / GTAA01=3`), formato
|
||
portato a 1 decimale. *Regola pratica: un percentile stampato senza decimali mente esattamente
|
||
agli estremi, che sono l'unico posto dove lo si legge.*
|
||
|
||
---
|
||
|
||
## 3. Il leave-one-out de-luckato — e due giudizi miei ribaltati
|
||
|
||
```
|
||
dSharpe FULL canonico pctl MEDIANA >0 in
|
||
TP01 33% +0.280 5.8% +0.390 100.0%
|
||
SKH01 20% +0.432 99.0% +0.142 90.8%
|
||
XS01 15% +0.142 76.8% +0.125 99.9%
|
||
VRP01 12% +0.087 1.8% +0.122 100.0%
|
||
GTAA01 20% +0.120 63.5% +0.115 100.0%
|
||
|
||
dSharpe HOLD-OUT canonico pctl MEDIANA >0 in
|
||
XS01 15% +0.640 63.4% +0.497 96.2%
|
||
GTAA01 20% +0.244 17.3% +0.267 100.0%
|
||
SKH01 20% +0.652 96.0% +0.190 85.5%
|
||
VRP01 12% +0.064 47.4% +0.065 84.2%
|
||
TP01 33% -0.219 39.5% -0.200 0.9%
|
||
|
||
dMaxDD (pp, >0 = protegge) pctl MEDIANA >0 in
|
||
GTAA01 20% +1.695pp 23.8% +1.999pp 100.0%
|
||
VRP01 12% +1.075pp 55.6% +1.056pp 88.3%
|
||
SKH01 20% +1.636pp 89.3% +0.322pp 64.0%
|
||
TP01 33% +0.236pp 48.4% +0.274pp 62.1%
|
||
XS01 15% +0.251pp 65.0% +0.000pp 43.0%
|
||
```
|
||
|
||
**SKH01 non e' il motore del book.** Del suo contributo apparente, l'ancora canonica regala **2/3
|
||
sul FULL** (+0.43 → +0.14), **70% sull'hold-out** (+0.65 → +0.19), **80% sulla protezione DD**
|
||
(+1.64pp → +0.32pp). De-luckato e' indistinguibile dagli altri sul FULL ed e' **il meno affidabile
|
||
dei cinque**: l'unico sotto il 91% di estrazioni positive su tutte e tre le metriche (91/86/64%).
|
||
|
||
**GTAA01 non e' il primo da tagliare** (lo avevo detto un'ora prima, sulla lente canonica). E'
|
||
**l'unico sleeve positivo nel 100% delle estrazioni su tutte e tre le metriche** e il miglior
|
||
protettore di DD del book, al doppio del secondo. Non ha fortuna da restituire: il suo canonico
|
||
sta *sotto* la mediana su FULL e DD. ⚠️ L'altra gamba di quel giudizio resta pero' intatta e
|
||
indipendente: a $10k comprare ~€0.50/giorno sopra il risk-free con un maxDD del 10% e' caro, e
|
||
sotto `GTAA_MIN_CAPITAL` = $3k lo sleeve non e' deployabile. **Attribuzione ≠ eseguibilita'.**
|
||
|
||
**TP01 e' il maggior contributore, e il canonico lo SOTTOSTIMAVA** (+0.280 al 5.8° pctl → +0.390
|
||
de-luckato, positivo in 2000/2000, quasi 3x il secondo). Il suo hold-out negativo **non e'
|
||
artefatto d'ancora**: e' negativo nel **99.1%** delle configurazioni. Le due cose insieme sono la
|
||
storia dell'assicurazione, finalmente misurata invece che asserita — sul campione pieno (che
|
||
contiene il 2022) e' il contributore piu' grande; nella finestra 2025-26 e' stato fermo mentre gli
|
||
altri guadagnavano, e questo costa −0.20. **Giudicarlo sulla finestra in cui non e' servito
|
||
significa venderlo esattamente prima che serva.**
|
||
|
||
**VRP01** conferma per la seconda volta di essere l'unico senza firma di fortuna: canonico al
|
||
**1.8° pctl** sul FULL, cioe' i numeri di ammissione erano *conservativi*. Secondo protettore di DD.
|
||
|
||
**XS01** tiene il primo posto sull'hold-out anche de-luckato (+0.497), ma la sua protezione di DD
|
||
e' **esattamente zero** (mediana 0.000, positiva nel 43% = moneta). E' un diversificatore di
|
||
**rendimento, non di rischio** — e conta, perche' sul canale funded il vincolo binding e' il DD,
|
||
non il CAGR (25/07 §4).
|
||
|
||
**Correlazioni:** stabili sotto de-luck, tutte quasi-nulle. La sola sopra 0.1 e' TP01-GTAA01
|
||
(mediana +0.189, canonica +0.242).
|
||
|
||
### Il contrappeso che SKH01 ha diritto ad avere
|
||
|
||
Questo de-luck penalizza SKH01 sul path **backtest** (chiusura di bin). Ma le due misure del 26/07
|
||
dicono che il **path live e' migliore del backtest su entrambi i lati**: ingressi +0.38 di Sharpe
|
||
mediano, uscite +0.081 di Sharpe FULL di book. Applicare il de-luck senza quel contrappeso lo
|
||
penalizzerebbe due volte. Verdetto onesto: **SKH01 vale meno dei suoi numeri di ammissione e piu'
|
||
di questa tabella.** Quanto esattamente resta il follow-up gia' dichiarato e bloccato (serve la
|
||
versione vol-targeted del path live di SKH01).
|
||
|
||
---
|
||
|
||
## 4. Correzione a CLAUDE.md
|
||
|
||
La stima del 02/07 era **a occhio** — sommava le fortune misurate sleeve-per-sleeve. Oggi e'
|
||
**misurata congiuntamente**, ed era ottimista su tutte e tre le metriche:
|
||
|
||
| | stimato 02/07 | misurato 26/07 |
|
||
|---|---|---|
|
||
| HOLD-OUT | ~1.9-2.1 | **1.54** [1.11, 1.91] |
|
||
| FULL | ~2.0-2.2 | **1.95** [1.81, 2.12] |
|
||
| maxDD | "~6% invariato" | **6.85%** [5.99, 7.94] |
|
||
|
||
L'errore non e' stato usare una stima: e' stato che una stima per somma di effetti marginali
|
||
**non e' la mediana congiunta**, e la differenza (+0.82 di hold-out) e' piu' grande di quasi
|
||
tutti gli uplift per cui in questo progetto si e' discusso se ammettere uno sleeve.
|
||
|
||
---
|
||
|
||
## 5. Cosa NON e' questa misura
|
||
|
||
- **Non e' evidenza out-of-sample.** Il book e' valutato sugli stessi anni in cui XS01 e SKH01
|
||
sono stati scelti e affinati. E' attribuzione, de-luckata.
|
||
- **Non e' un gate sui pesi.** Ogni proposta di cambio pesi passa da `weights_tilt_null`. Qui non
|
||
si propone nulla: i pesi restano 33/15/12/20/20.
|
||
- **Non e' una lente di eseguibilita'.** Dice quanto uno sleeve contribuisce al book modellato,
|
||
non se lo si puo' comprare a $600 (GTAA01 sotto $3k e XS01 sotto ~$20k non si possono).
|
||
|
||
---
|
||
|
||
## 6. Risposta alla domanda
|
||
|
||
**TP01**, se ne va tenuta una. Maggior contributore de-luckato (+0.390, 2000/2000), l'unico
|
||
eseguibile davvero oggi a $600 senza haircut, e l'unico il cui valore dichiarato — il taglio del
|
||
DD ~6x contro il buy&hold — **non e' ancorato** e regge a tutte le ancore testate. Tutto il resto
|
||
dei suoi numeri e' gia' stato declassato (hold-out 0.31 → ~0.05); quello no.
|
||
|
||
Le altre: **SKH01** si tiene al 25% e non un euro di piu'; **GTAA01** si tiene nel book modello
|
||
(miglior protettore di DD) ma non nel live finche' non ci sono $3k su IB; **VRP01** si tiene come
|
||
*metro* — e' l'unico i cui numeri sono onesti per costruzione; **XS01** non e' da tenere oggi, e'
|
||
da accendere quando arriva il capitale (~$20k, o un conto funded, dove vale piu' di tutte).
|
||
|
||
Il book live che gira — **TP01 75 / SKH01 25** — e' gia' questa risposta.
|
||
|
||
---
|
||
|
||
## 7. Regole trasferibili
|
||
|
||
1. **Un leave-one-out e' un Δ, quindi va de-luckato come ogni Δ.** L'attribuzione all'ancora
|
||
canonica ha invertito la classifica su 2 metriche su 3.
|
||
2. **De-luckare uno sleeve alla volta non de-lucka il book.** La fortuna del book e' un fenomeno
|
||
*congiunto*: la somma delle fortune marginali ha sbagliato di +0.82 di Sharpe hold-out. Quando
|
||
serve la banda di un aggregato, si campiona lo spazio congiunto.
|
||
3. **Un percentile stampato a 0 decimali mente agli estremi**, che sono l'unico posto dove serve.
|
||
4. **La frazione di estrazioni positive dice piu' della mediana.** Fra +0.142 (SKH01, positivo nel
|
||
91%) e +0.115 (GTAA01, positivo nel 100%) la mediana preferisce il primo e l'affidabilita' il
|
||
secondo — ed e' la seconda a decidere se ci si mette del capitale.
|
||
5. **Uno sleeve difensivo si giudica sul sinistro, non sul premio.** L'hold-out negativo di TP01 e'
|
||
robusto (99.1% delle ancore) e *non* e' un argomento per ridurlo.
|