Files
PythagorasGoal/docs/diary/2026-07-26-loo-deluck.md
T
Adriano Dal Pastro b9b2ef1b26 research: leave-one-out del book DE-LUCKATO sulle ancore — la classifica si ribalta
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>
2026-07-26 13:23:36 +00:00

226 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.