Files
PythagorasGoal/docs/diary/2026-09-01-collar-btc.md
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

14 KiB
Raw Permalink Blame History

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' VRP01REFUTATO 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.