1c0549080c
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>
239 lines
14 KiB
Markdown
239 lines
14 KiB
Markdown
# 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.
|