Files
PythagorasGoal/docs/diary/2026-09-01-collar-btc.md
T
Adriano Dal Pastro 1c0549080c PAVIMENTO-LEVA (§72): il pavimento non licenzia taglia, 0/16 — e corregge §71
Domanda dell'operatore: "possiamo usare quanto conosciamo del pavimento per
studiare una strategia". L'inverso di COLLAR01: non "quanto DD mi risparmia
il pavimento a taglia fissa" (perdeva contro il de-levering) ma "quanta
TAGLIA mi autorizza a DD fisso" — l'unica cosa che il de-levering non puo'
comprare (cambia la FORMA, non la proporzione), e la grandezza su cui vive
il tetto di leva del progetto (n·frac·scala·sl <= 0,50 => 1,67x).

RISULTATO: 0/16. La sola put a premio reale PEGGIORA il maxDD in 16/16 celle
(FORTE 51,83% -> 55,4-75,8%; LARGO 71,94% -> 74,8-81,7%), quindi k_f = 1,000
ovunque: niente da licenziare. Monotono nella protezione: piu' la put e'
vicina, peggio va — il bleed del premio E' il drawdown.

🚨 CORREGGE §71 (stesso giorno). Stamattina A1 diceva "il pavimento funziona
davvero". E' il COLLAR a ridurre il DD, non il pavimento: a premio zero la
put lo riduce (51,83 -> 36,76, il controllo), a premio reale lo peggiora =>
tutto il beneficio e' mangiato dal premio, e oltre. Nel collar la riduzione
viene dal TETTO: il suo premio compensa il bleed, e cappare l'upside abbassa
il picco da cui il DD si misura — un picco piu' basso, non protezione.
Premio di pareggio: 36-79% del reale; il DVOL sta 1,32x sopra la RV, quindi
un prezzo equo (~76%) sfiora il pareggio nelle celle migliori e lo manca
nelle altre. Il motivo di §46 (beta) non si applica — a beta 1,0 la put
paga davvero — ma il verdetto di §46, "il maxDD SALE", si riproduce per un
motivo diverso. Corretti il diario di §71 (titolo e A1), RESULTS, memoria.

IL MECCANISMO (B2), trasferibile: i drawdown di BTC sono GRIND. maxDD FORTE
2021-07-20 -> 2022-05-06 = 290 giorni; LARGO fino al 2023-10-16 = 818. Una
put a 7-14g copre UNA finestra; il DD che conta dura 20-60 finestre; la put
scade OTM ogni settimana (para nel 0-9% dei cicli) mentre il premio sanguina.
Non protegge nemmeno la finestra peggiore: 14g FORTE -22,9% nudo -> -23,6%
col pavimento. Su BTC il pavimento compra protezione contro la cosa sbagliata.

LA LICENZA DEL DISASTER-SL E' DI CARTA (B3), scritto prima che sia comodo:
con la put a 5d/14g a 21,9% dallo spot, sostituire sl con quella distanza
darebbe 2,28x. Ma l'invariante limita UN episodio, la put limita UNA
finestra, e il massimo su finestre consecutive non e' limitato da nulla:
1 finestra -23,6% (coperta), 8 finestre -33,6% (non coperte) => a 2,28x un
grind di 112 giorni costerebbe il 77% dell'equity. disaster_sl_pct NON si
sostituisce con la distanza di un pavimento. Aggiunto a CLAUDE.md §3.

GATED SULL'IV (B4) — la copertura dinamica che §46 non aveva provato: put
ON solo sotto il 25°/50° pctl di DVOL/RV. Migliora molto (FORTE +3,8% ->
+8,4%) ma resta sotto la base (+10,04%) e il DD resta >=. L'incollatura
ignora lo spread delle transizioni A FAVORE del gated: perde a maggior ragione.

Quattro attese a priori (B1-B4) scritte prima, tutte confermate.

NON MISURATO, dichiarato: nessun DSR (cade al primo gate); nessuna lente
reale; nessun pavimento a scadenza lunga (30-90g, che coprirebbe piu'
finestre di grind) perche' l'operatore ha vincolato a <=15 giorni — e'
l'unica variante che B2 lascia aperta, e sta fuori dal vincolo.

