From bb40e87d13a80d68a305e4386ac4185ac626aeff Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Wed, 9 Sep 2026 16:33:54 +0000 Subject: [PATCH] crolli: il libro perde nel giorno e chiude > 0 in 8/8 finestre dal 2022 (SKH01 short); crollo catturato a vol bassa, XRP diluisce come SOL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quattro misure (r0909_*), nessun cambio a libro/pesi/config: - libro nei crolli: −0,48%/g nei 160 giorni ≤ −5%, positivo per finestra dal 2022 per la gamba short di SKH01 (108% dei guadagni); beta 0,0769 riprodotto (§46); il peso di SKH01 resta chiuso dal gate (in-sample). - crollo catturato 1-5/06/2026 a quote vere: f_net 0,74 = rally; put δ−0,10 1,92× il modello; a vol bassa e fuori dal gate di VRP01 → §3 non si riapre. - XRP terza gamba (harness r0822_sol_leg): hold-out −0,169 in 0/24, un anno buono. - universo Deribit: liquidi solo BTC/ETH/XRP/SOL; XS01 13/19; BTCDVOL future non negoziabile; PAXG non misurato. Revisione fable: due conclusioni smontate (MTM 2,6× era un artefatto di quote; «8/12 guadagna» era l'ordine delle classi). Debito §5.18: cblib.spot_series + asof guarda un'ora avanti (feed 1h etichettato all'apertura). Test Opus: 92 nuovi, suite 1008/1008; due difetti del verdetto XRP corretti. Docs: diario, RESULTS §74-77, CLAUDE.md, memoria 20/50, README; journal 07-08/09. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_017zJjHUS7mf4pnGE6pq9RTt --- CLAUDE.md | 38 +- README.md | 6 +- .../diary/2026-09-09-crolli-opzioni-monete.md | 219 ++++++++ docs/journal/2026-09-07.md | 57 ++ docs/journal/2026-09-08.md | 58 ++ docs/memory/20-ondate-e-scartati.md | 27 + docs/memory/50-dati-e-feed.md | 17 + docs/research/RESULTS-0822.md | 68 +++ scripts/research/r0909_crash_catturato.py | 385 +++++++++++++ scripts/research/r0909_deribit_universo.py | 125 +++++ scripts/research/r0909_libro_nei_crolli.py | 338 ++++++++++++ scripts/research/r0909_xrp_terza_gamba.py | 242 +++++++++ tests/test_r0909_crash_catturato.py | 508 ++++++++++++++++++ tests/test_r0909_deribit_universo.py | 324 +++++++++++ tests/test_r0909_libro_nei_crolli.py | 385 +++++++++++++ tests/test_r0909_xrp_terza_gamba.py | 351 ++++++++++++ 16 files changed, 3138 insertions(+), 10 deletions(-) create mode 100644 docs/diary/2026-09-09-crolli-opzioni-monete.md create mode 100644 docs/journal/2026-09-07.md create mode 100644 docs/journal/2026-09-08.md create mode 100644 scripts/research/r0909_crash_catturato.py create mode 100644 scripts/research/r0909_deribit_universo.py create mode 100644 scripts/research/r0909_libro_nei_crolli.py create mode 100644 scripts/research/r0909_xrp_terza_gamba.py create mode 100644 tests/test_r0909_crash_catturato.py create mode 100644 tests/test_r0909_deribit_universo.py create mode 100644 tests/test_r0909_libro_nei_crolli.py create mode 100644 tests/test_r0909_xrp_terza_gamba.py diff --git a/CLAUDE.md b/CLAUDE.md index d27e823..c13bda9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,8 +17,8 @@ chi la riapre deve battere il motivo, non ripetere la misura. | `docs/memory/40-produzione-e-deploy.md` | esecutore, tripwire, monitor, libro di bordo, PRIIPs/UCITS | tocchi cio' che gira con soldi veri | | `docs/memory/50-dati-e-feed.md` | difetti del dato trovati e riparati, catena opzioni | tocchi i feed | | `docs/memory/60-metodo-e-gate.md` | i gate codificati in `altlib.py` | valuti un candidato | -| `docs/research/RESULTS-0822.md` | registro per filone §1-73 | vuoi il dettaglio di un filone | -| `docs/diary/` (123 voci) | la sessione originale, per data | vuoi il contesto completo | +| `docs/research/RESULTS-0822.md` | registro per filone §1-77 | vuoi il dettaglio di un filone | +| `docs/diary/` (146 voci) | la sessione originale, per data | vuoi il contesto completo | --- @@ -151,6 +151,22 @@ tutto il drift del libro). A 10 anni i bonifici fanno il **59%** del risultato. un tetto di 1,0x. **Il cap non ha mai morso: il vincolo e' il segnale.** Riempire quel vuoto con l'ETF e' stato **misurato e SCARTATO** il 25/08 (`20-ondate`). +📌 **Il libro nei crolli (misurato 09/09, `r0909_libro_nei_crolli.py`): nel GIORNO del crollo PERDE** +(−0,48%/g sui 160 giorni ≤ −5%, positivo nel 18%); per finestra di 20 giorni e' immune-o-positivo e +**dal 2022 chiude > 0 in 8/8 peggiori finestre**, tutto dalla gamba **short di SKH01** (108% dei +guadagni; marcata all'USCITA del trade, quindi arriva *dopo* il giorno). Le 2 finestre perse (2019, +maggio 2021) sono TP01 long dentro un trend non ancora girato. Beta +0,0769 (riproduce §46). ⚠️ Un +solo aggettivo ("guadagna"/"immune") e' l'ordine delle regole: la prima stesura diceva 8/12 GUADAGNA, +con le classi nell'ordine dichiarato sono 4 + 6 immune. **La leva che aumenterebbe il guadagno e' il +peso di SKH01** (37,5/62,5 batte 12/12 episodi ma maxDD 12,1% vs 9,4%): vincolato (§3), gate +`weights_tilt_null` fallisce su una condizione **in-sample** (delta −0,0026, 26/07; cache segnali ferma +al 25/07). **Crollo CATTURATO a quote vere (1-5/06/2026, archivio bite, `r0909_crash_catturato.py`)**: +f_net del put credit spread **0,74 = 0,714 del rally**; put δ−0,10 costa **1,92×** il modello all'ask ma +paga come il modello nel crollo (0,94-1,04); f al peggior MTM 1,08 (il 2,58 della prima stesura era un +artefatto di quote oltre la larghezza). **NON e' il f di stress della regola del 19/06**: crollo a vol +BASSA (picco DVOL al 29°/46° percentile), gate IV-rank di VRP01 CHIUSO, famiglia INVERSE, 4 strutture. +Diario `2026-09-09-crolli-opzioni-monete.md`. + 🚨 **Tre baseline diverse girano sotto lo stesso nome "libro 75/25"**, e lo spread fra loro (0,12 di Sharpe, 1,7pp di maxDD) e' **piu' grande di quasi tutti gli effetti che il progetto misura**: `hourly` **1,683 / 11,22%** (la lente di **ogni muro e ogni traiettoria**) · `canonical` 1,800 / 9,56% @@ -180,8 +196,8 @@ CLAUDE.md", la risposta e' la colonna *cosa la riapre*. | decisione | data | non si ri-discute | cosa la riapre | |---|---|---|---| | **100% Deribit fino a $20k** — accettato P(perso tutto) 10/18/34/64% a p=0,5/1/2/5% invece di 0/0/4/27% | 26/07 | la soglia $3k | **$20k**, o un cambio di piano, o `p` che diventa stimabile invece che assunto | -| **SOL escluso** — universo direzionale resta BTC/ETH (presidiato da un test) | 22/08 | SOL su un book a 2 gambe con questi dati | ~3 anni di storia SOL certificata (**non prima del 2028**), o un meccanismo che non sia TP01/SKH01 congelati | -| **Niente short-vol da modello in deploy** — e niente long-vol scalp da modello | 19/06 | — | un `f` di stress reale misurato su un crash catturato | +| **SOL escluso** — universo direzionale resta BTC/ETH (presidiato da un test) | 22/08 | SOL su un book a 2 gambe con questi dati | ~3 anni di storia SOL certificata (**non prima del 2028**), o un meccanismo che non sia TP01/SKH01 congelati. **XRP misurato il 09/09 con lo stesso harness: diluisce uguale** (hold-out −0,169 in 0/24, un anno buono, 5m flat 27-61%); su Deribit i perp liquidi (≥$10M/g) sono SOLO BTC/ETH/XRP/SOL — `r0909_deribit_universo.py` | +| **Niente short-vol da modello in deploy** — e niente long-vol scalp da modello | 19/06 | — | un `f` di stress reale misurato su un crash catturato **con IV-rank > 0,30 e sulla famiglia USDC-lineare** — il crollo del 1-5/06/2026 (misurato 09/09) e' catturato ma a vol bassa, sotto il gate e inverse: soddisfa la forma, non la sostanza | | **Non de-esporre il weekend** (porta il 38% del gross di TP01 nel 31% del tempo) | 17/07 | — | ogni proposta "risk-off weekend" parte **REFUTED** salvo null de-levering superato | | **Peso 75/25 confermato 3 volte** (24/07, 26/07, 24/07-follow-up) | 26/07 | — | `weights_tilt_null` superato, che finora **fallisce** | | **Fee Deribit: ≤5 bps/lato → non si tocca nulla; >10 bps → rivedere il peso SKH01** (regola decisa *prima* di vedere il numero) | 26/07 | — | il sorvegliante `fee_watch` allerta da solo | @@ -419,6 +435,14 @@ d'ancora in modo diverso (nella differenza si cancella in parte, nel livello per `usde_convert.cuscino_richiesto_usd`, P1) ogni ora e allerta sotto zero; e la riconversione USDE→USDC che ripristina il cuscino e' `usde_convert --quota `, che esiste ma non e' automatica. +18. ⚠️ **`cblib.spot_series` + `asof(ts)` guarda UN'ORA AVANTI** (trovato in revisione il 09/09): il + feed 1h e' etichettato all'**apertura** (la barra 20:00 chiude col 5m delle 20:55), quindi + `S.asof(ts)` restituisce la chiusura di ts+1h. Tocca ogni numero di `cblib` che usa lo spot + (il f 0,714 di §11 compreso; anche `ST = S.asof(exp)` e' il prezzo di un'ora DOPO la scadenza). + Nella misura del 09/09 e' innocuo (ambo le gambe ITM) e giocava contro l'autore; `r0909_crash_catturato` + usa `spot_causale` (indice +1h). **Non riparato in `cblib`**: cambierebbe numeri pubblicati — va + riparato con la rimisura di §11, dichiarando lo scarto. D6, quarta occorrenza dell'etichetta. + --- ## 6. Le regole di prim'ordine @@ -615,8 +639,8 @@ scripts/live/ → book_execute · venue_watch · fee_watch · edg journal · analista scripts/cron_{book,daily,chain,opt_snapshot,vol_term}.sh docs/memory/ → LA MEMORIA (indice in testa a questo file) -docs/research/ → BRIEF-0822 · RESULTS-0822 (§1-69) · SPEC-scale-key -docs/diary/YYYY-MM-DD.md → una voce per esperimento (123) +docs/research/ → BRIEF-0822 · RESULTS-0822 (§1-77) · SPEC-scale-key +docs/diary/YYYY-MM-DD.md → una voce per esperimento (146) docs/journal/YYYY-MM-DD.md → libro di bordo, una voce al giorno, 4 livelli per provenienza data/live/trades.db → i trade allineati col tempo (dentro il perimetro di backup) Old/ → ARCHIVIO pre-reset @@ -636,7 +660,7 @@ uv run python scripts/live/