CLAUDE.md: ondata 2026-08-22 — difetto dei monitor forward, tre soglie falsificate, la leva invisibile ai gate, e una regola ritirata

This commit is contained in:
Adriano Dal Pastro
2026-08-22 18:04:52 +00:00
parent 272622b6e8
commit 827ae54dc1
+146
View File
@@ -1992,6 +1992,152 @@ Prima ondata di ricerca onesta su BTC/ETH certificati (5 track, harness condivis
⚠️ **Nota per il futuro-me:** e' una decisione presa con l'informazione completa, non una svista.
Se qualcuno propone SOL "perche' e' eseguibile su Deribit", la risposta e' che l'eseguibilita'
non e' mai stata il problema — l'hold-out lo e', a 24 ancore su 24.
- 🌊 **ONDATA MULTI-AGENTE 2026-08-22 (20 filoni, branch `research/wave-0822`) — 0 candidati, 1
DIFETTO DI PRODUZIONE, 3 soglie pubblicate falsificate, 1 leva che nessun gate sa vedere.**
Diario `docs/diary/2026-08-22-wave-multiagente.md`; ledger per filone `docs/research/RESULTS-0822.md`;
briefing `docs/research/BRIEF-0822.md`; 21 script `scripts/research/r0822_*.py` (15.295 righe,
compilano tutti, ognuno gira da solo). **Book, pesi, cron, config INVARIATI.**
🚨 **(1) I MONITOR FORWARD REGISTRANO UNA FRAZIONE DEL GIORNO — 4 su 6 rotti.**
`fetch_hyperliquid` e `resample_tf` scrivono la barra del **giorno in corso**; `advance()` la
consuma e **porta `last_ts` su di essa** -> le ore restanti non entrano in nessun rendimento.
| monitor | barre coincidenti | **min/giorno** | gate |
|---|---|---|---|
| `paper_statarb` | **0/46** | **4** | **STATARB 27/09** |
| `paper_dvolspread` | 0/28 | **2** | DVOLSPREAD 24/10 |
| `paper_xsr` | 1/28 | **41** | XSR01 23/10 |
| `paper_portfolio` | 7/56 | 19 | — |
| `paper_prevday` | 1259/1319 | 1.438 | — |
| `paper_combo` | 7/37 | 1.402 | — (sano **per caso**: aspetta una borsa) |
**Il gate STATARB si ribalta su 2 criteri su 3**: Sharpe registrato **+1,96** contro **2,02**
ricostruito, maxDD **2,2% contro 15,3%** (guardia <10%).
**La finestra NON va persa** (misurato 2 volte: il feed non riscrive le barre chiuse —
`paper_prevday` 1427/1488 identiche al bit dopo 62 notti; le 6 barre di statarb recuperate dopo il
guasto EPERM 09-15/07 coincidono al bit) -> **"riparare `advance()` + RIGENERARE", non "riparare e
azzerare": nessuna data di gate si sposta** (pessimista: STATARB +18g).
**Guardia raccomandata, NON cablata:** `ts_ultima_barra + cadenza <= mtime del file`, grazia 5 min.
O(1), segnala 5/6, **tace sul sano**, controllo positivo sintetico 6/6 nei due versi.
⚠️ `monitor_health` non poteva vederlo: **una serie fresca, completa e SBAGLIATA passa ogni
controllo di freschezza**. E `implausible_sharpe` non e' **mai** stato puntato sulle serie forward.
📌 **(2) TRE SOGLIE PUBBLICATE, FALSIFICATE.** (a) *"XS01 serve ~$20k"* (origine: "rumore di
arrotondamento", stima a occhio del 19/06) -> **nessuna soglia da min-order**, haircut ~0 gia' a
**$200-600 allocati**. Meccanismo: gli ordini sono **due popolazioni** — il ribilanciamento del
segnale e' il 13% degli ordini ma il **75% del nozionale** (ticket $13,65); la deriva del
vol-target e' l'87% degli ordini ma il **25%** (ticket $0,64) e **il pavimento la taglia gratis**.
*Contare gli ordini da' 16%, contare il nozionale da' 75%.* ⚠️ **Il "$20k di XS01" e il "$20k
della DECISIONE DI VENUE" sono due cose diverse conflate in questo file: il primo cade, il secondo
REGGE** (e' sull'asse della rovina, non dell'eseguibilita'). (b) *"slippage = rischio #1 di XSR01"*
-> **refutato con margine 21x**. (c) *"BTC opzioni fuori a $3.000"* -> misurato sulla famiglia
**inverse**, che un conto **USDC non puo' marginare**; la famiglia USDC-lineare ha lotti **10x piu'
piccoli** (ETH_USDC **$242**, BTC_USDC $772 contro $7.744). Il muro resta **per il prezzo del
lotto**. Parametri veri Hyperliquid: **min order $10** (non $5), **taker 4,50 bps** (non 5,0).
📌 **(3) LA LEVA E' L'UNICA VARIABILE CHE NESSUN GATE DEL PROGETTO SA VEDERE.** Lo Sharpe e'
**invariante alla scala** (1,31 a ogni cella del knob) -> `deflated_sharpe` e `marginal_vs_tp01`
non falliscono, **non la vedono**. Il libro gira al **7% di Kelly** e raccoglie il **15%** della
crescita massima in log; il gradino eseguibile 1,00x->1,25-1,50x vale **14,7a -> 12,9-11,6a** al
capitale-rendita (€500/m, netto fisco). **Lo scettico conferma il numero e toglie la sua condizione
bloccante**: sotto la lente wick accoppiata il maxDD prende un **ricarico moltiplicativo costante
~3,5%**, non un'amplificazione (**il maxDD e' multi-giorno, il wick e' di un giorno**).
**Il gradino resta NON autorizzato**: cade 1 riserva su 3; restano il drift stimato su 7,4 anni
(k* e' lineare nel suo errore) e la **coda assente dal dataset** (un giorno 10%/anno -> k* 2x).
⚠️ **Ma la lezione del 25/07 e' vera e NON si trasferisce:** su una regola a **UN giorno**
(daily-loss, stop di conto) close-only e' **esattamente cieca** — 0,00 breach/anno contro 0,40-1,21
veri (**rapporto INF**). **Sul canale prop/funded la lente accoppiata resta OBBLIGATORIA.**
⚠️ **`target_vol` e `k` NON sono la stessa leva:** `target_vol` scala il 75% del libro e lascia
fermo il 25% (a tv=30% il libro e' **82/18**, a 60% **90/10**) -> e' anche un tilt di pesi, e
**fallisce `weights_tilt_null`**. La strada pulita per un cambio di SCALA e' il cap di config.
📌 **La vol realizzata di TP01 a `target_vol=20%` e' 12,14%**, scomposto: `20% x 0,682 x 0,890`,
dove lo 0,682 sono **due meta' quasi uguali** (flat nel 44,3% delle barre **e** convinzione
parziale) -> **"TP01 e' long-flat" spiega meta'**; e alzare `target_vol` **aumenta la size proprio
nei giorni in cui il segnale e' piu' debole**. Il x0,890 e' **diversificazione, non un difetto**.
⚠️ **XS01 dichiara lo stesso 20% e ne realizza 20,59%: vale per TP01, non per il libro.** Nessun
numero pubblicato cambia (sono tutti sulla serie **realizzata**); sbaglia chi legge l'**etichetta**
(attribuirebbe a TP01 l'89% del rischio invece del **73%**).
📌 **(4) PROP/FUNDED — l'ipotesi centrale e' falsificata, e per la ragione teorica giusta.**
Riallocare *per la barriera* invece che *per lo Sharpe* vale **+0,016 di J (il 4%)**: il conto del
gambler's ruin lo prevedeva (**la vol sparisce, il contenuto sta nella LEVA**). Cio' che vale e'
**mettere XS01 su un conto funded: +0,400** (J 0,335 -> 0,738; P(pass) 38,6% -> 82,2%). Leva ottima
**0,75x HYRO / 1,00x FTMO**, e **la barriera piu' larga alza l'ottimo: il vincolo e' la regola di
DD, non il libro**; la leva alta **non compra probabilita', compra fretta**. Il **75/25 del libro
live non e' la ripartizione giusta per un conto a barriera** (sul 2019+ che contiene il 2022
l'ottimo e' **38/62 @0,50x**). **Il null dei tilt dice che il PUNTO non conta**: il massimo di 200
pesi casuali (0,739) **eguaglia** l'argmax (0,738) — conta stare nella regione diversificata.
🚨 **Il numero da citare e' LA BANDA: P(>=50/g) da €600 in 36 mesi = 42% al drift pieno · 7,7% allo
stress moderato · 0,7% a quello severo** (e li' e' **peggio del libro live**), perche' **tutto il
vantaggio poggia sul drift di XS01 misurato sulla sua finestra di scoperta**. Gate proposto: non
aprire un funded su questa allocazione prima che XS01 abbia una finestra fuori dal 2024-2026.
⚠️ Distorsioni dichiarate e non rimosse: banda d'ancora **non girata** sotto quella lente (l'ottimo
gira sull'ancora canonica e si appoggia a **SKH01, che ha la fortuna d'ancora piu' grande da
restituire**); e la sotto-pesatura di **TP01, lo sleeve difensivo, e' misurata su un campione senza
sinistro** — su una barriera assorbente quella scommessa si paga una volta sola.
📌 **(5) LO SLIPPAGE DEL LIBRO LIVE, misurato per la prima volta: non c'e' a questa taglia.**
I backtest a 10 bps RT restano **conservativi di ~1,5 bps/lato** (fee vera 7 bps RT); estremi
avversi **1/18 contro 4,7 attesi**. Prova diretta: un fill ha preso il **21,9% del volume della sua
barra 5m** e quella barra ha avuto un range di **1,08 bps**. ✅ **Fee sul NASTRO: 5,00 bps/lato
prima del 2026-08-01 e 3,50 dopo, 16/16 esatti** = conferma indipendente di `fee_watch`.
🚨 **Ma la misura ha una DATA DI SCADENZA:** la partecipazione scala lineare -> quel 22% diventa
**172% di una barra 5m a $5.000** e **687% a $20.000**. **Va rifatta a ogni salto di taglia.**
⚠️ Due difetti del dato trovati prima di misurare: `ts_utc` in `book_executions.jsonl` **non e'
l'ora del fill** (18/18 = `00:00:00`; l'ora vera sta solo in `logs/cron_book.log`); e il feed
certificato e' l'**INVERSE** mentre il libro trada il **LINEARE USDC** (**4ª occorrenza** dello
schema `fee_watch`: misurare li' avrebbe misurato **la base**).
📌 **(6) IL `f=0,73` DI VRP01 SCOMPOSTO — il 42% e' STRUTTURA A TERMINE, solo il 25% e' skew**
(30% spread, 2% fit). **Il sleeve prezza un'opzione a 7 GIORNI col DVOL a 30 GIORNI**, che nel 90%
delle ore sta ~3 punti di vol **sopra** l'ATM a 7g -> sovrapprezza **entrambe** le gambe. Il
"+0,8pp sulla gamba corta" del 30/07 — che faceva sembrare **corretta** la gamba venduta — e' la
**cancellazione di due errori da ~3pp**. ⚠️ **E la regola per prenderlo era gia' scritta il 03/07**
("riprezzare term-structure-consistent prima di credere a un numero da struttura BS-flat") **e non
e' stata applicata alla misura del 30/07**. Verso: `f_term` va da **0,83** (IV-rank basso) a
**0,93** (alto) e **supera 1 in backwardation** mentre `f_skew` resta piatto -> **la parte maggiore
del difetto si annulla proprio dove il gate fa tradare il sleeve**, quindi f=0,73 e' plausibilmente
**conservativo li'**. Non misurato (0/22 ingressi passano il gate) e in un crash i due pezzi vanno
in **direzioni contrarie**. **`VRP_CFG["f"]` NON cambiato.** Replica indipendente del f: **0,714**.
📌 **(7) CHIUSURE DI FAMIGLIA.** **Il filone funding si chiude sul QUARTO lato** (affollamento):
su **53.430 ore / 3 anni** non predice ne' direzione ne' volatilita'. E i futures datati **non sono
un quinto lato**: il loro basis **E'** il funding del perp (+7,33% implicito contro **+6,48%**
realizzato; premio incassabile **+0,85%/anno con IC95 che contiene lo zero**). **La mean-reversion
non risorge** sotto due conditioner mai provati (volume, shock 3σ): la selezione in-sample sceglie
il ramo di **continuazione** in entrambi. Scartati anche: adaptive-horizon (il "vincitore adattivo"
ha lookback **costante**, corr 1,000), dealer-gamma (BTC non separa, ETH separa **al rovescio**;
e ⚠️ **`dealer_net_gamma` del dataset ereditato e' il GEX col SEGNO INVERTITO**, corr 0,95, mentre
`liquidation_*_risk` e' **una sola categoria in 17.229/17.229 righe**), oi-pin (il max-pain **non
batte mai, 0/24, la media a 7 giorni dello spot**), term-structure (**termometro contemporaneo**),
skew direzionale (**il prezzo muove lo skew**, t 3,1-9,4 su 8/8, non il contrario), ortho-screen
**7/7**, alt-options (alt), xs-lite, vrp-quote-vere.
⚠️ **La catena ereditata da bite ha 74-75 giorni utili, non 3,7 mesi:** prima del **2026-06-09**
raccoglieva **una sola scadenza per giro** (due agenti indipendenti, 74 e 75).
📌 **(8) REGOLE NUOVE.** (a) **L'open interest NON misura la negoziabilita'** — su Deribit USDC sono
quasi **anti-correlati (rho di rango 0,77)**: SOL_USDC e' 1ª per OI e **ultima per quote a due
lati (9%)**, BTC_USDC ha **5** strumenti con OI>=100 e il **93%** dei put quotati (e sul short leg
di SOL il miglior bid sta a **UN tick**: vendere li' significa **pagare $27** per aprire un credit
spread). (b) **Il deflated-Sharpe va calcolato DI SCREEN, non solo di famiglia**: su 168 trial il
massimo atteso dal **puro rumore** e' **Sharpe 1,572**, sopra il soffitto direzionale (~1,3) ->
**uno screen largo su BTC/ETH direzionale non puo' passare il proprio gate, per aritmetica.**
(c) **Un placebo si controlla per BILANCIAMENTO DEL SEGNO prima di usarlo** (un null che concorda
col segnale nel 14% dei casi non e' un null, e' la strategia invertita: fabbrica celle
"significative"). (d) **Il null del de-levering e' DEGENERE quando la variante e' una
ri-scalatura** (`sh(k*base) === sh(base)`): serve **iso-peso sullo Sharpe**. (e) **Un gate che
stampa `None` va verificato prima di dichiararlo "non girato"**. (f) **Su una finestra interamente
post-hold-out `marginal_vs_tp01` non puo' dare ADDS per costruzione** — un NEUTRAL li' non e' un
giudizio. (g) **Un confronto appaiato deve ereditare TUTTI i parametri della riga in cui compare.**
**REGOLA RITIRATA, pubblicata poche ore prima nella stessa ondata:** *"su equity a gradino un
overlay giornaliero e' non-causale"* — **falso su questo motore**: `backtest_signals` contabilizza
al giorno d'**INGRESSO** in **291/293** trade e la "riparazione" e' un **no-op bit-exact**; il
"+0,04 fantasma" era la differenza fra due varianti **entrambe causali**, e quella scartata era la
**migliore sull'hold-out**. *Il costo di una regola derivata da un difetto inesistente e' gia'
stato pagato.*
📌 **(9) Cosa NON e' piu' il vincolo: TRE volte in questa ondata l'eseguibilita' a $600 non ha
bocciato niente** (haircut 0,00-0,01; lotti $7-242; margine ~$148). Dopo due mesi in cui il muro
era sempre il capitale, **adesso muoiono tutti sull'edge**.
⚠️ **(10) FATTO OPERATIVO: il cron gira dal WORKING TREE.** Con un branch di ricerca attivo, il
cron esegue quel branch. Durante l'ondata il diff vs `main` toccava **solo** `scripts/research/` e
`docs/research/` (verificato) -> produzione identica; ed e' il motivo per cui **nessuna riparazione
e' stata applicata**: sarebbe andata live alle 00:30 senza una decisione dell'operatore.
🗂️ **Dataset nuovo in eredita':** **30/30 futures trimestrali scaduti** Deribit ricostruiti
(`get_instruments?expired=true` ne ritorna **1**, ma i nomi sono deterministici e
`get_tradingview_chart_data` serve la storia di un contratto scaduto): **BTC 240.150 barre orarie /
ETH 233.334, dal 2018-09, col deleveraging 2022 dentro** — cioe' **la coda che a CC01 mancava per
costruzione**. Cross-check col forward implicito nella catena opzioni: mediana **0,6 bps**.
- **Soffitto strutturale BTC/ETH-direzionale ~1.3** superato SOLO espandendo a un meccanismo diverso:
cross-sectional su universo Hyperliquid certificato (XS01) → portafoglio Sharpe ~1.55.
- **Sweep "strategie alternative" (2026-06-20) — 104 ipotesi / 153 agenti / NIENTE di nuovo regge.**