Libro, pesi, cron, config INVARIATI. Nessun ordine. Test 25/25 sui filoni.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 20:45:02 +00:00

239 lines
14 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-09-01 — COLLAR01: il collar riduce il DD, il tetto lo paga troppo, e ciò che vince è VRP01 travestito
> ⚠️ **Titolo corretto lo stesso giorno.** Diceva *«il pavimento funziona»*: la riduzione di DD è del
> **collar**, non del pavimento — la put da sola lo peggiora in 16/16 celle (§72, sezione A1 sotto).
*Scritto il 2026-09-01. Ogni numero è riprodotto da `scripts/research/r0901_btc_collar.py`.
**Libro, pesi, cron, config INVARIATI. Nessun ordine.***
## 0. La domanda, come è arrivata
> *«crea una strategia di hold BTC in long o short con copertura con options (max 15gg)»*
> *«opzione deve essere al max di 15gg»*
> *«voglio ridurre la vincita, ma bloccare la perdita»*
> *«ovviamente l'entrata deve essere gestita da una strategia confortata da indicatori (es. è in forte bull)»*
> *«dalle opzioni dobbiamo uscire prima del termine (tra 50% e 75% del tempo)»*
Le tre precisazioni cambiano l'oggetto, e vanno lette insieme: **non è una put protettiva, è un
COLLAR** (pavimento comprato, tetto venduto per finanziarlo), su un **hold gated da indicatori**,
con **scadenza ≤15 giorni**.
## 1. Perché questo filone si poteva riaprire
§46 (TAIL-HEDGE, 2026-08-23) è **REFUTATO** e la memoria dice di battere il motivo, non di
ripetere la misura. Il motivo di §46, verbatim:
> *il maxDD **SALE in 162/162 celle**, a ogni lente di f, perché il **beta del libro al sottostante
> è +0,076**: non si assicura un libro che nei crash è già quasi piatto.*
**Quel motivo non si applica qui.** §46 assicurava il *libro* (TP01+SKH01, piatto il 28% dei
giorni); qui il sottostante è un **hold di BTC, beta 1,0 per costruzione**. E §46 dichiara di non
aver provato proprio questo: *«Nessuna copertura dinamica (gated su regime) è stata provata: la
domanda era la statica»*.
Riusati e non rimisurati: metriche e `k_for_same_dd` da `r0823_tail_hedge`, il listino fee opzioni
Deribit, la catena via `cblib.load_chain()`.
## 2. L'entrata, presa dal progetto invece che inventata
`trend_portfolio.tsmom_blend` media tre `np.sign()` sugli orizzonti (30, 90, 180), quindi assume
**solo** i valori {1, 1/3, +1/3, +1} (il bucket 2/3 non esiste — errore già corretto in §57).
Questo dà a **"forte bull" una definizione che non aggiunge nemmeno un parametro nuovo**:
- **gate FORTE** = `|blend| == 1`, tutti e tre gli orizzonti concordi → a mercato **52,5%** dei giorni
- **gate LARGO** = `|blend| ≥ 1/3`, confronto dichiarato → a mercato **97,1%** dei giorni
Il segno dà la direzione, quindi **long e short** sono entrambi coperti come chiesto. Si entra il
giorno **dopo** il segnale (eseguibile, §8.1).
## 3. La calibrazione: quello che il modello non poteva assumere
161.964 quote a due lati su 95 giorni (2026-05-07 → 2026-09-01), scadenze 1-15 giorni.
**Lo skew, ed è il fatto strutturale del filone:**
| \|δ\| | IV put / ATM | IV call / ATM | la put costa |
|---|---|---|---|
| 0,10 | 1,249 | 0,959 | **+30%** della call |
| 0,20 | 1,132 | 0,950 | **+19%** |
| 0,30 | 1,072 | 0,960 | **+12%** |
**Un collar delta-simmetrico è un debito netto**: compro l'ala cara e vendo quella a buon mercato.
Non è un dettaglio di prezzo, è la ragione per cui "gratis" non esiste a delta simmetrici.
Spread (mezza forchetta / mid): put 1,9-8,3%, call 2,1-10,0% secondo il delta. Struttura a termine
IV/DVOL30 ≈ 0,92-0,94 a 2-14 giorni.
📌 **A5 confermata, e corregge un muro di §46:** il tick da **5 USDC** che lì era «il secondo muro,
strutturale» vale per la famiglia **USDC**. La catena che raccogliamo è **100% inverse**
(`BTC-31JUL26-45000-P`), col tick in BTC. Il muro di §46 **non si applica a questo filone**.
## 4. Il risultato, in ordine di come uccide
Lente lunga 2021-03-24 → 2026-09-01 (1.988 giorni, 5,44 anni). BTC buy&hold nudo: Sharpe 0,413 ·
maxDD 76,73% · drift +7,82%/a. Griglia dichiarata prima: 3 δput × 3 δcall × 2 tenor × 2 gate = **48
celle**, più 12 varianti zero-cost dichiarate a parte.
### ✅ A1 CONFERMATA — il COLLAR riduce il maxDD (36/48) — ⚠️ ma NON è il pavimento a farlo
**maxDD scende in 36/48 celle.** Con beta 1,0 la put para davvero: è il risultato che §46 non
poteva ottenere.
🚨 **CORREZIONE (stesso giorno, `r0901c_pavimento_leva.py`, §72).** Questa riga diceva *«il
pavimento funziona davvero»* e attribuiva la riduzione al pavimento. **È il COLLAR a ridurre il DD,
non il pavimento**: la put **da sola**, a premio reale, **peggiora il maxDD in 16/16 celle**
(FORTE 51,83% → 55,4-75,8%, LARGO 71,94% → 74,8-81,7%). Nel collar la riduzione viene dal **tetto**
— il suo premio compensa il bleed della put, e cappare l'upside **abbassa il picco** da cui il DD si
misura. Il pavimento pareggerebbe il DD nudo solo se le put costassero il **36-79% del reale**.
Quindi: *il motivo di §46 (beta) non si applica, ma il suo verdetto — il maxDD SALE — si riproduce
a beta 1,0 per un motivo diverso:* **i drawdown di BTC sono grind di 290-818 giorni, e una put a
≤15 giorni copre una finestra.** Dettaglio in `2026-09-01c-pavimento-leva.md`.
### ❌ A3 CONFERMATA — ma il de-levering lo fa meglio in 45/48 celle
| gate | base gated senza opzioni | |
|---|---|---|
| FORTE | Sharpe 0,442 · maxDD **51,83%** · drift **+10,04%**/a | ← il null da battere |
| LARGO | Sharpe 0,578 · maxDD **71,94%** · drift **+17,37%**/a | |
Il null è **lo stesso hold gated, senza opzioni, scalato a iso-maxDD** — generato dallo stesso
motore, non ridichiarato (P1). Il collar lo batte in **3 celle su 48**.
### ❌ A2 CONFERMATA — ogni punto di DD risparmiato costa 2-8 punti di drift
Δdrift/ΔmaxDD mediano: **7,90** col gate FORTE, **1,98** col LARGO. Il tetto costa più di quanto
il pavimento renda, e non di poco.
### 🚨 C9 — non è protezione, è troncatura
Cella migliore, 196 cicli: **il tetto taglia nel 46,2% dei cicli vincenti, il pavimento para nel
6,7% dei cicli perdenti.** Scatta **7 volte più spesso sui vincenti che sui perdenti** — la
definizione letterale di C9. *La regola dell'operatore («ridurre la vincita, bloccare la perdita»)
è implementata fedelmente: il problema è che su BTC quel baratto è pagato male.*
### ❌ M1 — dentro il libro non aggiunge nulla
Collar Sharpe 0,508 contro TP01 **0,852**, corr +0,486. TP01 + 10% di collar: Sharpe **+0,000** e
maxDD **+2,32pp**. A 25%: **0,065** di Sharpe e **+6,57pp** di maxDD. *Peggiora proprio la cosa
che dovrebbe proteggere.*
## 5. 🚨 Il fatto che vale più del verdetto
**Tutte e 3 le celle vincenti stanno sul BORDO** della griglia (δput al minimo, δcall al massimo).
M8: un argmax sul bordo non è una decisione. Ho esteso la famiglia (M4) con 36 trial dichiarati
verso l'angolo — e lì **vince in 35/36 celle**, con il massimo *nell'angolo*:
> gate FORTE, 7 giorni, **δput 0,02 · δcall 0,50** → Sharpe **1,471** · maxDD **18,12%** · drift **+29,99%**/a
Il limite di quell'angolo è *nessun pavimento, tetto ATM*: **una covered call**. Cioè **la pendenza
porta fuori da ciò che l'operatore ha chiesto e dentro lo short-vol.**
E quel Sharpe 1,471 non è una scoperta — **è il mio prezzatore che si paga da solo**:
| | DVOL / RV-forward | DVOL sta sopra |
|---|---|---|
| a 7 giorni | **1,320** | **76,9%** dei giorni |
| a 14 giorni | **1,253** | **74,8%** dei giorni |
Riprezzando le opzioni alla **volatilità effettivamente realizzata** (diagnostica con look-ahead
dichiarato — è il valore equo ex-post, non una strategia):
| cella | a DVOL | a vol realizzata | il VRP valeva |
|---|---|---|---|
| FORTE 7g δ0,02/0,50 | Sh **1,471** · +29,99% | Sh **0,511** · +8,45% | **+21,54 pp (72%)** |
| LARGO 7g δ0,02/0,50 | Sh **1,141** · +32,17% | Sh **0,114** · **1,10%** | **+33,26 pp (tutto)** |
| FORTE 7g δ0,10/0,30 | VINCE | **perde** | +6,75 pp |
| LARGO 14g δ0,10/0,30 | perde | perde | +8,02 pp |
**Il 72-100% dell'edge dell'angolo è il premio di varianza**, non la struttura. E ciò che
sopravvive alla riprezzatura — **Sharpe 0,511** — è, entro il rumore, **il numero che il progetto
ha già**: VRP01 a f=0,73 vale **Sharpe 0,47**. *Non ho trovato una strategia nuova: ho ri-scoperto
VRP01 per una strada più lunga.* E §3 lo blocca comunque: **«niente short-vol da modello in
deploy»** — questo è esattamente short-vol da modello.
## 5-bis. L'uscita anticipata: chiesta, implementata, e costa
L'operatore ha chiesto di **uscire dalle opzioni fra il 50% e il 75% del tempo**. Implementato come
`exit_frac`, su tenor 14 giorni (⇒ uscita a 7 / 9 / 10 giorni). **La mia ipotesi a priori era che
migliorasse**: uscire presto recupera valore temporale sulla put e rinuncia al theta più veloce
sulla call, cioè proprio alla parte che stampava il premio di varianza. **Metà giusta, metà no.**
| cella `δ0,10/0,30`, gate FORTE | uscita | Sharpe | drift | null | esito | VRP residuo |
|---|---|---|---|---|---|---|
| a scadenza | 1,000 | 0,488 | **+9,48%** | +8,07% | VINCE | +3,38pp |
| 75% | 0,750 | 0,457 | +8,59% | +7,72% | VINCE | +4,93pp |
| 62,5% | 0,625 | 0,366 | +6,11% | +7,98% | **perde** | +2,51pp |
| 50% | 0,500 | 0,278 | **+3,84%** | +8,04% | **perde** | **+1,27pp** |
**Il meccanismo previsto c'è** — il VRP residuo scende da +3,38 a +1,27pp, quindi uscire presto
*davvero* rinuncia allo short-vol — **ma lo spread lo travolge**: 5,6 punti di drift sul gate
FORTE, 10,2 sul LARGO (12,06% → 1,88%), e su `δ0,20/0,20` da 4,37% a 8,58%.
🚨 **E qui §46 va corretto nella sua applicazione.** §46 misurò: *«f si paga solo sulla parte di
valore che converge a intrinseco, quindi un roll anticipato non lo paga»*. **Vero per una copertura
SOLO LONG.** In un collar c'è una **gamba venduta da ricomprare**: uscire prima paga f *esattamente*
sulla parte che a scadenza si sarebbe regolata gratis, e si fa ~2× più spesso per unità di tempo.
**L'asimmetria di §46 si inverte quando la struttura ha una gamba corta.** È il risultato
trasferibile di questa richiesta.
**Nella banda chiesta (50-75%) il verdetto si spacca:** a **0,75** la cella onesta passa ancora il
null (di poco); a **0,625 e sotto** non lo passa più. Nessun `exit_frac` ribalta il verdetto del
filone — lo peggiora.
## 6. I controlli dell'apparato (M15) — 3/3
§46 insegna che *«un controllo positivo rotto dichiara guasto l'apparato»*. Prima di credere a un
verdetto negativo ho verificato che l'apparato sappia riconoscere un successo:
| controllo | atteso | misurato | |
|---|---|---|---|
| pavimento a **premio zero** (pranzo gratis) | deve VINCERE | maxDD 51,83%→**36,76%**, drift +10,04%→**+35,69%** | ✅ |
| premio **×10** | deve PERDERE | drift **33,96%**/a | ✅ |
| zero-cost costruibile e finito | non NaN | drift 3,50%/a | ✅ |
## 7. Tre difetti miei, catturati dai controlli e non a occhio
1. **Bisezione dello zero-cost invertita** (`hi = md` dove serve `lo = md`): il premio cresce col
delta, quindi se incasso troppo poco il tetto va *avvicinato*. Dava Sharpe 3,0/3,9 e drift
53%/a — spazzatura che al primo giro avevo quasi pubblicato.
2. **`dcall=NaN`** nella variante zero-cost propagava NaN nella cassa allo smontaggio anticipato.
3. **C9 non consapevole della direzione:** usavo `S1 > S0` come proxy di "ciclo vincente", ma per
un ciclo **short** un prezzo che sale è una **perdita**. Era la causa del risultato impossibile
*«il pavimento para nello 0,0% dei cicli perdenti»* con una put a 10 delta.
E due difetti di contabilità trovati prima di misurare, che avrebbero **adulato il collar**:
la base senza opzioni rollava lo spot ogni `tenor` giorni pagando ~3,6%/anno di fee inesistenti;
e al roll delle opzioni chiudevo e riaprivo anche lo spot, che non ha motivo di muoversi.
## 8. Cosa NON ho misurato, dichiarato
- **La lente reale (quote vere, 2026-05→09) non è stata girata come backtest.** 123 giorni = ~8
cicli non sovrapposti: sotto-potenziata per costruzione, e su una finestra in cui BTC è salito da
~64,7k a ~77,5k — **avversa a un collar per costruzione**. La catena è servita a **calibrare**
(skew, termine, spread), che è l'uso in cui 161.964 quote hanno potenza.
- **Nessun DSR, nessun `study_family_honest`.** Non servono: il filone cade al **primo** gate (M5),
e M2 si spende su ciò che il primo gate lascia in piedi.
- **A6 e A7 non verificate** (lente reale non girata; il verso short è dentro i gate ma non
separato). Restano previsioni non misurate, non risultati.
- **Il funding dei perp non è nel motore**, come in ogni backtest del progetto: 2,16%/a di drift.
Colpisce base e collar quasi allo stesso modo (stessa esposizione spot), quindi **non cambia il
segno del confronto**, ma abbassa entrambi.
## 9. Verdetto
> **`IL PAVIMENTO FUNZIONA — E' IL TETTO CHE NON SI PUO' PAGARE. E CIO' CHE VINCE SUL BORDO NON E'
> LA PROTEZIONE: E' IL PREMIO DI VARIANZA, CIOE' VRP01`** — **REFUTATO come chiesto.**
Con una postilla che è il vero risultato trasferibile: **la domanda «bloccare la perdita» ha
risposta positiva sul maxDD (36/48) e negativa sul prezzo (45/48).** Su BTC il pavimento si compra
meglio **tenendo meno BTC** che comprando una put e vendendo una call — e il de-levering, a
differenza del collar, non tocca il rendimento nella coda destra dove BTC vive.
## 10. Cosa lo riaprirebbe
- Un **f di stress misurato su un crash catturato** — la stessa condizione che §3 pone allo
short-vol. Con quello, l'angolo covered-call diventa discutibile invece che escluso.
- Un sottostante **senza coda destra grassa**: il tetto costa perché BTC vive lì. Su un asset a
distribuzione più simmetrica il baratto cambia di segno, e il conto va rifatto.
- **Non** lo riapre un tenor diverso, un delta diverso o una griglia più fine: la pendenza è
monotona verso l'angolo short-vol, e l'angolo è già misurato.