Files
PythagorasGoal/docs/research/RESULTS-0822.md
T

1434 lines
113 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.
# ONDATA 2026-08-22 — esiti per filone (aggiornato man mano)
Regola di lettura: `SCARTATO` con un meccanismo misurato vale quanto un `LEAD` — chiude un filone
e smette di farlo pagare alle ondate successive. `CANDIDATO` richiede marginal ADDS + DSR>=0.95 +
null de-levering superato + eseguibilita' al capitale dichiarato.
| # | filone | verdetto | in una riga |
|---|---|---|---|
| 9 | ADAPTIVE-HORIZON | **SCARTATO** | il "vincitore adattivo" ha lookback incollato al bordo il 100% del tempo = TSMOM costante a 20g (corr 1.000, dSh 0.00 in 8/8 anni e 0/12 ancore); isolando le celle davvero adattive -> NEUTRAL, corr→TP01 0.90 = TP01 travestito || 4 | DEALER-GAMMA | **SCARTATO** | la gamba tradeable e' INCOERENTE (BTC non separa, ETH separa al ROVESCIO); cio' che resta e' quasi tutto DVOL (corr 0.66), gia' refutato il 26/06. DSR 0.440 e la cella migliore sta SOTTO il massimo atteso dal rumore |
| 2 | GROWTH-POLICY | **LEAD** (condizione, non data) | 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 muro. Ma un solo giorno -10% all'anno porta k* da ~10x a **2x**: non si decide su un conto vero con la lente close-only |
| 12 | ORTHO-SCREEN | **SCARTATO 7/7** | nessuna famiglia arriva a ADDS+DSR; e il motivo e' **aritmetico**: su 168 trial il massimo atteso dal rumore e' Sharpe **1.572**, SOPRA il soffitto direzionale misurato (~1.3) -> uno screen largo su BTC/ETH direzionale **non puo'** passare un DSR, per costruzione |
| 3 | XS-LITE | **SCARTATO** (come sleeve) + **1 soglia pubblicata falsificata** | concentrare XS01 non crea uno sleeve nuovo (corr 0.81-0.96 col canonico, DSR FAIL, de-levering non superato) — ma il muro *"XS01 serve ~$20k"* e' misurato su una diagnostica di TURNOVER: il ribilancio vero smette di passare sotto **~$109 di sleeve (~$730 di book), 27x piu' in basso** |
| 10 | FLOW-SQUEEZE | **SCARTATO** (2 motivi indipendenti) | meta' dell'ipotesi **non esiste nel dato** (`liquidation_*_risk` = una sola categoria in 17.229/17.229 righe); l'altra meta' e' sotto la propria soglia di potenza **dichiarata prima** (MDE 1,056% vs effetto 0,402%) ed e' comunque **morta alla nascita** (la colonna non e' ricostruibile) |
| 11 | VRP-QUOTE-VERE | **SCARTATO** + **1 difetto di RACCOLTA in produzione** | il campione contiene l'**astensione** della strategia (0/19 settimane passano IV-rank>0.30) e il titolo non sopravvive all'ora d'ingresso; ma soprattutto: **`collect_chain.py` raccoglie la famiglia di contratti che il conto NON puo' marginare** |
| 7 | TERM-STRUCTURE | **SCARTATO** + 1 LEAD stretto (decisione 2027-02-01) | la pendenza e' un **termometro contemporaneo** (picco CCF a lag 1h/0h); il carry non paga il bid-ask (**18,6 giorni di roll-down per pagare UN round-trip**); come gate e' la **5ª occorrenza** della ridondanza col trend |
| 6 | OI-PIN | **SCARTATO** | il max-pain batte uno strike casuale ma **non batte mai (0/24) la media a 7 giorni dello spot**, un livello che non usa NESSUN dato di opzioni: non e' pinning, e' reversione verso il centro recente con l'OI come stimatore rumoroso di quel centro |
| 8 | VOL-SIZE | **LEAD RIDIMENSIONATO** — gate 22/12 **gia' fallito oggi** | dare a SKH01 una size per-trade regge a **23/23 ancore**, 8/8 anni, null di permutazione e trasferimento su V1 — ma vale **+0,07 di Sharpe di libro, un terzo della fortuna d'ancora del libro stesso (+0,196)**. Il vol-target di **libro** e' invece falsificato: compra peso SKH gia' respinto e peggiora l'eseguibilita' |
| — | **XSR-REPRO** (integrita') | 🚨 **DIFETTO DI PRODUZIONE** | il numero 1.82 e' SPIEGATO e non era sbagliato (era su una **terza** lente, e su una barra non ancora chiusa) — ma cercandone la causa e' emerso che **`paper_xsr` registra ~41 minuti di mercato al giorno**, non un giorno. Tre gate pre-registrati leggono serie costruite cosi' |
| 5 | SKEW | **SCARTATO** (Q1, Q2) + **LEAD** (Q3, gate 2027-02-22) | il prezzo muove lo skew (t 3,1-9,4 su 8/8 test), **non il contrario** (max |t| in avanti 2,35 contro 2,08 atteso dal rumore). Ma Q3 e' grosso: **il f=0,73 di VRP01 e' per il 42% STRUTTURA A TERMINE e solo per il 25% skew** |
| — | **HL-EXEC** (audit di fatto) | **3 falsificazioni misurate** | il pavimento vero e' **$10 (non $5)** e il taker **4,50 bps (non 5,0)** — ma il *"XS01 serve ~$20k"* e' **refutato del tutto** (nessuna soglia da min-order), il *"XSR01 ~$5.000"* e' **conservativo di 1,7x** (vero ~$3.000), e lo **slippage "rischio #1" di XSR01 e' refutato** con margine **21x** |
| — | **SLIP-AUDIT** (audit di fatto) | **SCARTATO** = nessun costo nascosto a questa taglia | i backtest a 10 bps RT restano **conservativi di ~1,5 bps/lato**; nessuna evidenza di impatto sopravvive al null (p=0,274; estremi avversi **1/18 contro 4,7 attesi**). **Ma la misura ha una data di scadenza** |
| — | **SCETTICO su GROWTH-POLICY** | **REGGE** (condizione bloccante DECADUTA) | la lente wick accoppiata **non cambia il gradino**: e' un ricarico moltiplicativo **costante ~3,5%** sul maxDD, non un'amplificazione (Δ/k **cala**). Ma su una regola a **UN giorno** close-only e' **esattamente cieca** (rapporto INF) -> la lezione 25/07 e' vera e **non si trasferisce** |
| 13 | BASIS-CALENDAR | **SCARTATO** + **1 dataset nuovo** | il basis dei futures datati **E' il funding del perp quotato diversamente** (7,33% contro 6,48%/anno): non e' un quarto lato del filone funding, e' lo stesso lato. Premio incassabile **+0,85%/anno con IC95 che contiene lo zero** |
| — | **MONITOR-AUDIT** (produzione) | 🚨 **4 monitor su 6 rotti**, ma **la finestra NON e' persa** | `paper_statarb` registra **4 minuti al giorno** e il suo gate del **27/09 si ribalta su 2 criteri su 3** (Sharpe registrato **+1,96** contro **2,02** ricostruito). **La riparazione e' "riparare + RIGENERARE", non "riparare e azzerare": nessuna data di gate si sposta** |
| 1 | PROP-ALLOC | **LEAD** (gate: XS01 fuori dalla sua finestra) + **1 ipotesi falsificata** | riallocare *per la barriera* invece che *per lo Sharpe* vale **+0,016 di J (il 4%)**: e' cio' che il conto del gambler's ruin prevedeva. Cio' che vale e' **mettere XS01 su un conto funded (+0,400)** — ma **tutto il vantaggio poggia sul drift di XS01 misurato sulla sua finestra di scoperta** |
## Note che sopravvivono ai singoli filoni
### 9 — ADAPTIVE-HORIZON (r0822_adaptive_horizon.py, 112 trial dichiarati)
- Sanity: il baseline dell'agente riproduce TP01 canonico a **max|diff| = 0.0** (n=2719).
- Il controllo giusto NON era TP01 ma il **miglior lookback COSTANTE**: senza quel controllo il null
confonde "adattare paga" con "un orizzonte piu' corto paga su questo campione". L'agente se l'e'
costruito da solo dopo aver visto l'argmax incollato al bordo, e ha dichiarato i trial in piu'.
- ⚠️ Segnalazione, NON proposta: 30/90/180 e' rango 18/24 in-sample nella propria famiglia di
orizzonti (10/24 sull'hold-out), ma la superficie di L e' un **crinale di rumore** — il salto di
Sharpe fra L ADIACENTI e' +0.18, cioe' il 47-67% dell'intero vantaggio del vincitore su TP01, ed
estendere la griglia ha spostato l'argmax da L=20 a L=15. "Piu' corto e' meglio" e' un max-of-k su
una superficie frastagliata. **Nessun cambio a TP01.**
- Riaprirebbe il filone: un rilevatore il cui L si muove DAVVERO che batta il miglior L costante
(non TP01) in >=6/8 anni appaiati con corr→TP01 < 0.6 — es. BOCPD/PELT vero, non provato.
### 4 — DEALER-GAMMA (r0822_dealer_gamma.py, 136 statistiche dichiarate)
⚠️ **DIFETTO DI DATO, il risultato piu' riusabile del filone: `dealer_net_gamma` e' il GEX col SEGNO
INVERTITO** — corr **-0.95 BTC / -0.89 ETH** contro la ricostruzione da manuale sulla catena
(962/1116 snapshot, ~280-316 strike), fit `dng ~ -0.7*GEX`. **Chi lo usasse col nome che porta
leggerebbe ogni regime al contrario.** Spiega anche la contraddizione interna del file (corr fra
`dng>0` e `spot>flip` = -0.28 / -0.92).
⚠️ **Il file dichiara piu' di quel che ha:** cadenza 15 min solo dal **2026-05-01**; i 37 giorni
prima sono **un punto al giorno** -> **90 giorni, non 4 mesi**. `liquidation_long_risk` e
`liquidation_short_risk` sono **COSTANTI** ('low' in 17.229 righe su 17.229 non nulle) = zero
informazione. `gamma_flip_level` congelato nel **61%** dei passi su BTC.
- Gate: **null de-levering FALLITO** (baseline x0.6 stesso maxDD con Sharpe migliore); **DSR 0.440**
su 64 trial, e nel modo piu' netto — la cella migliore (+4.98 lordo) sta **sotto** il massimo
atteso dal puro rumore (+5.12). `marginal_vs_tp01` inutilizzabile: su 90 giorni full e hold-out
COINCIDONO (`n_hold_days == n_days == 90`).
- **Null location-matched** (aggiunto dall'agente): `gamma_flip_level` bocciato — 96% di accordo con
`spot > SMA(720h)` su ETH; su BTC la SMA nuda da' uno spread MAGGIORE.
- **Ampiezza effettiva**: 73/59 episodi di regime ma 6-8 coprono il 78-86% del tempo -> **n_eff 53
(BTC) / 24 (ETH) ore** su 2.130. Il regime coincide col MESE (maggio long, giugno short, luglio long).
- ✅ Ricostruibile oggi dalla NOSTRA catena, meglio dell'originale (518 ore dal 01/08, ~209-262
strike/ora, quote_status ok ~100%, segno giusto) — **ma la soglia non e' portabile** (`dng=0`
corrisponde a `GEX=+5.8e6` su BTC): ricalibrarla sui 90 giorni sarebbe la selezione che il
progetto rifiuta. Riapertura non prima di **~30-40 episodi di regime = ~2 anni (meta' 2028)**.
### 2 — GROWTH-POLICY (r0822_growth_policy.py, 241 celle dichiarate)
**Controllo di replica superato**: il motore riproduce `r0807_piano_netto` §2 al numero pubblicato
(EUR250/m -> 19,8a / P 52%; EUR500/m -> 14,7a / P 99%) con path diversi.
📌 **Il risultato strutturale: ogni gate del progetto e' INVARIANTE ALLA SCALA.** Lo Sharpe misura
1,31 a OGNI cella del knob di leva -> `deflated_sharpe` e `marginal_vs_tp01` non falliscono, **non
vedono la variabile**. E' per questo che la leva e' l'unica leva del libro mai esaminata in 2 mesi.
- Serie de-luckata x0,89: drift 17,11%/a, vol 11,37%, Sharpe 1,51, peggior giorno -3,95%.
Netto fee E netto fisco d'accumulo (33% + carry 4a + patrimoniale 0,2%).
- k* empirico **~10-14x** (banda 10x a 1500 path / 14x a 2500: la POSIZIONE non e' risolta),
Kelly gaussiano 13,2x. Libro a k=1 -> g 17,0%/a, maxDD mediano 18,1%, P(DD>30%) 1,4%.
- **Fragilita' che decide il verdetto:** k* e' lineare nell'errore del drift (stimato su 7,4 anni) —
-1 SE -> 10x, -2 SE -> 7x, drift dimezzato -> 7x, drift zero -> 0,5x. E allo **stress di coda**
un giorno -10% **all'anno** porta k* a **2x**, -15%/anno a **1x**.
- ⚠️ **Controllo di plausibilita' FALLITO dall'agente sul proprio output** (e riportato): capitale
mediano **$4,4e12** da $600 a k=14x -> il modello assume ritorno **indipendente dalla size**.
A k>2 i numeri sono aritmetica, non previsioni.
- **Gate pre-registrato (condizione, non data): nessuna proposta di k>1 prima di rifare la curva con
la lente WICK ACCOPPIATA** (`r0725_prop_coupled`) — a leva il breach si valuta sul MINIMO, e la
lente close-only usata qui e' quella misurata **cieca** il 25/07 (raddoppia i breach da daily-loss).
- 📌 **Sottoprodotto da verificare (tocca un'etichetta del libro live):** a `target_vol=20%` la vol
**realizzata** di TP01 e' **12,14%** — il target vale sulla posizione quando c'e', e TP01 e'
long-flat. **L'etichetta sovrastima il rischio preso di ~40%.**
### 12 — ORTHO-SCREEN (r0822_ortho_screen.py, 174 trial: 7 famiglie x 24 + 6 controlli)
📌 **Il risultato piu' riusabile dell'ondata, ed e' metodologico:** il deflated-Sharpe va calcolato
**di screen** (168 trial) e non solo di famiglia (24). Su quel pool il massimo atteso dal puro rumore
e' **Sharpe 1.572**, cioe' **sopra il soffitto direzionale misurato del progetto (~1.3)**.
**Conseguenza: una ricerca a rete larga su un singolo stream direzionale BTC/ETH non puo' passare il
proprio gate — non e' sfortuna, e' aritmetica.** Le ondate future o dichiarano famiglie molto piu'
piccole in anticipo, o cambiano meccanismo (non-direzionale / cross-sectional).
📌 **Per la prima volta nel progetto l'eseguibilita' a $600 non e' il vincolo binding di niente**
(haircut 0.00-0.01 su 7/7): muore tutto molto prima, sull'edge.
- Famiglie: RSKEW (skew realizzata), TACC (accelerazione del trend), VPX (volume-prezzo), XDISP
(dispersione dei 51 alt come timer), XCORR (corr BTC-ETH), XTAIL (dopo shock 3σ), VRAT
(variance-ratio). Miglior DSR di famiglia 0.633, di screen **0.034**. `robust_oos` False 7/7.
- **TACC** e' l'unica ADDS (corr→TP01 0.09) ma il suo uplift hold-out **vive tutto nel 2026** (2025
da solo 0.314) = finestra fortunata. E la domanda della famiglia ha risposta: **e' il LIVELLO,
non l'accelerazione** — la cella scelta si riduce al ritorno a 5 giorni, corr **+0.784** col
momentum di livello.
-**Tre falsificazioni che chiudono spazio:** (1) la mean-reversion **non torna in vita** sotto due
conditioner mai provati (volume, shock 3σ): la selezione in-sample sceglie il ramo di
CONTINUAZIONE in entrambi i casi; (2) la dispersione dei 51 alt come timer di mercato e'
**negativa** (0.899 sulla sola finestra attiva, non e' un artefatto di calendario); (3) RSKEW e'
il ritratto del fitting — **miglior in-sample dello screen (1.281) e peggior hold-out (0.494)**,
col segno OPPOSTO all'a-priori teorico dichiarato.
- ⚠️ **6ª occorrenza del null del de-levering** (VRAT, maxDD 4.4% -> `k*TP01` fa meglio).
- ⚠️ Due candidati hanno l'ancora canonica come **PEGGIORE** delle 8 (TACC, VRAT): la fortuna
d'ancora non ha un verso fisso, e guardare solo il canonico a volte **inventa un danno**.
### 3 — XS-LITE (r0822_xs_lite.py, 26 celle + 120 valutazioni d'ancora)
✅ Repliche **bit-exact** prima di ogni delta: XS01 vs `sleeves._xsec_returns` e XSR01 vs
`basket_from_positions(demean=True)`, entrambe `max|diff| = 0.0`.
📌 **Falsificazione di un numero pubblicato:** il muro *"XS01 serve ~$20k"* non e' un fatto di
Sharpe ma di **turnover** — e a capitale piccolo il min-order salta la **deriva del vol-target**
(|Δw| giornaliero 0.001) che **non porta segnale**, non il ribilancio (|Δw| 0.091-0.157). Capitale
minimo perche' il ribilancio passi: **$109 (k=5) / $86 (k=3) / $64 (k=2)** di sleeve. Stessa lezione
gia' imparata su TP01 nel 2026 ("a $600 il min-order e' gia' la banda ottimale") e **mai applicata a
XS01**. ⚠️ L'agente ha usato **min-order $10 (Hyperliquid)**, non $5 (Deribit) — un audit dedicato
sta verificando i minimi veri del venue.
- Concentrare **non** ripara il rischio #1 di XSR01: XS-LITE regge oltre **50 bps/gamba**, XSR-LITE
muore a **~28 bps a ogni k, pieno incluso**.
- La radice dell'ampiezza **non descrive** XS01: da 10 a 4 gambe si perde il **2%** di Sharpe
mediano-di-fase mentre N_hhi passa 6.9 -> 3.0 (il segnale sta negli **estremi** del ranking; le
gambe 3-5 per lato aggiungono rischio quanto segnale). Il collasso arriva solo a k=1 (41%).
- ⚠️ **Da inseguire — tocca un gate pre-registrato: lo Sharpe 1.82 di XSR01 NON si riproduce oggi.**
Sulla finestra identica a quella di scoperta la lente "paniere" da' **1.75** e la lente "libro" di
`paper_xsr` da' **2.23**; 1.82 non e' nessuna delle due. Spiegazione piu' probabile: `data/raw` e'
gitignored e il cron riscrive i parquet HL ogni notte -> **stesso codice, dati diversi** (identico
allo scoperto del 07/08 su GTAA/TLT). **La decisione del 23/10 poggia su quel numero.**
### 10 — FLOW-SQUEEZE (r0822_flow_squeeze.py, 118 trial dichiarati, griglia RIDOTTA per budget)
📌 **Sottoprodotto con potenza vera, e chiude un filone: il funding non predice ne' direzione ne'
volatilita'** — misurato su **53.430 ore / 3 anni** di funding Hyperliquid (li' la potenza c'e'):
eccesso |<=0,35%| a 24h con **segno instabile fra anni**, |ritorno| futuro piatto e non monotono.
**Il filone funding, gia' chiuso su 3 lati come livello di carry, si puo' dichiarare chiuso anche
come proxy di AFFOLLAMENTO. Quarto lato.**
- Il "segnale" migliore (Sharpe 3,25 su 90 giorni) e' **il massimo di 18 celle**: DSR **0,103**
(0,004 su 118 trial), `implausible_sharpe=True`, e su 114 giorni **il massimo atteso per caso e'
Sharpe 5,40** -> il candidato sta **sotto il proprio null**. Il 71% del P&L e' in giugno, il 60%
in **3 giorni su 114**.
- Il null "statica travestita" e' superato (sempre-short = 0,67), ma quello di **timing casuale
location-matched** e' al 99,7° pctl **che pero' e' il massimo di 18** -> P(per caso) = 0,06:
**non superato dopo il conto dei trial**. Esempio pulito di come si legge un percentile alto.
- ⚠️ **Ricostruibilita' MISURATA, non assunta:** l'OI della catena (opzioni) contro la colonna dello
snapshot (perpetual) da' **Pearson +0,03 BTC / +0,21 ETH** — non e' la stessa grandezza.
- 💡 **Azione possibile, costo quasi nullo (NON eseguita, tocca il cron di produzione):** accendere
un collettore orario dell'**OI dei perpetual Deribit** (una GET/ora, API pubblica). Non ripara
questo filone, ma da quel giorno la storia comincia; oggi ripartirebbe da zero. Il criterio di
falsificazione e' gia' scritto dall'agente: >=12 mesi, eccesso oltre la MDE (~0,3%) e presente in
>=3 trimestri su 4.
- ⚠️ **Distinzione metodologica utile** (nata contraddicendo il suggerimento del coordinatore): qui
il vincolo binding NON e' la concentrazione degli episodi (86-87 episodi corti, i primi 8 coprono
solo il 20-25% delle ore) ma la **lunghezza del calendario** (90 giorni). *Ampiezza scarsa* e
*calendario corto* sono due diagnosi diverse e si curano in modi diversi: piu' episodi vs piu' tempo.
### 11 — VRP-QUOTE-VERE (r0822_vrp_real_quotes.py, 60 trial + 9 ancore d'ingresso)
🚨 **IL RISULTATO DI PRODUZIONE — `collect_chain.py` interroga `{"currency": "BTC"|"ETH"}`, che su
Deribit restituisce le sole opzioni INVERSE (regolate in BTC/ETH). Il conto e' in USDC** (esegue
`BTC_USDC-PERPETUAL`). Esiste una famiglia **USDC-lineare** con lotto minimo **10x piu' piccolo**:
| famiglia | min lotto | ~$ per lotto |
|---|---|---|
| BTC inverse | 0.1 | ~$7.700 |
| **BTC_USDC** | **0.01** | ~$780 |
| ETH inverse | 1.0 | ~$2.500 |
| **ETH_USDC** | **0.1** | ~$250 |
Quindi il muro pubblicato *"BTC opzioni min 0.1 = $6.210/lotto -> FUORI a $3.000"* (congelato in
`tests/test_vrp_profit_take.py`) e' **misurato sulla famiglia che il conto non puo' marginare**.
**3ª occorrenza dello schema `fee_watch` (21/08): un controllo/collettore puntato su uno strumento
diverso da quello che si trada.**
⚠️ **MA la verifica indipendente del coordinatore cambia la conclusione, e in meglio:** contando
l'open interest famiglia per famiglia (`get_book_summary_by_currency`, misura mia, non dell'agente)
| famiglia | strumenti | con OI>=100 |
|---|---|---|
| BTC inverse | 1038 | **415** |
| ETH inverse | 932 | **548** |
| **BTC_USDC** | 686 | **5** |
| **ETH_USDC** | 660 | **119** |
-> conteggio corretto come FATTO, **ma l'inferenza che ne ho tratto io ("BTC_USDC e' praticamente
morto") e' SBAGLIATA**: vedi filone 14 — su queste famiglie l'OI e la negoziabilita' sono
**anti-correlati**, e BTC_USDC ha il **93%** dei put quotati a due lati. **Il muro sul BTC resta
per il PREZZO del lotto ($772 su un conto da $635), non per la liquidita'.**
ETH_USDC resta la gamba giusta su cui puntare, ma per **spread e prezzo del lotto** (filone 14),
non per il conteggio di OI.
**Sottoprodotto RITIRATO:** avevo scritto che *"esiste un universo opzioni USDC piu' liquido di
BTC_USDC (SOL 341, XRP 250, HYPE 172, AVAX 146 con OI>=100)"*. **Falso nel senso che serve:** quelle
famiglie hanno piu' posizioni aperte e **meno quote** — SOL_USDC ha il **9%** dei put quotati a due
lati contro il **93%** di BTC_USDC, e il suo miglior bid sta a **un tick**.
- **Il campione misura la strategia mentre STA FERMA**: 0/19 settimane passano il gate IV-rank>0.30,
DVOL alla mediana del 7°/11° percentile storico, sottostante +25%/+44%.
-**Replica indipendente del f del 30/07 su campione piu' lungo: f = 0,714 pooled** (IC95
[0,690, 0,779], **0/19 osservazioni >= 1,0**). Attraversare lo spread costa **~10% del credito**.
- ⚠️ **Correzione a un numero pubblicato:** il forfait fee del sleeve sovrastima il listino vero di
**1,44x (BTC) / 1,80x (ETH)**, non di "~2x". Il segno (conservativo) regge, la taglia no.
- ⚠️ **Rischio sul MINIMO, non sulle chiusure:** peggior mark infra-settimana mediana 6,4% del
rischio, **minimo 91,0%**; fra le settimane chiuse **in utile**, minimo **56,9%**.
- Gate: `implausible_sharpe` **FLAGGED** su entrambi (0 perdite su 10 -> regola del tre: tasso vero
fino al 30%, su un payoff che perde 7,4x il credito); `deflated_sharpe` **non calcolabile** (T=10)
e l'agente **si e' rifiutato di fabbricare una griglia giornaliera al 94% di zeri** per superare
il T>=30; banda d'ancora: canonico all'89° pctl, **mediana onesta 1,45**, banda che include il
negativo. Il titolo annualizzato (32,58) e' stato **deliberatamente non riportato come risultato**.
- ⚠️ L'agente ha **refutato in corsa una propria conclusione**: spostare l'ora d'ingresso cambia
QUALI STRIKE corrispondono al delta obiettivo -> non e' lo stesso trade un'ora dopo, e' **un'altra
struttura**; la media BTC **cambia segno** fra le ancore (1,35% -> +11,22%).
### 7 — TERM-STRUCTURE (r0822_term_structure.py, 312 trial dichiarati)
🚨 **MURO DEL DATO, e vale per ogni filone che usa la catena ereditata: prima del 2026-06-09
`bite_archive` raccoglieva UNA SOLA SCADENZA per giro** (mediana 1, max 1) -> **la curva non
esiste**. La finestra utilizzabile non e' "3,7 mesi": e' **74 giorni**, SE(Sharpe) ~ 2,2.
**Ricostruzione certificata contro due riferimenti indipendenti:** vs il logger `vol_term_*`
corr **0,992-0,997** (scarto 0,00-0,30 pt-vol); vs DVOL corr 0,94 con bias 2,2/2,8 pt-vol = il
segno atteso (DVOL integra lo smile).
- **Il test piu' informativo e' quello di RISOLUZIONE:** l'unica correlazione col futuro che sembrava
qualcosa (h=5g: +0,29/+0,32, 94°/98° pctl vs null a blocchi) **cambia SEGNO togliendo l'ultima
settimana** (0,22/0,17). Sette giorni su 70. Nella regressione controllata per il ritorno
passato il t di Newey-West sta **sotto 1,0 a ogni orizzonte**.
- **Il confronto che uccide il candidato: il buy&hold sulla stessa finestra.** Mediana appaiata su
24 ancore vs B&H = **+0,14 (14/24) su BTC** e **0,65 (1/24) su ETH**. La banda d'ancora
`gate_pass=True` in isolamento e' **inutile: il B&H passa lo stesso gate**.
- Confound proprio del filone, misurato: corr(pendenza, RV **passata**) 0,50/0,57 contro RV
**futura** 0,39/0,38 -> la pendenza e' il premio di vol con la gamba realizzata sostituita da
una implicita = la variabile di `dvol_directional` (gia' HEDGE, earns_slot=False su 5 anni).
- **`deflated_sharpe` NON girato, e la motivazione e' il risultato:** su 74 osservazioni
l'incertezza di CAMPIONE domina di un ordine di grandezza quella da SELEZIONE — deflazionare 312
trial darebbe un numero preciso e privo di senso.
- 📌 **LEAD stretto e pre-registrato** (l'unico numero non banale: corr(pendenza, RV futura) 0,39):
la term structure come previsore di **VOL, non di ritorni**. Decisione **2027-02-01**, si riapre
solo se (a) corr <= 0,30 su entrambi gli asset **E** (b) batte il **DVOL a tenore singolo** in R²
incrementale **E** (c) supera il null del de-levering. **Se (b) fallisce, il filone si chiude.**
- ⚠️ **Tre bug propri catturati in sessione**, tutti del tipo che passa i test pigri: il null del
de-levering cercava il **primo** k salendo invece del **piu' grande**; la RV futura aveva **uno
shift di troppo**; l'ATM vettorializzato e' stato verificato contro il prototipo (23.544/23.545
righe identiche).
### 6 — OI-PIN (r0822_oi_pin.py, 516 trial dichiarati, 73 scadenze/asset)
**Potenza dichiarata PRIMA di guardare** (e questa e' la ragione per cui il verdetto e' credibile):
MDE a hte 12 = **0,46%/trade**; effetto max-pain osservato **+0,273% = SOTTO il proprio MDE**.
📌 **Il null che decide: il placebo senza opzioni.** La cella migliore fa Sharpe 5,59 e batte gli
strike casuali (6/72 contro ~2 attesi), ma **0/24 contro la media a 7 giorni dello spot**, con cui
condivide il **68-77% del segno**. Non e' pinning verso uno strike: e' reversione verso il centro
recente, e l'OI e' solo uno stimatore rumoroso di quel centro.
- DSR **0,290** (288 trial): lo **Sharpe-null atteso e' 6,79 > 5,59 osservato** — su 75 giorni il
massimo del rumore batte il risultato. `implausible_sharpe` scatta. I **5 giorni migliori valgono
il 61% del log-equity**.
- ⚠️ `marginal_vs_tp01` **non puo' dare ADDS per costruzione** su questa finestra: `multicut` vuole
>=2 tagli annuali da >=120g e `has_insample_edge` e' True *per default* perche' non esiste
pre-2025. Un NEUTRAL qui non e' un giudizio.
- Haircut a $600: **+0,000** (si esegue sul perp) — 2ª conferma che l'eseguibilita' non e' piu' il
vincolo binding di questa ondata.
- ⚠️ **REGOLA NUOVA (difetto proprio, trovato e corretto in sessione): un placebo si controlla per
BILANCIAMENTO DEL SEGNO prima di usarlo.** Il placebo `jit` concordava in segno con la propria
regola solo nel **14%** dei casi (5% per `jit_gex`): non era un null, era **la strategia
invertita**, e usarlo fabbricava 3 celle "significative" e un contrasto spettacolare (8,6 di
Sharpe). Un null pulito sta a ~0,50; sotto ~0,35 il suo delta va letto come **~2x il segnale**.
### 8 — VOL-SIZE (r0822_vol_size.py, 28 trial + 23 ancore)
✅ Sanity **bit-exact**: ricomposizione trade-by-trade `max|diff| = 0.0` contro `run_asset` e contro
`sleeves._skyhook_returns()`.
**RITIRATO DALLO SCETTICO (vedi in fondo): il difetto qui sotto NON ESISTE su questo codice.**
Lasciato a verbale perche' la regola era stata pubblicata e va vista insieme alla sua smentita.
~~🚨 **DIFETTO DI METODO GENERALE, trovato dall'agente nella propria prima stesura e MISURATO invece
che cancellato: su uno sleeve a equity a GRADINO, un overlay giornaliero e' NON CAUSALE.** Tutto il
P&L di un trade SKH01 e' contabilizzato il giorno di **CHIUSURA**, fino a **3,83 giorni dopo
l'ingresso**; moltiplicare la serie giornaliera per `L_t` (che usa solo dati <= t1) **passa
qualunque controllo di causalita' scritto sulla serie giornaliera** — il look-ahead sta nella
CONTABILITA', non nella formula. Costo misurato: **+0,04 di Sharpe hold-out fantasma**.
**REGOLA: un overlay si applica alla data d'INGRESSO, non a quella in cui il P&L viene contabilizzato.**~~ **<- RITIRATA, vedi sotto**
🚨 **REGOLA 2 — il null del de-levering e' DEGENERE quando la variante e' una ri-scalatura**
(`sh(k*base) === sh(base)`): il test che serve non e' sul DD ma **ISO-PESO sullo Sharpe**, altrimenti
si sta solo misurando di quanto e' cambiato il peso di uno sleeve. Qui era decisivo: quasi ogni
variante alzava il peso effettivo di SKH fino a 0,375, e **"alzare SKH01" e' gia' stato misurato e
respinto il 26/07**.
📌 **Il meccanismo NON e' quello ipotizzato:** scomponendo la vol trailing di uno sleeve all'88% di
zeri nei due canali, il guadagno FULL viene dalla **FREQUENZA** (il solo filtro di attivita' fa
+0,051 su +0,061) e **non dalla magnitudine** (+0,003). Non e' controllo del rischio: e' un
**filtro di frequenza**, e va chiamato cosi'.
- Baseline del libro, stima onesta (mediana banda): **1,626 FULL / 1,037 HOLD / DD 10,4%** — la
fortuna d'ancora del libro vale **+0,196 FULL / +0,448 HOLD**.
- Cella congelata del LEAD (`VTL tv20 w90`): size fissata **all'ingresso** =
`clip(0,20 / rv90(t1), 0, 3)`. ISO dShFULL **+0,070 (23/23 ancore)**, dShHOLD +0,101 (19/23),
**8/8 anni positivi**, **null di permutazione superato in ENTRAMBE le terne di ancore provate,
p <~ 0,03** (mediana del null 0,03/0,05: riassegnare a caso la stessa distribuzione di size
**danneggia**). ⚠️ **Autocorrezione dell'agente, da rispettare:** quel null gira su **3 ancore
delle 23** per costo, e la TAGLIA dell'effetto varia di **3x** fra due terne diverse della
stessa banda (+0,033 vs +0,111 sulla stessa cella) -> **i p-value non si citano a tre decimali**:
il numero da mettere a verbale e' il **segno**. Il resto del report e' su 23 ancore piene.
- ⚠️ `DSR = 1,000` dichiarato **VACUO, non PASS**: lo passa anche il baseline — su una famiglia di
perturbazioni della stessa strategia il deflated-Sharpe non ha potenza. Onesta' rara.
- ⚠️ Punto piu' fragile, dichiarato: l'asse della finestra e' un **picco, non un plateau**
(w30 nettamente negativo, w180 ~0).
- **Gate pre-registrato — e non e' un forward** (con SE(Sharpe)~1,4 sei mesi non possono misurare
0,07): e' un **secondo trasferimento**, la famiglia IV su SKH01_V1, dove il meccanismo dichiarato
prevede un effetto **minore** (lo stop e' gia' in ATR). **Se invece l'effetto e' uguale, la
spiegazione e' sbagliata anche se il numero regge.** Entro **2026-12-22**, prima di qualunque
modifica a peso/config di SKH01. Deploy solo se ISO dShFULL > 0 in >=20/23 ancore E
`weights_tilt_null` passa. **Book, pesi, cron, config INVARIATI.**
### XSR-REPRO (r0822_xsr_repro.py) — filone di INTEGRITA', non di alpha
**Il numero pubblicato e' spiegato e NON era sbagliato.** 1.82 viene da una **terza** lente
(`r0725_statarb_demean_skeptic.ret_from_pos`, divisore **fisso 50**), non da quella che ha girato i
gate (`basket_from_positions`, divisore variabile). Sullo stato del dato del 25/07 ricostruito:
**11 numeri pubblicati su 12 riprodotti** (Sharpe netta 1.8164, lorda 2.6956, DD 2.585%, lag
1.82/1.19/0.81/0.50, Sharpe 2024 1.0297 / 2025 1.9752 / 2026 3.1078).
📌 **Ma il numero di TITOLO e i numeri di GATE non sono mai stati la stessa serie:** la lente dei
gate da' **1.79** — ed e' esattamente il "Sharpe 1.79" che il docstring dello scettico gia' citava.
DSR ri-calcolato oggi sulla lente giusta: **0.983 PASS** (pubblicato 0.985) -> **il gate DSR regge**.
**L'ipotesi "il cron riscrive la storia" e' FALSIFICATA** da due prove indipendenti: (a) il
registro del cron su 54 simboli, 25/07 vs 22/08, mostra crescita di **esattamente 28 barre per
tutti** con `start_reale` invariato; (b) lo Sharpe degli **anni chiusi** si riproduce **al quarto
decimale** attraverso quattro settimane di riscritture. **Cambia una sola barra: l'ultima.**
🚨 **IL DIFETTO CHE CONTA — `paper_xsr` registra ~41 minuti di mercato al giorno.**
`fetch_hyperliquid` gira alle 00:30 con `END = oggi` e scrive la barra del **giorno in corso**;
`advance()` processa le barre con `ts > last_ts` e **porta `last_ts` su quella parziale** -> le 23
ore e mezza restanti di **ogni** giorno non entrano in nessun rendimento registrato.
**Misurato** (28 barre appaiate contro il replay): **1/28 identiche · corr 0,045 · vol registrata
0,46% contro 2,74% ricalcolata** (la strategia e' progettata a 2,3%). Rapporto di varianza 0,0286
-> ~41 min/giorno; stima indipendente dal volume: ~69 min.
**Verifica del coordinatore, indipendente:** l'ultima barra di `hl_btc_1d` ha volume **1.274**
contro **66.926** e **102.198** dei due giorni precedenti.
⚠️ **`monitor_health` lo dichiara OK e non puo' vederlo:** la serie e' fresca e senza buchi.
**Una serie fresca, completa e SBAGLIATA passa ogni controllo di freschezza.**
⚠️ Stessa **forma** di codice in `paper_statarb` (gate 27/09), che per giunta ha un docstring
"barre 1d chiuse" mentre consuma `altlib.get(...,"1d") -> resample_tf`, che **non** scarta il giorno
in corso. Segnalato come forma, non misurato -> **audit dedicato in corso su tutti e 6 i monitor**.
⚠️ **Haircut, la seconda gamba del gate 23/10, e' piu' fragile della prima:** ticket per gamba
**mediano $3,33 / medio $5,98**, **63% degli ordini sotto $5**; il pubblicato **$14,41 non ha alcuno
script committato che lo riproduca** ed e' **~2,4x ottimista**. A min-order $10 la guardia
formalmente passa ma si esegue **un ordine su cinque** — e il criterio pre-registrato non lo guarda.
📌 **NUMERO ONESTO DA CITARE:** lente dei gate, sole barre chiuse -> **1.79** (finestra di scoperta)
/ **1.63** (a oggi). **Va sempre citata la coppia (lente, ultima barra chiusa)**, mai il numero nudo.
📌 **GATE 23/10 COMPROMESSO: PARZIALMENTE** — ammissione NO (storia chiusa stabile, DSR regge),
**forward SI** (metrica primaria su una serie scorrelata dalla realta'), haircut SI (parametro senza
script e ~2,4x ottimista). **La finestra forward non e' recuperabile a posteriori**; riparare
`advance()` la **azzera**. Scelta fra gate letto su strumento rotto e gate rimandato con contatore
nuovo: **va decisa PRIMA del 23/10, non quel giorno.**
### 5 — SKEW (r0822_skew.py, 37 trial dichiarati)
- **Q1 (skew come segnale direzionale): SCARTATO, e non per mancanza di potenza — la potenza c'e' e
falsifica.** Il **prezzo precede lo skew** con t da **3,13 a 9,39 su 8/8 test** e su entrambi gli
asset; in avanti il max |t| su 16 test e' **2,35** contro **2,08** atteso dal rumore, e non replica
sul secondo asset. L'unica cella con lead apparente crolla togliendo **4 giorni di rally su 24**.
DSR **0,163 FAIL**; IC95 block-bootstrap sullo Sharpe: **[2,90, +5,86]** (ampiezza 8,76).
- **Q2 (skew come gate di de-risk): SCARTATO (non misurabile)** — nella finestra TP01 e' attivo
**5 giorni su 75** con maxDD **0,14%**: non c'e' sinistro. Unica cosa leggibile: **5ª firma di
ridondanza col trend** (il gate spegne 16 giorni in cui TP01 era gia' flat, **16/16**).
- 📌 **Q3 — LEAD, ed e' il risultato della sessione. Il f=0,73 di VRP01 scomposto** (attribuzione
esatta in log, i fattori si sommano):
| causa | fattore | quota del difetto |
|---|---|---|
| **struttura a termine** | x0,869 | **42,3%** |
| spread denaro-lettera | x0,904 | 30,5% |
| **skew** | x0,920 | **25,0%** |
| fit (controllo) | x0,992 | 2,3% |
**La riga che conta: 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 7 giorni -> sovrapprezza **ENTRAMBE** le gambe.
Il "+0,8pp sulla gamba corta" pubblicato il 30/07 — che faceva sembrare **corretta** la gamba
venduta — e' la **cancellazione di due errori da ~3pp** (2,97 di termine, +2,79 di skew).
⚠️ **E il progetto aveva gia' codificato la regola il 03/07** ("riprezzare term-structure-consistent
prima di credere a un numero da struttura BS-flat") **e non l'ha applicata alla misura del 30/07**.
📌 **Verso, e non e' quello che sembra:** `f_term` passa da **0,83** (IV-rank basso) a **0,93**
(alto) e supera **1,0 in backwardation**, mentre `f_skew` resta piatto (0,91-0,93) -> **la parte
maggiore del difetto si annulla proprio dove il gate IV-rank fa tradare il sleeve**, quindi
f=0,73 e' plausibilmente **CONSERVATIVO li'**. Non misurato: **0/22** ingressi passano il gate, e
l'unico episodio ad alta vol del campione e' un **rally**, non un crash. In un crash i due pezzi
vanno in **direzioni contrarie** e il netto e' ignoto. **`VRP_CFG["f"]` NON cambiato.**
Gate pre-registrato: rimisurare a **>=6 ingressi settimanali per asset con IV-rank>0,30**
(il collettore li accumula da solo), revisione comunque **2027-02-22**.
- ✅ Confound di modello **ESCLUSO e misurato**: `f_markfit` = **0,992** (la mark IV di Deribit
riprezza i propri mid entro l'1%) -> RR/BF sono un fatto di **prezzo**, non l'output del fit.
-**Controllo positivo cablato nello script:** con l'ancora **assunta** a :30 invece del `ts_max`
osservato compare un **falso lead** a +15m (0,102 contro 0,031) — *"e' l'errore che avrei
pubblicato senza quel controllo"*.
- ✅ Smile vettorizzato (512s -> 2,0s) verificato **bit-exact** contro il ciclo lento su 21.244 celle.
-**Convergenza indipendente** con l'agente TERM-STRUCTURE: **75 giorni utili** (l'altro trovava 74).
### HL-EXEC (r0822_hl_exec.py, 132 simulazioni, 0 celle di segnale = 0 selezione)
✅ Identita' con la produzione **prima** di ogni delta: `sim_libro` == `paper_xsr._step` a
**max|diff| 5,4e-20**; XS01 == `_xsec_returns()` a **max|diff| 0,0**.
**Verifica MAINNET** (il progetto e' nato da un feed testnet): 51/51 asset, deviazione mediana
2,21% su feed vecchio 17h contro un movimento tipico del 2,81%; cross-check su terzo venue
BTC Deribit $77.997 vs HL $77.339 = 0,84%.
**Parametri assunti -> misurati:** min order **$5 -> $10** (docs + **3.827 livelli a un ordine:
minimo $10,63, p01 $12,02, 0,0% sotto $10**); taker **5,0 -> 4,50 bps** (due fonti indipendenti
coincidono); slippage **non modellato -> 1/2 spread 0,7 bps (19 major) / 1,0 bps (coda), max 4,5**;
tier VIP: a $600-20k **sempre tier base**.
📌 **XS01: la soglia dei $20k non esiste.** Origine del numero pubblicato: *"rumore di
arrotondamento"*, stima a occhio del diario 19/06. Misurato: haircut ~0 gia' a **$200-600 allocati**;
a $600 lo Sharpe passa **1,33 -> 1,30**. **E il meccanismo spiega perche':** gli ordini sono **due
popolazioni** — il ribilanciamento del segnale (ogni 10g) e' il **13% degli ordini ma il 75% del
nozionale**, ticket mediano $13,65 -> passa sempre; la deriva del vol-target giornaliera e' l'**87%
degli ordini ma il 25% del nozionale**, ticket $0,64 -> il pavimento la taglia, **ed e' gratis**.
*Contare gli ORDINI da' 16% e sembra un disastro; contare il NOZIONALE da' 75% e spiega perche' lo
Sharpe non si muove.* (Convergenza indipendente con XS-LITE, che era arrivato allo stesso meccanismo
con numeri diversi.)
**Fortuna di fase girata anche qui** (l'haircut e' un Δ): 10 fasi, mediana delle differenze
appaiate **+0,007**, banda [0,060, +0,061], **0/10 fasi con danno > 0,10**.
📌 **XSR01: soglia vera ~$3.000** (non $5.000 — sbagliata nella direzione **sicura**). Banda sui
pavimenti $8/$10/$12: ROTTO <=$1.000, INDECIDIBILE $1.500-2.000, **ok >=$3.000**.
📌 **Slippage refutato come rischio #1** al livello di liquidita' odierno: lo Sharpe scende sotto
1,0 a ~20 bps/gamba = **~16 bps di slippage = 21x quello misurato**. ⚠️ L'agente dichiara il limite:
3 snapshot = **172 secondi di oggi**, una fotografia, non tre osservazioni. **E' il MARGINE (21x) che
regge la conclusione, non il livello.**
🚨 **Due conseguenze che l'operatore deve vedere:**
1. **Il "$20k" di XS01 e il "$20k" della DECISIONE DI VENUE (26/07) sono due cose diverse che
CLAUDE.md ha conflato.** Quello di XS01 **cade**; **quello di venue REGGE intatto** — e' una
decisione dell'operatore su un altro asse (la rovina da fallimento exchange), non sull'eseguibilita'.
XS01 resta fuori dal live **per la decisione di venue, non per taglia**.
2. **La gamba di eseguibilita' del gate 2026-10-23 e' tarata su un vincolo che a $5.000 non morde**
(haircut li' 7%...+2%): *una condizione pre-registrata che non puo' fallire non e' una
condizione*. L'agente **non ha anticipato il gate**: la soglia Sharpe>=1,0 resta al 23/10.
⚠️ **Terza spiegazione dell'1,82, complementare alle altre due:** `r0725_statarb_basket_gate`
addebita *"2 gambe per coppia"* = 50 alt + **50 gambe BTC fantasma**, ma il demeaning **annulla
algebricamente** la gamba BTC (`sum(w)=0`) — che e' la ragione stessa per cui XSR01 esiste.
*L'intuizione del demeaning era stata applicata all'AMPIEZZA e non ai COSTI.*
📌 **Quadro conciliato delle tre lenti** (i due agenti concordano sul fatto, non sull'attribuzione
del singolo decimale): titolo `demean_skeptic` **1,82** · gate `basket_gate` **1,75-1,79** (fee
raddoppiate su una gamba inesistente) · monitor `paper_xsr` **2,21**. **La lente che ha girato i
gate e' quella PESSIMISTICA** -> il **DSR 0,983 PASS e' stato calcolato su una serie conservativa**.
### SLIP-AUDIT (r0822_slip_audit.py, 18 fill reali, ~14 varianti dichiarate)
**Fee sul NASTRO: 5,00 bps/lato prima del 2026-08-01, 3,50 dopo (16/16 esatti).** Il taglio
Deribit e' visibile nei fill reali -> conferma **indipendente** di `fee_watch` (che legge il tier
dichiarato, non le esecuzioni) e della regola pre-registrata del 26/07 (<=5 bps -> non si tocca
nulla). **Il listino si e' mosso nel verso buono.**
- Slippage d'esecuzione (riferimento 5m): mediana **4,65 bps**, IC95 [34,6; +20,6]; statistica
normalizzata **+1,54 bps** [1,30; +4,47]. Conversione con la curva pubblicata: **dSharpe 0,026 /
dCAGR 0,35 pp**.
- ⚠️ **Autocorrezione della propria potenza:** il null **empirico** e' **1,43x piu' largo**
dell'uniforme assunto -> MDE vera **7,2 bps**, non 5,0. **Con n=18 nessuna via statistica risolve
1,5 bps** — dichiarato invece di spacciare l'IC per una risposta.
📌 **Esperimento naturale, il caso peggiore del campione:** il fill del **sabato 18/07** (ETH $74) e'
stato il **21,9% del volume della sua barra 5m**, e quella barra ha avuto un range di **1,08 bps**,
col nostro print a meta' (q=0,48). *Un ordine che prende un quinto del nastro e lascia il prezzo
entro 1 bps* e' la prova diretta che a questa taglia il libro **non cammina il book**.
🚨 **La misura ha una DATA DI SCADENZA, e va scritta accanto al numero:** la partecipazione scala
lineare -> quel 22% diventa **172% di una barra 5m a $5.000** e **687% a $20.000**. **Non si
estrapola: va rifatta a ogni salto di taglia.** E' il muro di eseguibilita' gia' noto ma sull'asse
dell'**attrito** invece che del min-order. ⚠️ E il caso peggiore cade di **sabato**, dove TP01 fa il
**38%** del proprio gross.
⚠️ **Due difetti del dato, trovati PRIMA di misurare (e ciascuno avrebbe prodotto un numero
plausibile e falso):**
(a) `ts_utc` in `book_executions.jsonl` **non e' l'ora del fill** ma l'etichetta dell'ultima barra
del feed (**18/18 dicono `00:00:00`**; il fill #1 e' etichettato 08/07 ed e' stato eseguito il
**14/07** = impronta del feed-freeze gia' noto). L'ora vera esiste **solo** in `logs/cron_book.log`:
senza recuperarla, ogni confronto "al prezzo dell'ora del fill" misurerebbe **la mezzanotte**.
(b) Il feed certificato e' il perpetual **INVERSE**, il libro trada il **LINEARE USDC** — **4ª
occorrenza** dello schema `fee_watch`: misurare lo slippage sul feed certificato avrebbe misurato
**la base**, non lo slippage (base misurata: BTC 0,03 bps, ETH 0,27).
⚠️ Con n=18 **la media in bps e' inservibile** — un solo giorno (19/08, ETH +14% in 6h) la ribalta:
si cita la **mediana**. E `REF-A` (50 bps) **non e' slippage**: e' la differenza di FASE fra l'ora
del cron e la chiusura giornaliera, gia' misurata bene il 26/07 su 24 ancore appaiate.
### SCETTICO su GROWTH-POLICY (r0822_leverage_skeptic.py, ~175 celle, griglia ridotta a k<=5x e dichiarato)
**Replica superata TRE volte** prima di ogni numero nuovo: marginali del gap 25/07 (p50 0,16 /
p90 1,03 / p99 2,71 contro 0,17 / 1,03 / 2,70), meccanismo del decile (~3x, pubblicato ~3x),
e €500/mese -> **14,7a / P<=20a 99%** al numero pubblicato.
**Controllo positivo superato:** una lente *indipendente* (gap rimescolato) sovrastima il maxDD di
+0,13pp su +0,45 e i breach daily-loss di **1,5-2,4x** — stesso verso e taglia del finding 25/07
("2,0-2,9x"). **La macchineria ha potenza, quindi il suo "nessuna differenza" vale.**
✅ Risoluzione MC dichiarata: **0,01%/a** nella regione eseguibile, 0,05pp sul Δ appaiato di maxDD ->
le differenze riportate (0,45-0,76pp) sono **9-15x la risoluzione**.
📌 **RISPOSTA ALLA DOMANDA: NO, l'effetto e' SOTTO-proporzionale.** Il rapporto fra le due maxDD e'
**piatto a 1,025-1,037** su tutta la griglia e Δ/k **cala** (0,478% -> 0,217%). **Meccanismo: il
maxDD e' una statistica MULTI-GIORNO, il wick e' un fatto di UN giorno.** Tempo al bersaglio
**identico** fra le due lenti; guadagno appaiato 1,00x->1,50x = **2,88 anni** in entrambe.
Nessuna liquidazione a nessun k<=5x sotto nessuna lente (servirebbe **12,3x** sul peggior giorno vissuto).
🚨 **IL RISULTATO TRASFERIBILE — la lezione del 25/07 e' vera e NON si trasferisce.** Su una regola a
**UN giorno** l'accoppiamento cambia tutto: a soglia daily-loss 5% e k=1,00-1,25 close-only conta
**0,00 breach/anno** dove il vero ne conta **0,40 e 1,21** (`acc./close = INF`, cecita' esatta); a
soglia 3% e k=1, **0,40 contro 2,28 = 5,7x**. Su una statistica **multi-giorno** lo stesso difetto
vale **3,5%**. ⚠️ **Non assolve close-only in generale: sul canale PROP/FUNDED, dove il vincolo
binding E' una regola di daily-loss per-conto, la lente accoppiata resta OBBLIGATORIA.**
⚠️ **CORREZIONE a una spiegazione pubblicata (il fatto regge, la spiegazione no):** il **26,8%** di
giorni con `m == R` **non** sono "il giorno brutto che chiude sul minimo" — stanno nei decili
**CENTRALI** (56-88%), i giorni in cui il libro e' **flat**. Nel decile peggiore chiude sul minimo
il **4%**. E un giorno di crash **chiude quasi sul proprio minimo** (gap medio nel 5% peggiore
0,62% contro 1,75% nel 5% migliore) -> **la lente accoppiata non peggiora lo stress di coda.**
📌 **Il gradino 1,00->1,50 resta NON AUTORIZZATO** — cade **una** delle tre riserve, non le tre.
Restano: drift stimato su 7,4 anni, e coda assente dal dataset (un giorno 10%/anno porta k* a 2x).
Unica colonna a favore della prudenza: **P(sfondare una soglia FISSA) e' amplificata piu' del maxDD**
(1,26x a k=1) perche' vicino alla soglia la densita' e' fitta — **e' quella la colonna con cui si
costruisce una frontiera iso-rischio, non il maxDD mediano**.
📌 **ATTACCO 2 — il 12,14% di TP01 e' VERO, ma il meccanismo dichiarato e' META', e la strada
implicita e' REFUTATA.** Scomposizione esatta, verificata sullo sleeve di **produzione**:
`20,00% x 0,682 (dentro la gamba) x 0,890 (diversificazione BTC/ETH, corr 0,59) = 12,14%`.
E il x0,682 sono **due meta' quasi uguali**: flat nel **44,3%** delle barre (x0,746) **e** convinzione
**parziale** quando non e' flat (`tsmom_blend` = media di 3 segni: 1/3 o 2/3) (x0,789).
**"TP01 e' long-flat" spiega circa META'** — e la differenza non e' accademica: essendo
*convinzione*, **alzare `target_vol` aumenta la size proprio nei giorni in cui il segnale e' piu'
debole**. Il terzo fattore (x0,89) **non e' un difetto d'etichetta: e' diversificazione**, ed e'
cio' che si vuole.
⚠️ **E TP01 e' un caso particolare, non la regola: XS01 dichiara lo stesso 20% e ne realizza 20,59%.**
🚨 **`target_vol` e `k` NON sono la stessa leva** (e non per il leverage cap, che non morde: 0-1% di
barre al cap fino a tv=60%): **`target_vol` scala il 75% del libro e lascia fermo il 25%** -> a
tv=30% il libro non e' piu' 75/25 ma **82/18**, a 60% **90/10**. E' simultaneamente una leva **e un
tilt di pesi**, e il tilt **FALLISCE `weights_tilt_null`** (gate_pass=False, delta_insample 0,0815
a tv=30% / 0,2187 a tv=60%). A pari scala 1,50 il libro via `target_vol` fa Sharpe **1,72** contro
**1,82** via k. -> **la strada pulita per un puro cambio di SCALA e' il cap di config, non il target_vol.**
**Cosa cambia dei numeri pubblicati: NIENTE di misurato** — ogni Sharpe/maxDD/muro/traiettoria e'
calcolato sulla **serie realizzata**; `target_vol` non compare in nessuna formula di rischio a valle.
**Ipotesi dell'agente refutata dal suo stesso numero:** i contributi di rischio sono **73/27**
contro pesi 75/25. **Cio' che resta:** sbaglia chi legge l'**etichetta**, non chi legge i **pesi**
un lettore che prendesse "20%" per buono attribuirebbe a TP01 l'**89%** del rischio invece del
**73%**, cioe' sbaglierebbe di 16 punti proprio la domanda *"quale gamba mi fa male"*.
📌 Il test di guardia `test_leva_massima_da_config_resta_sotto_o_uguale_a_1x` **non protegge "la leva
e' pericolosa"**: protegge la conclusione del 26/07 secondo cui la **liquidation fee 1% di Deribit e'
irrilevante**, che vale interamente perche' a <=1x servirebbe un movimento avverso ~100%. Chi alza il
cap deve **rifare `r0726_fee_sensitivity`**, non aggirare l'assert.
### 13 — BASIS-CALENDAR (r0822_basis_calendar.py, 108 celle dichiarate)
**HA COSTRUITO UN DATASET CHE IL PROGETTO NON AVEVA, e contiene la coda che mancava a CC01.**
Deribit **purga** le liste di strumenti scaduti (`get_instruments?expired=true` ritorna **1** solo
strumento) -> la via ovvia e' chiusa. Ma i nomi dei trimestrali sono deterministici (ultimo venerdi'
di MAR/GIU/SET/DIC 08:00 UTC) e **`get_tradingview_chart_data` serve la storia completa di un
contratto SCADUTO se il nome lo si costruisce a mano**: **30/30 trimestrali 2019Q1-2026Q2 rispondono
ok**. Risultato: **BTC 34 contratti / 240.150 barre orarie (2018-09 -> oggi), ETH 34 / 233.334**,
piu' **64.110 ore** di funding e indice per asset. **Include il deleveraging 2022** — esattamente la
coda che a CC01 mancava per costruzione.
Certificato: barre flat 0,7-1,0% per dte<180g; convergenza a scadenza |ln(F/indice)| mediana 33-47
bps; **cross-check indipendente col forward implicito nella catena opzioni: mediana 0,6 bps**.
Roll gestito **in spazio contratto** (nessuna serie incollata -> nessun salto sul giunto).
📌 **Il risultato: il premio a termine e' REALE ma e' il PREZZO DELLA COPERTURA, non un edge.**
Basis BTC mediana **+6,33%/anno**, contango **84,9% del tempo**, slope positiva 97,4%. Ma implicito
**+7,33%/anno** contro funding realizzato sulle finestre appaiate **+6,48%** -> premio incassabile
**+0,85%/anno, IC95 [1,00, +2,92] che CONTIENE LO ZERO** (ETH +2,55%). A 60-100 giorni (il bucket
meno rumoroso) **+0,30% BTC / +1,70% ETH** contro **~1,4%/anno di costo d'esecuzione**.
**Quindi i futures datati NON sono un quarto lato della domanda funding: sono lo stesso lato quotato
diversamente**, e il filone funding resta chiuso su tre lati senza che ne esista un quarto.
📌 **E questo filone NON e' CC01, misurato:** `implausible_sharpe` **False** — barre in perdita
**49,9%**, maxDD 18,2% -> **la coda e' PRESENTE**. *Li' il rischio era fuori dal campione; qui e'
dentro e l'edge semplicemente non c'e'.* Distinzione che il gate del 26/07 e' stato scritto per fare.
- Cella scelta **in-sample-only**: Sharpe +0,13 / hold 2,44. Distribuzione dei 108 Sharpe: mediana
**5,19**. Con 7,4 anni e vol 4,9% la **SE del rendimento annuo e' 1,79pp: sotto ~3,6pp/anno nulla
e' distinguibile da zero.** Null de-levering **REFUTED** (TP01 a k=0,05 fa DD 0,75% con Sharpe 1,31).
- **Test decisivo del filone:** ritardo d'esecuzione 1h/2h/24h -> Sharpe 0,13/0,13/0,10 -> **non e'
microstruttura da prezzo stantio; non c'e' edge da falsificare.**
- ⚠️ **3ª volta in questa ondata che l'eseguibilita' NON e' il vincolo:** lotti minimi $10 BTC
inverse / **$7,73 BTC USDC** / $1 ETH / $2,42 ETH USDC; servono 4,1x per gamba (~$148 di margine
iniziale a $600).
- ⚠️ **Limite dichiarato e NON appianato:** le due lenti sul premio (hold-to-expiry vs backtest
rollato) **discordano nel SEGNO** restando entro ~1,5 SE l'una dall'altra e dallo zero. *Non si
puo' stabilire il segno di una grandezza da ~1%/anno con 7 anni di dati a vol 5%* — ed e' proprio
questo che rende il filone non deployabile.
- **Riaprirebbe il filone:** il premio a 60-100 giorni **stabilmente sopra ~4%/anno** (2 SE sopra
zero E sopra il costo), cioe' un regime in cui basis e funding **si scollano** (marzo 2020, giugno
2022 — ma per giorni, non per trimestri).
⚠️ **Tre errori propri catturati prima di pubblicare:** (a) il `volume` di
`get_tradingview_chart_data` e' in **valuta base, non USD** -> la prima stesura sbagliava la
liquidita' di ~5 ordini di grandezza; (b) il primo test d'ancora azzerava i *rendimenti* fuori
dall'ora scelta = **un'altra strategia, non un'ancora**; (c) **un gate che stampa `None` va
verificato prima di dichiararlo "non girato"** — stampava le chiavi sbagliate.
✅ Disciplina di rete rispettata: <=2 req/s e **sospensione automatica nella finestra :25-:29** di
`cron_chain` (verificato: si e' sospeso da solo per 264s).
### SCETTICO su VOL-SIZE (r0822_volsize_skeptic.py, 43 valutazioni x 23 ancore)
✅ Replica **bit-exact** prima di ogni attacco: gamba 50/50 vs `sleeves._skyhook_returns()`
**max|diff| = 0,0**; e il titolo riprodotto **esattamente** (+0,070 ISO dShFULL 23/23, +0,101 HOLD).
🚨 **RITIRA UNA REGOLA PUBBLICATA POCHE ORE PRIMA — il difetto di contabilita' NON ESISTE.**
`backtest_signals` fa `equity[i_ent:i_ex+1] = capital`: il P&L e' contabilizzato al giorno
d'**INGRESSO** in **291/293 (99,3%)** dei trade multi-giorno, all'uscita in **4**. Troncando i dati
alla barra d'ingresso e ricalcolando le size da zero: **50/50 identiche, max|diff| = 0,0**. E la
"riparazione" e' un **no-op bit-exact** (max|diff| 6,7e-16, Sharpe identico a 4 decimali).
**Il "+0,04 fantasma" era interamente `[L sulla gamba COMBINATA] [L PER ASSET]`** — due varianti
entrambe causali — **e la variante scartata come "non causale" era la MIGLIORE sull'hold-out
(+0,039)**. *Il costo di una regola derivata da un difetto inesistente e' gia' stato pagato.*
📌 **REGOLA CORRETTA (piu' debole e vera):** *"applicare un overlay alla data d'ingresso"* resta un
buon consiglio **generale**, ma su questo motore le due date **coincidono** — e va verificato con un
troncamento bit-exact **prima** di scartare un ramo, non dedotto dalla forma dell'equity.
🚨 **IL GATE PRE-REGISTRATO AL 22/12/2026 E' GIA' FALLITO OGGI, e nel modo piu' netto.** L'agente
aveva scritto: *"se l'effetto e' UGUALE su V1, la spiegazione e' sbagliata anche se il numero
regge"*. Misurato: |effetto| mediano di famiglia **V1 0,067 contro V2-DD 0,032** — l'inverse-vol
funziona **il DOPPIO dove lo stop e' gia' in ATR**, cioe' esattamente al contrario della previsione,
in **8 celle su 8** con **23/23 ancore positive**. E il test **ha potenza** (su V2-DD la famiglia
arriva a +0,067, quanto il LEAD).
📌 **La spiegazione avversaria e' CONFERMATA e la sua forma minima e' un binario.** `BIN L>=med`
(size **0/1** alla mediana espandente, nessuna magnitudine, 194/406 trade scartati) vale
**+0,080 FULL (20/23) = 115% del LEAD**. Controllo di segno superato: il binario **INVERSO** fa
**0,159 (0/23)**. Canali: **FREQUENZA +0,051 (23/23)** contro **MAGNITUDINE +0,003 (17/23)**.
I trade tenuti hanno net medio **2,03% contro 0,36%** degli scartati.
**Un attacco dello scettico e' FALLITO, e lo dichiara:** l'asse della finestra **non e' un picco**
— l'argmax in-sample-only cade su **w=90 = la cella pubblicata**, corr(IS, HOLD) fra le 9 finestre
**+0,63**, plateau da 45 a 270. Sotto w=45 la finestra contiene **1-3 barre attive** (colonna
misurata) e il segno si rovescia: non e' fragilita', e' campione vuoto.
**-> quindi anche la mia nota "picco, non plateau" nel filone 8 va letta come SUPERATA.**
Stima onesta se `w` e' scelto (mediana di famiglia): **+0,025 FULL**.
📌 **CONSEGUENZA:** il LEAD non ha piu' una condizione aperta da attendere — la sua gamba
esplicativa e' chiusa oggi. Se qualcuno vorra' portarlo avanti, **il candidato giusto non e' la
formula ma il binario**: meno gradi di liberta', **dimezza gli ordini** (migliora l'eseguibilita' a
$635), 115% sul FULL — ma paga in fragilita' d'ancora (20/23 contro 23/23, banda che include 0,061,
hold-out +0,072 contro +0,101). **Resta un terzo della fortuna d'ancora del libro stesso (+0,196):
niente qui giustifica di toccare pesi, cron o config.**
### MONITOR-AUDIT (r0822_monitor_audit.py) — audit di PRODUZIONE, 6 monitor, 4,7 s
**Metodo che rende il risultato non contestabile:** l'audit **riesegue `advance()` di produzione
tale e quale**, sostituendo solo `_append` con un raccoglitore in memoria -> nessuna
reimplementazione, quindi **nessun drift fra audit e monitor**. Sola lettura verificata (gli mtime
di `data/paper_*` sono rimasti quelli del cron delle 00:35).
| monitor | barra parziale | barre coincidenti | corr | **min/giorno misurati** | gate | ricostruibile |
|---|---|---|---|---|---|---|
| `paper_statarb` | **SI'** | **0/46** | +0,297 | **4** | **STATARB 27/09** | **SI', bit-exact** |
| `paper_dvolspread` | **SI'** | 0/28 | +0,262 | **2** | DVOLSPREAD 24/10 | SI', bit-exact |
| `paper_xsr` | **SI'** | 1/28 | 0,045 | **41** | XSR01 23/10 | SI', bit-exact |
| `paper_portfolio` | **SI'** | 7/56 | +0,245 | 19 | — (dashboard) | si', non al bit |
| `paper_prevday` | si' (1 barra su 24) | **1259/1319** | **+0,997** | 1.438 | — | si', bit-exact |
| `paper_combo` | **NO** | 7/37 | +0,991 | 1.402 | — | si', non al bit |
📌 **La patologia e' la stessa, la TAGLIA varia di un fattore 20** — e dipende da quanto pesa la
barra piu' recente nel segnale, esattamente come la lezione del 26/07 su SKH01 contro TP01.
🚨 **Il gate STATARB del 27/09 si ribalta su DUE criteri su tre:** Sharpe registrato **+1,96** (sopra
la soglia 0,5) contro **2,02** ricostruito; maxDD **2,2% contro 15,3%** (guardia <10%). *Fra 36
giorni si sarebbe deciso su una serie che misura 4 minuti di mercato al giorno.*
⚠️ XSR01 e DVOLSPREAD danno lo **stesso verdetto** oggi, ma su numeri implausibili (Sharpe 15,8 su
28 barre = oltre 4 SE). **`implausible_sharpe` esiste dal 26/07 e non e' mai stato puntato sulle
serie forward.**
**LA BUONA NOTIZIA, ed e' misurata: la finestra forward NON va persa.** Il replay *e'* la serie
corretta sulla stessa finestra, con config congelata e codice di produzione. Le due condizioni sono
**provate due volte in modo indipendente**: (a) `paper_prevday` ha **1427/1488 barre identiche al
bit** dopo 62 notti di riscrittura (il feed **non tocca** le barre chiuse); (b) le 6 barre di
`paper_statarb` recuperate dopo un guasto coincidono **al bit**.
-> **La decisione non e' "riparare e azzerare" ma "riparare `advance()` + RIGENERARE", e nessuna
delle tre date di gate si sposta.** Anche nell'ipotesi pessimista (`--reset`) l'unico gate che
slitterebbe e' STATARB, di **+18 giorni**.
📌 **Dettaglio che vale una regola: le uniche barre corrette di `paper_statarb` esistono perche' il
feed si e' ROTTO.** `rebuild_history` e' abortito per 7 giri consecutivi (09-15/07, EPERM sul
backup, gia' riparato); al ripristino il monitor ha recuperato 7 barre in un colpo, **6 delle quali
gia' chiuse** -> coincidono col replay al bit. *Il guasto ha prodotto da solo il controllo che
serviva a diagnosticare l'altro guasto.*
📌 **`paper_combo` e' sano PER CASO:** aspetta la chiusura di una **borsa**, non per progetto.
Nessuna riga di codice chiede la barra chiusa — **se la sua griglia cambiasse diventerebbe rotto in
silenzio.**
**Guardia raccomandata (NON implementata), e ha il pregio di essere banale:**
`ts_ultima_barra + cadenza <= mtime del file di serie`, grazia 5 min. **O(1)**, nessuna strategia da
rieseguire, usa solo cio' che il monitor gia' scrive; segnala **5/6** e **tace sul sano**; controllo
positivo sintetico **6/6 nei due versi**. Il vol-ratio va **dopo, non al posto**: copre un guasto
diverso (drift monitor-strategia) e **non vede `paper_prevday`** (rapporto 0,999).
⚠️ Limiti dichiarati: i "minuti/giorno" sono una lettura del **rapporto di varianza** (assume random
walk sull'intervallo troncato), non un cronometro — il cronometro diretto e' 32-35 min; e per
`paper_portfolio`/`paper_combo` la ricostruzione **non sara' al bit** perche' la gamba GTAA legge
`ADJUSTED_LAST` di IB, ri-aggiustato all'indietro.
### 1 — PROP-ALLOC (r0822_prop_alloc.py, ~3.300 valutazioni MC di cui **360 di selezione**)
**Previsione REGISTRATA PRIMA e confermata:** dal conto del gambler's ruin, alla leva minima che
porta a +T dentro l'orizzonte resta `theta ~ 2*Sharpe^2/T` -> **la vol sparisce e l'argmax sui PESI
deve coincidere con l'argmax di Sharpe**; il contenuto vero sta nella **LEVA**, che lo Sharpe non
determina. Misurato: **e' cosi'**.
| | pesi TP/SKH/XS | leva | **J** | P(pass) | P(vivo 12m) | E[pay/anno] |
|---|---|---|---|---|---|---|
| argmax **J** | 25/25/50 | 0,75 | **0,738** | 82,2% | 89,8% | $8.556 |
| argmax **Sharpe** | 38/25/38 | 0,75 | 0,721 | 77,3% | 93,3% | $7.796 |
| **libro LIVE 75/25** | 75/25/0 | 0,50 | **0,335** | 38,6% | 86,8% | $4.109 |
Differenze **appaiate**: argmaxJ argmaxSharpe **+0,0164 ± 0,0066**; argmaxJ LIVE **+0,3996 ±
0,0114**. **-> Riallocare per la barriera vale il 4% di cio' che vale diversificare.**
**Replica di controllo superata:** la politica MISTO del 25/07, stessa macchina, de-luck 0,60 ->
P(>=50/g) **4,1%** / P(zero) **53,7%** contro il pubblicato 5,6-6,5% / 52%.
📌 **Null dei tilt casuali — e il risultato e' che il PUNTO non conta:** argmax al 98,5° pctl contro
firma best-of-45 di 97,8° = **indistinguibili**, e **il massimo di 200 pesi casuali (0,739) EGUAGLIA
l'argmax (0,738)**. *Conta stare nella regione diversificata, non il vettore.*
📌 **La leva alta non compra probabilita', compra fretta:** J massimo a **0,75x**, E[payout] massimo
a **1,00x**; P(pass) senza limite di tempo e' **monotona decrescente** (98,9% a 0,50x -> 65,9% a
1,50x). E **la barriera piu' larga sposta l'ottimo verso l'alto: il vincolo e' la regola di DD, non
il libro.**
📌 **Il 75/25 del libro live NON e' la ripartizione giusta per un conto a barriera**, e non e'
artefatto di finestra: sul campione **2019+ che contiene il 2022** l'ottimo della coppia crypto e'
**38/62 @0,50x** (J 0,521 contro 0,443) — stesso verso del 2024+.
🚨 **LA BANDA, non il numero.** P(>=50/g) da €600 in 36 mesi con la scala di conti:
**42% al drift pieno · 7,7% allo stress moderato (SKH ×0,50, XS ×0,50) · 0,7% allo stress severo**
(SKH ×0,33, XS ×0,00) — e allo stress severo e' **peggio del libro live**. **Il numero da citare e'
la banda.** Tetto strutturale: cap $200k (HYRO) + $400k (FTMO) = **max 6 conti**, oltre servono altre
firm, ognuna col proprio rischio di controparte.
⚠️ **Onesta' dell'agente sulla distorsione che NON ha potuto rimuovere:** la banda d'ancora **non e'
girata** sotto questa lente (fuori budget), quindi l'ottimo gira sull'ancora **canonica** e si
appoggia a **SKH01, che il progetto misura come lo sleeve con la fortuna d'ancora piu' grande da
restituire** -> *la distorsione e' a suo favore e lo dichiara*.
⚠️ E la sotto-pesatura di **TP01, lo sleeve difensivo**, e' misurata su un campione **senza
sinistro** (2024-2026 non contiene un crash): **su una barriera assorbente quella scommessa si paga
una volta sola.**
⚠️ Assunzione dichiarata e **non verificata con le firm**: che una firm crypto listi i 19 alt
Hyperliquid con short abilitato. Se non li lista, XS01 sparisce e con lui il risultato.
⚠️ Errore proprio corretto in sessione: `paired_delta` **ignorava lo stress** e stampava un delta
non-stressato accanto a righe stressate -> *un confronto appaiato deve ereditare TUTTI i parametri
della riga in cui compare*; senza quella guardia avrebbe concluso che il risultato era robusto
quando non lo e'. Ora c'e' un `assert` che lega il delta alle due colonne stampate.
---
# ONDATA 2 — 2026-08-22 sera (7 filoni)
Mirata su cio' che la prima ondata ha lasciato scoperto, **inclusi i falsificatori che gli agenti
stessi hanno nominato senza poterli eseguire**. Stesso contratto di consegna, stessi gate.
| # | filone | domanda che decide | verdetto |
|---|---|---|---|
| 21 | XS01-OOS | il vantaggio del PROP-ALLOC poggia sul drift di XS01 misurato sulla sua finestra di scoperta: regge fuori? | **LEAD** — regge, ed e' PIU' GRANDE fuori |
| 28 | DEPEG | il falsificatore che l'autore di 21 ha nominato contro se stesso: il depeg USDT contamina il ranking? | **SOPRAVVIVE** — il venue sposta 0,01 di Sharpe |
| 29 | PROP-RECAL | J rifatto con XS01 dalla storia lunga: il canale funded si apre? | **LEAD ridimensionato ~5x** — 42% → **7,8%** |
| 30 | LISTINO | `GATE PROP-01` gamba (a): la firm lista >=10 delle 13 gambe con short? | **PASS 13/13** — verificato sul venue, non sul sito |
| 31 | GATE-RECON | cosa direbbero i 3 gate pre-registrati se le serie forward fossero riparate | **1 gate su 3 ribaltato** — e la premessa e' CONFERMATA |
| 22 | MAKER | l'esecuzione passiva e' una fonte di ritorno, al netto del costo di non essere eseguiti? | **SCARTATO** — il segno dipende da `<` contro `<=` |
| 23 | BOCPD | un rilevatore di cambio di regime vero batte il miglior lookback COSTANTE? | **SCARTATO** — filone chiuso definitivamente |
| 24 | CRITICO | cosa NON e' stato misurato, e quale singola misura mancante vale di piu' | **3 correzioni all'ondata**, 1 regola mia ritirata |
| 25 | BIN-FREQ | il binario di frequenza su SKH01 e' un candidato o un sottoprodotto? | **LEAD** — direzione reale, taglia = selezione |
| 26 | TP01-SINISTRO | quanto pesa TP01 se l'obiettivo include un crash che nel campione non c'e'? | **allarme SCARTATO** — il rischio e' XS01, non TP01 |
| 27 | SURFACE-RV | la superficie e' internamente incoerente, e l'incoerenza vale piu' del costo di attraversarla? | **SCARTATO** — l'incoerenza al mid **e'** la larghezza del mercato |
---
## 23 — BOCPD (orizzonte adattivo, il falsificatore eseguito)
`scripts/research/r0822b_bocpd.py` (123 s). **169 trial dichiarati**, conteggio al rialzo, inclusi i
13 di taratura fatti guardando **solo il numero di change-point**, mai uno Sharpe.
**Il falsificatore che il 22/08 restava aperto e' stato eseguito con i rilevatori che nominava**:
BOCPD (Adams & MacKay, run-length posterior online, Normale-InverseGamma, hazard costante) e
**optimal partitioning causale** (l'obiettivo che PELT accelera, ricorsione in avanti, mai un
`fit_predict` retrospettivo), piu' `L` scelto per walk-forward sul PnL realizzato.
📌 **E questa volta il test HA AVUTO POTENZA — e' il fatto che rende il "no" esaustivo.**
Il vincitore del 22/08 aveva lookback **costante** (stava al bordo il 100% del tempo, corr 1,000):
si era chiusa una famiglia di *proxy*, non il meccanismo. Qui **68/96 celle sono davvero adattive**
(BOCPD 24/24: `L_t` mediano 25-107 g, IQR 28-134 g, **0-4% al tetto**, 7-44 reset/anno).
| | Sh FULL | Sh HOLD | maxDD | CAGR | corr→TP01 |
|---|---|---|---|---|---|
| (A) adattivo, cella in-sample | 1,618 | 0,627 | 14,48% | 22,05% | 0,757 |
| **(B) miglior COSTANTE** (L=15g triple 12h) | **1,639** | **0,657** | 12,68% | 22,31% | 0,737 |
| (C) walk-forward su PnL | 1,385 | 0,382 | 16,33% | 17,20% | 0,860 |
| TP01 30/90/180 | 1,314 | 0,489 | 14,31% | 16,44% | 1,000 |
📌 **La decomposizione E' il risultato:** adattivo TP01 = **+0,305**; miglior costante TP01 =
**+0,326**; adattivo miglior costante = **0,021** → **l'adattivita' spiega il 7% del vantaggio
su TP01. Il 100% e' "un orizzonte piu' corto", non "adattarlo".**
**Gate:** `earns_slot_honest=False`; `marginal_vs_tp01` **NEUTRAL** con **corr→TP01 0,861**;
appaiato per anno vs il null giusto (B) **3/8 anni** (mediana 0,15); **banda d'ancora 12 ancore,
mediana delle differenze appaiate 0,136, positiva in 0/12**, e la canonica sta al **92° pctl** =
fortuna d'ancora a suo favore. `causality_ok` ok, e **troncamento manuale esplicito** su 4
combinazioni: `max|L(prefisso) L(pieno)| = 0` → la trappola del change-point retrospettivo e'
esclusa **per misura, non per fiducia**. Null del de-levering **non applicabile e dichiarato**
(il candidato NON riduce il maxDD: 14,5% contro 12,7%).
**Il criterio del falsificatore applicato a tutte le 68 celle adattive: 0/68**, e nessuna delle due
condizioni va vicina — corr→TP01 **minimo 0,754** (soglia 0,60), **nessuna** batte il miglior
costante sul FULL (la migliore e' 0,013), massimo **4/8** anni battuti (richiesti 6).
⚠️ **Cosa l'agente NON propone, e perche':** il miglior costante batte TP01 di +0,326 — ma il salto
di Sharpe fra **L adiacenti** e' **+0,190, cioe' il 58% dell'intero vantaggio**: e' un max-of-24 su
un crinale di rumore, non una curva. **Nessun cambio a TP01, al libro, ai pesi.**
🚨 **Sottoprodotto che vale fuori dal filone: un deflated-Sharpe calcolato dentro una famiglia
OMOGENEA e' CIECO.** Qui dice **0,998-1,000 PASS**; ricalcolato con l'sr0 **di screen** misurato dal
filone ORTHO (1,572 su 168 trial) dice **0,555 / 0,580 / 0,237 FAIL** — TP01 compreso. Il motivo e'
strutturale: `deflated_sharpe` stima il massimo-dal-rumore dalla **varianza** degli Sharpe della
griglia, e una griglia di varianti molto correlate ha varianza piccola → sr0 basso → DSR alto **per
costruzione**. Gonfiare N col padding alza N e non la varianza: **non basta contare i trial di
screen, serve la VARIANZA di screen.**
📌 **Secondo sottoprodotto, un controllo da mettere in ogni famiglia con un parametro clippato: la
PROVA DI IDENTITA' batte la diagnostica.** Invece di dire "questa cella sta al bordo", l'agente
mostra che la sua serie e quella del lookback costante coincidono a **max|Δ| = 0,000e+00 su
n=2719** — non *somiglia a*, **lo e'**.
**VERDETTO: SCARTATO. IL FILONE ORIZZONTE-ADATTIVO E' CHIUSO DEFINITIVAMENTE.**
---
## 22 — MAKER (esecuzione passiva come fonte di ritorno)
`scripts/research/r0822b_maker.py` (19 s, sola lettura). **42 celle dichiarate**, nessuna riduzione.
📌 **Osservazione strutturale che riapriva la domanda:** il netting su strumento unico — il motivo per
cui T1 resto' non implementata il 26/07 — **non si applica qui**. Quello uccide i *bracket per-sleeve*
(un limit al livello di SKH chiuderebbe quota TP01); l'ordine **netto** di ribilanciamento e' uno
solo, quindi passivizzarlo non ha conflitti fra sleeve. La domanda era davvero aperta.
**(1) Il differenziale, limite superiore** (tutto maker, zero non-fill): dSharpe **+0,0333**,
dCAGR +0,466 pp → **$2,96/anno a $635**, $23,28 a $5.000, $1.203 al muro di $258k.
✅ Replica indipendente della curva del 26/07: **+0,0167 Sh/bps e +0,233 pp/bps** contro i pubblicati
0,017 / 0,23.
📌 **(2) Il costo del non-fill, ed e' qui che muore: il parametro che decide non e' l'orizzonte, e'
cosa si chiama "riempito".**
| N (min) | TOCCO `low <= P` (limite superiore) | ATTRAVERSAMENTO `low < P` (minimo difendibile) |
|---|---|---|
| 5 | fill 93,2% · resta **+0,31** bps (15,5%) | fill 86,2% · resta **0,47** bps (**23,6%**) |
| 60 | 98,6% · +0,34 (17,1%) | 95,9% · **0,45** (22,4%) |
| 120 | 98,9% · +0,67 (33,7%) | 96,9% · 0,38 (19,0%) |
**Fra le due colonne cambia una sola disuguaglianza stretta**: se la barra che apre esattamente al
nostro prezzo, e da li' se ne va, conta come fill. **Non conta** — a quel prezzo non e' stato
scambiato niente dopo l'arrivo dell'ordine, e un passivo sta *dietro* a tutta la coda. Griglia fine:
il salto e' **tutto al primo passo** (3,16 → 3,95 bps a penetrazione sub-tick) e **non esiste un q
positivo di pareggio**. Lente model-free: il fill *richiesto* per pareggiare e' **88-98%**, quello
ottenuto e' sotto in **25 celle su 25**.
**Gate:** appaiato **per ORDINE** (ogni ordine compare una volta in entrambe le politiche, riempito o
no — allineare sui riempiti avrebbe tenuto solo i casi in cui non e' successo niente); **IC95
bootstrap contiene lo zero in 10 celle su 10** al tocco e a q=0, interamente negativo da q≥1;
**placebo a ore casuali girato** → reale ≈ placebo e **incoerente fra i due asset** (BTC 6,8 vs 3,1
bps; ETH 4,1 vs 4,7) ⇒ la selezione avversa **non** e' "il libro trada nei momenti brutti", e'
**strutturale all'esecuzione passiva** e non si aggira scegliendo momenti migliori. Null del
de-levering **non pertinente e dichiarato** (nessun claim di DD; il maxDD **cambia segno** fra le
lenti = non e' un effetto).
📌 **La firma della troncatura, vista dall'altra parte.** Il passivo **vince sul 92-98% degli ordini e
perde sulla media**: mediana dell'avversa **2,0 bps** (favorevole), media **+4,3**, peggiore **+948**,
e i **5 ordini peggiori su 1535 fanno il 42% del danno**. E' la forma speculare del profit-take di
VRP01 (30/07). **Una politica che vince quasi sempre e perde sulla media si giudica sulla media.**
⚠️ **Rischio operativo quantificato:** a N=60 restano aperti al giro successivo il **4,6-7,8% degli
ordini = 9-15 volte l'anno** in cui l'esecutore deve cancellare-e-rimpiazzare su un conto vero. Oggi
`rebalance_signed` manda market e finisce: **nessun ordine sopravvive al giro** → si comprerebbe un
modo nuovo di rompersi (il libro ha gia' pagato quel prezzo con `fresh_5m`) per un beneficio il cui
IC95 contiene lo zero.
⚠️ **Numero del brief non riprodotto:** l'agente ricostruisce **191 ordini/anno di libro** a $635
contro i "35-44/anno per asset" del brief; il nastro vero da' 18 ordini in 45 giorni = **146/anno**.
La conclusione non dipende da questo (il punto 1 usa il turnover modellato, che replica la curva
pubblicata al terzo decimale), **ma il numero del brief va ri-verificato.**
**VERDETTO: SCARTATO.** +0,033 Sharpe nel caso impossibile, contro ±0,20 di banda d'ancora del libro.
**Smentitore dichiarato:** una misura di **profondita' del book** sui perpetual USDC (che l'OHLC non
contiene e che il progetto non raccoglie — `cb_chain` e' opzioni). Se a taglie di $5-80 la coda al
miglior livello si consumasse senza che il prezzo debba attraversare, il segno si ribalta. **E'
misurabile in avanti**: registrare `book_depth` al momento di ogni ordine e poi il volume scambiato
al livello.
---
## 24 — CRITICO (critico di completezza dell'ondata)
`scripts/research/r0822b_critic.md` (48 KB, markdown — non uno script). Ha letto brief, registro,
diario e i sorgenti degli agenti.
📌 **La tesi, e regge:** *il metodo dei singoli filoni non e' il problema dell'ondata, la CUCITURA lo
e'.* I difetti gravi stanno nei punti dove **nessun agente era responsabile**.
🚨 **(a) `dealer_net_gamma` NON e' "il GEX col segno invertito" — la regola l'ho pubblicata io in
CLAUDE.md ed e' FALSA.** ✅ **Verificata da me aprendo la fonte**, che gira su questa stessa VPS:
`/opt/docker/cerbero-mcp/src/cerbero_mcp/common/options.py:11-14` **dichiara la convenzione**
(*"i dealer sono SHORT calls (le vendono al retail) e LONG puts"*) e `dealer_gamma_profile:138-140`
la implementa (`call_dealer_gamma -= contrib` / `put_dealer_gamma += contrib`). Non e' un segno
invertito per errore: e' un'**assunzione di posizionamento dichiarata**, diversa da quella del GEX
standard. Il default `top_n_strikes=50` spiega anche il coefficiente 0,7 e l'offset che il filone
DEALER-GAMMA attribuiva a "non-portabilita'". **Il verdetto SCARTATO regge; cade la regola**, che le
prossime ondate avrebbero ereditato al contrario.
🚨 **(b) Il deflated-Sharpe e' stato misurato ai suoi DUE estremi degeneri lo stesso giorno, da due
agenti che non si citano — e tre gate pre-registrati ci poggiano sopra** (XSR01 23/10, DVOLSPREAD
24/10, 22/12). `altlib.deflated_sharpe` calcola `sr0 = sd(Sharpe dei trial) × mult(N)`: dipende dalla
**varianza** della griglia, non solo da N. Da un lato VOL-SIZE dichiara il proprio DSR **VACUO**
(1,000 anche per il baseline); dall'altro ORTHO-SCREEN pubblica *"sr0 = 1,572 ⇒ uno screen largo su
BTC/ETH non puo' passare il proprio gate per aritmetica"* — ma quell'1,572 implica sd≈0,58, e **le
stesse 168 celle dichiarate come 7 famiglie da 24 danno 1,15, sotto il soffitto ~1,3**: il verdetto
"impossibile per aritmetica" **si ribalta senza toccare un dato**, e la cura che suggerisce
(dichiarare famiglie piu' piccole) e' esattamente la manovra che il progetto ha proibito il 30/07.
**Convergenza indipendente:** il filone BOCPD, che non ha parlato col critico, ha misurato lo
stesso difetto dall'altro capo (DSR 0,998 PASS dentro la famiglia omogenea → **0,555 FAIL** con
l'sr0 di screen). **Due agenti, due strade, stessa conclusione: il gate non ha una regione utile in
mezzo.**
🚨 **(c) Il filone ALT-OPTIONS non e' nel registro** — ✅ verificato: **zero occorrenze**, ne' riga ne'
sezione, benche' due altri filoni lo citino e il mio brief per SURFACE-RV mandasse a leggerlo. Il
diario lo liquida come *"alt-options (alt)"*, ma la sua conclusione riguarda **ETH_USDC, che non e'
un alt**: `f_venue` 0,980 e **max-loss $16,62/lotto**. Se regge, e' la **quarta** soglia pubblicata
falsificata (il diario ne annuncia tre) e sposta VRP01 da *"servirebbe il 61% di un conto da $3.000"*
a *"entra in un conto da ~$140"*. ⚠️ **Cio' che NON cambia: la regola "niente short-vol da modello in
deploy" non era una regola di eseguibilita'** — VRP01 resta fuori dal libro per il `f` modellato e
per il gate IV-rank, non per la taglia del lotto.
📌 **(d) La misura di maggior valore mai fatta, secondo il critico: il peggior giorno che il libro
puo' avere, MISURATO invece che assunto.** Il gradino di leva 1,00→1,50x vale **14,7a → 11,6a** al
capitale-rendita (~€300/mese di versamenti equivalenti, a costo zero) ed e' bloccato da **un unico
parametro scelto a mano** ("un giorno 10%/anno porta k* a 2x"). Controllo di cinque minuti: sui 10
peggiori giorni di BTC/ETH in 7,4 anni — **incluso il 41,5%/45,7% del 12 marzo 2020** — il libro ha
fatto **+0,97 · +0,72 · 0,00 · 1,98 · 2,24 · +0,23%**, e il suo peggior giorno assoluto (**3,38%**)
**non e' un giorno di crash**. Il 10% e' plausibilmente una **coda da buy&hold importata in un libro
difensivo**.
📌 **(e) La risposta onesta al mandato, che gli era stato chiesto di dare se vera: nessuna misura di
ricerca batte "versare".** 3,1 anni di ricerca valgono meno dei 5 anni che vale €250/mese in piu'.
E la verifica che costa meno di tutte **non e' ricerca**: leggere il listino di due prop firm.
L'intero risultato di testa dell'ondata (+0,400 di J) poggia sull'assunto — scritto in un **commento
a riga 100** — che una firm crypto listi i 19 alt Hyperliquid con short abilitato. **E' la ripetizione
esatta dell'errore GTAA01/PRIIPs**, per cui il progetto ha gia' scritto la regola: *la negoziabilita'
sul conto REALE va verificata quando lo sleeve entra in RICERCA.*
**Altre contraddizioni fra agenti segnalate:** lo Sharpe di XSR01 compare con **quattro** lenti (non
tre); il muro di XS01 con **tre** numeri; la leva riceve guida **opposta** da GROWTH-POLICY e
PROP-ALLOC; il peso di SKH01 e' **respinto da un agente e raddoppiato da un altro**. Piu' 6 modalita'
non esplorate e 6 punti di autocritica — incluso che i **20 MB del dataset futures 2018-2026 (l'unico
con la coda 2022) vivono solo in uno scratchpad di sessione**.
---
## 21 — XS01-OOS (XS01 fuori dalla sua finestra di scoperta) — **il risultato di testa della serata**
`scripts/research/r0822b_xs01_oos.py` (78-126 s, cache nello scratchpad, seconda corsa **offline**,
numeri identici su due corse). **140 trial dichiarati** (contati al rialzo: le 6 varianti di config
sono contate come trial anche se sono la *rivalidazione di una selezione passata*), piu' 1.200
estrazioni di null che **non** sono trial.
**L'idea:** il gate del PROP-ALLOC diceva *"non aprire un funded prima che XS01 abbia una finestra
fuori dal 2024-2026"* = un'attesa di anni. **Quella finestra esiste gia'** — gli stessi 19 ticker su
**Binance spot USDT 1d, 2021-01 → 2023-12**, che contiene **LUNA e FTX**. Meccanismo **congelato**
(blend [30,90], H=10, k=5, gate p30, vol-target 20%), nessuna griglia cercata.
⚠️ **L'obiezione ovvia — "Binance non e' la verita'" — e' stata misurata, non aggirata:** quella
regola del progetto riguarda l'**ancoraggio di prezzo**, non un ranking cross-sezionale, e lo scarto
USDT e' un **fattore comune** che sparisce nello z-score. Verificato: corr dei ritorni giornalieri per
asset **≥0,9992** (min NEAR), |differenza| mediana **5,1 bps**, e soprattutto lo **stesso sleeve**
calcolato sui due venue da' **corr 0,9991, dSharpe 0,025**. Replica dello sleeve ufficiale
`max|diff| = 0,0`. Dato certificato: **0 gap, flat 0,00-0,71%, volumi zero 0,00%**, nessun run
iniziale a volume 0 (il rivelatore del backfill sintetico, lezione AXS).
📌 **IL RISULTATO, e va nel verso opposto a quello temuto:**
| | Sharpe (**mediana di fase**) | banda 10 fasi | fasi >0 | maxDD | CAGR |
|---|---|---|---|---|---|
| **fuori campione 2021-2023 (U13)** | **+1,12** | [+0,74, +1,54] | **10/10** | **22,0%** | +26,1% |
| finestra di scoperta 2024+ (U13) | +0,37 | — | — | 20,5% | +8,9% |
| **fuori campione (U19-EXP)** | **+1,17** | [+0,91, +1,78] | **10/10** | 20,9% | +30,0% |
| XS01 **ufficiale** (HL, 2024+) | +1,15 | [+0,46, +1,59] | — | **10,8%** | +29,0% |
**Differenza appaiata per fase (fuori campione scoperta): +0,668, positiva in 10/10 fasi.**
**Il fuori campione e' la finestra MIGLIORE, non peggiore.** Per anno: 2021 **+2,14** · 2022 +0,22 ·
2023 +0,84 · 2024 0,48 · 2025 +0,68 · 2026 +2,26.
**Sul LIBRO, solo fuori campione** (TP01+SKH01 75/25 + XS01, n=1076, dati che PROP-ALLOC non aveva mai
visto): w=0 → Sh **+1,17** / DD 9,4% · w=0,25 → **+1,65 / 6,0%** · w=0,33 → +1,67 / 6,6% ·
**w=0,50 (l'argmax di PROP-ALLOC) → +1,56 / 8,9%**. corr(XS01, libro) **0,019**.
**Gate:** `causality` leak-free (randomizzando i prezzi dopo la decisione `max|diff| = 0`);
`marginal_vs_tp01` **ADDS** su entrambi gli universi (corr +0,031 / 0,01, `is_hedge` **False**);
banda di fase `gate_pass=True` **4/4**, e la fortuna d'ancora e' **piccola** (+0,05) contro il **+0,18**
dello sleeve ufficiale; null di permutazione **a fee zero** p=0,013 (cross-sez.) e 0,017 (pesi
casuali); sopravvive a **30 bps/lato** (+1,01). **`deflated_sharpe` FAIL 0,342** — e l'agente dichiara
che il DSR penalizza una **mediana-di-fase** come se fosse un **max-di-k**, *"ma un gate fallito resta
fallito"*. Null del de-levering **non pertinente e dichiarato**. Haircut a $600: **non e' il vincolo**
(ticket mediano $76, **0,0%** sotto il min-order).
🚨 **Null "universo dove NON dovrebbe funzionare"** (11 settoriali SPDR, 1998+, meccanismo congelato):
**0,45, 0/10 fasi positive** → **terza conferma indipendente che il cross-sectional e'
crypto-specifico** (dopo XSR01-equity 26/07 e STATARB-EQ 25/07).
🚨 **Il risultato che il progetto non si aspettava: i DUE AFFINAMENTI del 2026-06-19 NON si
replicano.** Fuori campione il **blend [30,90] e' PEGGIO del solo L=30** (+1,12 vs +1,28) e il **gate
di dispersione p30 vale ZERO** (+1,12 con e senza) — mentre *dentro* la finestra di scoperta il gate
vale eccome (+0,37 contro 0,03). **Cio' che sopravvive e' il meccanismo cross-sectional NUDO.**
⚠️ Non e' un argomento per cambiarli — cambiarli guardando *questo* risultato sarebbe la stessa
selezione spostata di finestra — **e' un argomento per non attribuire loro il valore che la memoria
del progetto gli attribuisce.**
⚠️ **Concentrazione misurata prima di crederci** (lezione SOL, stesso giorno): togliendo il **2021** il
fuori campione scende **+1,17 → +0,57**; **leave-one-asset-out**: togliendo **LTC** la mediana di fase
crolla **+1,12 → +0,20** (tutte e 13 restano >0) → **ampiezza effettiva bassa**, stessa diagnosi di
STATARB-MULTI.
**VERDETTO: LEAD.** Non promuove niente; **riscrive il gate del PROP-ALLOC.**
📌 **`IL GATE DEL PROP-ALLOC SI PUO' CHIUDERE OGGI: PARZIALMENTE` — e non si chiude, si SOSTITUISCE.**
L'attesa di anni **non serve**. Ma tre cose che il gate non chiedeva sono ora misurate:
- **il rendimento sopravvive, il RISCHIO no**: maxDD standalone **10,8% → 20,9-22,0%** — e su un conto
funded il vincolo binding e' la **regola di DD**, quindi la correzione va nel verso sbagliato;
- **il peso 0,50 dell'argmax-J non sopravvive**: fuori campione a w=0,50 il maxDD di libro risale a
**8,9%** contro **6,0%** a w=0,25, cioe' restituisce quasi tutta la protezione che e' l'unica ragione
per metterlo su un conto a barriera → l'ottimo fuori campione e' **w ≈ 0,25-0,33**;
- **32% dell'universo non e' testabile** (ARB/OP/SUI/APT/SEI/TIA non quotati nel 2021-23) e su di esso
vive gran parte del numero di scoperta (**19 gambe 1,31 vs 13 gambe 0,54**, stessa finestra e stesso
venue) → *cio' che e' stato validato e' una versione piu' DEBOLE di quella che sta nel libro.*
⚠️ **Il punto fragile che l'agente dichiara e non ha testato:** la validazione di venue gira **solo sul
2024+**, cioe' proprio il periodo **senza depeg USDT**, mentre il fuori campione contiene il **depeg di
maggio 2022**. Se i close Binance/USDT 2021-23 divergessero da un venue **USD** in modo *non comune fra
gli asset*, il ranking cambierebbe e il risultato con esso.
---
## 26 — TP01-SINISTRO (il peso di TP01 contro un crash che nel campione non c'e')
`scripts/research/r0822b_tp01_sinistro.py` (~200 s). **1.784 valutazioni Monte Carlo** contate dal
codice, ognuna 2.500 percorsi eval + 2.500 funded, **lente accoppiata**, de-luck x0,89.
**Replica di controllo:** i numeri E-ter di PROP-ALLOC (argmax **38/62 @0,50x J 0,521**, live 75/25
J 0,443) riprodotti **al millesimo**.
**L'allarme da verificare** era il caveat che PROP-ALLOC aveva dichiarato contro se stesso: *"la
sotto-pesatura di TP01 e' misurata su un campione SENZA SINISTRO: su una barriera assorbente quella
scommessa si paga una volta sola"*. L'agente ha **registrato nel docstring, prima di misurare**, che
si aspettava di **confermarlo**.
| lente | argmax w TP01 | J argmax | J a 0,75 (live) |
|---|---|---|---|
| **2019+ (contiene il 2022)** | **0,375** | 0,521 | 0,443 |
| 2024+ (la finestra di PROP-ALLOC) | **0,375** | 0,423 | 0,317 |
| SOLO-SINISTRO | **0,000** | 0,771 | 0,000 |
**L'allarme e' falsificato nel VERSO, non nella cautela: TP01 ~0,375 e' l'argmax sia sulla finestra
che contiene il 2022 sia su quella che non lo contiene, e nel sinistro il libro con MENO TP01 fa
MEGLIO** — perche' TP01 va flat mentre **SKH01 si gira short e guadagna**. Conto dell'assicurazione:
premio **-4,01%/anno** fuori dal sinistro, indennizzo **-12,5%** cumulato sui 120 giorni di sinistro
(LIVE -2,8% contro OPT +9,7%). Test dei segni: OPT batte LIVE **12/12** sulle peggiori finestre 30g
(p=0,0005) e **8/8 sul solo sotto-campione pre-2024 indipendente** (p=0,0078).
**Null del de-levering — 7a occorrenza, in veste nuova** ("protezione dal crash" invece di "meno
drawdown") **e decisivo**: a leva comune TP01 protegge davvero (sopravvivenza al crash 32,4% -> 76,4%
da TP01 0 a 0,625), ma la stessa protezione si compra abbassando la leva, e **a ISO-SOPRAVVIVENZA
meno TP01 paga di piu'** (payout $4.490 a TP01 0,125 -> **$2.119** a TP01 1,00, monotono).
**Tre risultati collaterali che valgono piu' dell'allarme rimosso:**
1. **"2024-2026 non contiene un crash" e' FALSA nella forma**: il 2024+ ha buy&hold a **-60% di
drawdown** e -39,6% in 20 giorni. Manca la **taglia** (~2,3x sulla coda 1-10 giorni). La domanda
giusta non e' *"e se arriva un crash"* ma **"e se ne arriva uno due volte piu' grande"**.
2. **Alle leve funded il 2022 NON era una minaccia** (min equity -1,4/-2,4% contro barriera -6%):
cio' che uccide un conto a barriera e' la **regola a un giorno su una giornata qualunque**, non il
crash del sottostante. E il vincolo che morde **cambia col peso**: sotto TP01 0,50 e' il
daily-loss, sopra e' il max-loss cumulato.
3. **Il rischio vero dell'ottimo non e' TP01, e' XS01**: uno shock di **un giorno a ~-10%** dimezza
la sopravvivenza quando il crash arriva, e **XS01 non ha nessun sinistro nel campione**.
**Ipotesi dell'agente nata e refutata in sessione:** aveva scritto che TP01 fa da zavorra contro
quell'ignoto (-12,3% a XS01 25% contro -8,0% a XS01 50%); il controllo a **XS01 fisso e leva
comune** lo smonta - lo shock di rottura e' **-10,1/-10,2/-10,2%** muovendo TP01 da 12% a 38%
(**invariante**) e la sopravvivenza severa **cala**. *Protegge meno XS01, non piu' TP01: il primo
confronto attribuiva a TP01 il merito di un altro peso.*
**Libro live NON toccato** (75/25 resta). Nota per la memoria: il 75/25 e' **fuori** dalla regione di
compromesso del funded (0,375-0,50) - coerente col fatto gia' scritto il 25/07, *canale funded e
libro proprietario vogliono libri diversi*.
**Caveat principale, dichiarato:** `anchor_luck_band` **non ri-misurata** sotto questa lente; gira
sull'ancora canonica e si appoggia a **SKH01, lo sleeve con la fortuna d'ancora piu' grande da
restituire** -> **la distorsione e' A FAVORE della conclusione**. **Smentitore dichiarato:** un crash
in cui **SKH01 non si gira short in tempo** (gap notturno oltre lo stop, venue fermo). Il campione ne
ha **quattro** episodi e in tutti e quattro SKH01 ha girato: **l'ampiezza effettiva della coda e' 4, e
nessun bootstrap la aumenta.**
---
## 27 — SURFACE-RV (la superficie come relative value fra i suoi punti)
`scripts/research/r0822b_surface_rv.py` (~85-130 s). **~112 valutazioni**, e **nessuna e' una
selezione**: e' un **censimento su 1,24 M quote a due lati**, non una ricerca di celle.
L'ipotesi era di **microstruttura, non di previsione**: non chiede alla vol implicita di prevedere
niente, chiede se la superficie sia internamente incoerente e si ricomponga. E' l'unico angolo della
superficie che l'ondata non aveva coperto (livello, skew, struttura a termine e quote reali erano gia'
chiusi).
| test **model-free** (nessun interpolatore) | esito |
|---|---|
| **V — monotonia P(K)** | **0 / 1.111.585** |
| **B — convessita' P(K)** | mid 6,213% · **eseguibile 1 / 1.031.256 = 0,0001%**, vale **$0,00**, sparita l'ora dopo |
| **C — varianza totale nel tenore** | strike condiviso 6/107.177 (0,006%) · con interpolazione 10/112.827 → **l'interpolatore contribuisce +0,003 pp** |
**Ampiezza:** |residuo| mediano **0,125 pt-vol (BTC) / 0,200 (ETH)** contro **mezzo** spread
0,861 / 1,208 → rapporto su spread pieno **0,053 / 0,063**; **sotto il tick nel 96,5% / 95,3% dei
casi** — l'incoerenza **non e' esprimibile nella griglia di prezzo del venue**. Economia al lotto
minimo: fee 3 gambe $7,54 (BTC) / $2,11 (ETH), miglior credito netto su **782 k farfalle**
equispaziate **$0,95 / $0,33**, **positivi 0**. Calendario: violazione mediana **$0,09** contro
**$0,59** di costo, e la superficie sta **13,2 pt-vol** dal bordo di non-arbitraggio → vincolo
strutturalmente slack.
📌 **IL MECCANISMO, che vale piu' del verdetto: |residuo| cresce MONOTONAMENTE col largo del
mercato** — BTC **0,080 pt** a spread 2,6% → **0,255 pt** a spread 50%. **L'incoerenza al mid *e'* la
larghezza del mercato guardata attraverso il mid**, non un errore di prezzo.
⚠️ **E questo uccide l'unica riga non-zero, che era un artefatto del CONTROFATTUALE dell'agente
stesso:** prendendo tutta la superficie, lo spread USDC del 2,6% aprirebbe **2.293 farfalle a credito
su ETH** (miglior caso $123); **restringendo alla parte di superficie gia' quotata stretta quanto le
USDC → 0/13.287 (ETH) e 0/145.431 (BTC)**, miglior caso $0,58 / $0,82. *Prendeva il mid di un
mercato larghissimo e fingeva di poterlo quotare al 2,6%.*
**Reversione MISURATA, non assunta:** β **0,062/0,056 per ora**, corr(t,t+1) **+0,94**, mezza-vita
**11-12 h** → il residuo e' **la forma dello smile**, non un errore che si ricompone.
**Gate:** **controlli positivi 3/3 in entrambi i versi** (violazione costruita → rilevata; catena sana
→ zero) — *un rilevatore che trova ~0 e non e' validato e' indistinguibile da uno rotto*; causalita'
**strutturale** (ogni test e' contemporaneo dentro un solo snapshot); ancora oraria girata (incoerenza
mid 5,99-6,36% su 24 ore, eseguibile max 0,00222% → **nessuna ora apre una finestra**).
`marginal_vs_tp01`/`deflated_sharpe`/de-levering/`implausible_sharpe` **non girati, e il perche' e' il
risultato**: non esiste una serie di ritorni da valutare (1 opportunita' su 1,03 M, del valore di
$0,00). `f_markfit` **1,0010** — converge col **0,992** del filone SKEW, implementazione separata →
il difetto non e' il prezzatore.
**VERDETTO: SCARTATO. Il lato relative-value della superficie e' chiuso.**
**Smentitore piu' forte, dichiarato:** quote **reali** della famiglia USDC (tutta l'estrapolazione e'
un controfattuale sui mid inverse) — osservazione decisiva: puntare il collettore anche su
`{"currency": "USDC"}` e rifare TEST B sul suo bid/ask.
🚨 **SOTTOPRODOTTO — buco di colonna nell'archivio ereditato, mai registrato:** `bite_archive` ha
`index_price` e `underlying_price` **100% None (1.232.212/1.232.212)**. Il sottostante esiste **solo
dal 2026-07-30** (raccolta propria, 18,2% delle righe); `book_depth_top3` solo nel 67,2%. **Chiunque
calcoli moneyness o riprezzi sull'archivio pre-30/07 sta usando una colonna che non c'e'.**
**Ed e' chiudibile:** il forward si ricostruisce con la **parita' put-call** dalla catena stessa —
verificato contro l'osservato su **6.578 coppie: |errore| mediano 0,023%, p95 0,147%, corr
1,000000** → rende la superficie utilizzabile su tutti i 75 giorni invece che 23.
**Terza convergenza indipendente sul muro del dato** (75 giorni di superficie); e lo **smile**
che i filoni SKEW/TERM non usavano — esiste invece su **113 giorni dal 2026-05-01**.
---
## 28 — DEPEG (il falsificatore di XS01-OOS, eseguito)
`scripts/research/r0822b_depeg.py` (811 righe, **18 s**, offline dalla cache, **due corse
byte-identiche**). **112 configurazioni**, e **nessuna e' una selezione**: e' un confronto **appaiato**
dello stesso meccanismo congelato su due fonti di prezzo.
**Perche':** l'autore di §21 aveva dichiarato contro se stesso che la sua validazione di venue gira
**solo sul 2024+**, cioe' proprio il periodo **senza depeg USDT**, mentre il fuori campione contiene
il **maggio 2022**. La soglia — `corr fra i due sleeve >= 0,99` — era **dichiarata da lui, non
dall'esecutore del test**.
**Il dato, e il primo limite:** su 13 asset **10 hanno un prezzo USD** che copre la finestra (9
Coinbase + **XRP da Bitstamp**, perche' Coinbase l'aveva sospeso). **BNB non esiste in USD prima del
2025-10** — e' il token nativo del venue sotto esame. AVAX parte 2021-09-30 → il test **non copre il
2021**, ma copre **esattamente cio' che l'obiezione nomina: maggio 2022 e FTX**.
📌 **Divergenza SCOMPOSTA nelle due componenti che sono domande diverse** (824 giorni, 8.240
osservazioni appaiate): **(a) comune** med 3,2 bps / max 76,7 — quella che lo z-score annulla;
**(b) idiosincratica** med **2,1 bps** / p95 11,2 / max 116,5 — quella che cambia il ranking.
Nel depeg (07→20 maggio 2022) il comune arriva a **39 bps** ma l'idiosincratico sale solo a med
**3,6** / max **33,8 bps** contro 2,0 / 10,9 fuori.
**TEST 1** (meccanismo congelato, 10 asset, 10 fasi, 2021-09→2023-12): **corr mediana 0,9992, minima
0,9921 → PASS**; **dSharpe appaiato 0,000** [0,056, +0,036]; divario di equity cumulato su 2,25
anni **+0,07%**. **Il canale del danno, guardato direttamente:** 734 ribilanciamenti, **10 con gambe
diverse (1,36%)**, tutti a sovrapposizione 4/5, **ZERO dentro la finestra del depeg**; Spearman dello
score mediana **1,0000**.
**TEST 2** (finestra intera di §21): il numero di testa **+1,12 → +1,11**, delta appaiato 0,003.
**VERDETTO: `IL RISULTATO XS01-OOS: SOPRAVVIVE`** — il venue sposta il titolo di §21 di **0,01 di
Sharpe** e **non cambia una sola gamba dentro il depeg**.
**Controllo positivo girato** (obbligatorio, o "corr 0,99" potrebbe essere uno sfasamento): USD
ritardato di 1 giorno → corr mediana **0,011**.
**Tre cose trovate che vanno registrate:**
1. 📌 **L'unica corr sotto soglia e' ATTRIBUITA, e non e' il prezzo.** Col **gate di dispersione
spento** su entrambi i venue la minima passa **0,9674 → 0,9977**. Il gate `disp >= percentile` e'
**binario**, quindi pochi bps cadono ai due lati → **4 intervalli da 10 giorni** in cui uno sleeve
e' pieno e l'altro **flat**, piu' una coda di ~30 giorni in cui la `rv30` del vol-target resta
diversa. **Una scansione di ranking non lo vede.** ✅ Converge con §21 (*"il gate p30 fuori campione
vale ZERO"*): **non porta edge e amplifica il rumore** — ⚠️ non e' una proposta di cambiarlo,
cambiarlo guardando questo numero sarebbe selezione.
2. 🚨 **Il caso peggiore dell'intero campione NON e' il depeg: e' il 2025-10-10** (cascata di
liquidazioni sulle coppie /USDT) — **INJ 1.981 bps**, ADA 315, LTC 201, AAVE 136 mentre BTC/ETH
stanno a 21-22. **Il meccanismo temuto dall'obiezione e' REALE**; semplicemente non e' accaduto nel
2021-2023 ed e' caduto nella finestra di **scoperta**, non nel fuori campione. Nel depeg le
peggiori divergenze sono **AVAX subito dopo la quotazione = book sottile, non stablecoin**.
3. ⚠️ **BNB resta non controllabile** e toglierlo costa **0,75** di mediana di fase (+1,12 → +0,37)
— ✅ **replica esatta del leave-one-out di §21 con implementazione separata**. Contesto onesto:
nella LOO di §21 **LTC (+0,20), BTC (+0,33) e XRP (+0,33) pesano di piu'**, e quelle tre **sono
coperte** dal controllo USD.
**Smentitore residuo dichiarato:** la divergenza del 2025-10-10 e' di **chiusura**; un evento
**intra-giornaliero** della stessa natura sposterebbe il ranking **senza lasciare traccia sulle
chiusure**, e i close giornalieri non lo vedrebbero.
⚠️ *Nota di attribuzione: il file risultava `M` in git perche' **io** (coordinatore) l'avevo incluso
in un commit mentre l'agente ci stava ancora lavorando — non un altro agente. Un `git add -A` durante
un'ondata cattura il lavoro in corso.*
---
## 25 — BIN-FREQ (il binario di frequenza su SKH01, giudicato come candidato)
`scripts/research/r0822b_bin_freq.py` (~400 s, **23 ancore piene**, due esecuzioni indipendenti con
output **numericamente identici**). **144 celle** dichiarate nel docstring **prima di guardare**, piu'
i **71 trial gia' spesi sullo stesso oggetto** (28 VOL-SIZE + 43 scettico) → **conto onesto = 215**:
*riaprire un parametro riapre la sua famiglia.*
**Repliche bit-exact** (`max|dif| = 0`) contro `sleeves._skyhook_returns()` **e** contro
`r0702_anchor_skh01.run_asset`; **titolo dello scettico riprodotto esattamente** chiamando la sua
funzione (`BIN L>=med` +0,080 in 20/23, inverso 0,159 in 0/23).
| | ShFULL | ShHOLD | maxDD | CAGR |
|---|---|---|---|---|
| BASE (libro live 75/25) | 1,626 | 1,037 | 10,4% | 18,6% |
| BIN, peso effettivo lasciato cadere | 1,690 | 1,031 | 10,3% | 17,8% |
| **BIN, controllo ISO-PESO** | **1,589** | 0,956 | 10,0% | 16,8% |
📌 **La statistica che decide non e' l'argmax, e' la MEDIANA DI FAMIGLIA.** Argmax
(`q0,50 w60 h0,10 s+`) ISO **+0,112 in 23/23**; **stima onesta di famiglia +0,007**, con **39/72
celle positive = 54% ≈ monetina**. **L'argmax vale 16× la mediana → punta, non plateau.**
**Controllo di segno: 0/72 celle positive** sulla meta' inversa → la *direzione* e' solidissima.
**Gate:** `marginal_vs_tp01` **ADDS**; selezione **in-sample-only** sceglie la stessa cella mentre
scegliendo **sull'hold-out** ne esce un'altra (0,017) → **il gate ha potenza**;
**`weights_tilt_null` FAIL** (pctl 36-38) **e per giunta inerte** (il binario *abbassa* il peso
effettivo 0,250→0,19, e nella forma di deploy naturale il vettore proposto e' identico a quello
corrente); causalita' verificata con **troncamento diretto** su 52 decisioni, 0 divergenti;
**trasferisce a SKH01_V1** (geometria d'uscita diversa): +0,087 in 20-21/23.
**Il deflated-Sharpe NON e' vacuo — refuta l'ipotesi a-priori che l'agente aveva registrato:**
**0,976** (N=144) / **0,977** (N=215, conto onesto) / 0,948 (N=500), baseline 0,828/0,834. E il
**motivo e' riusabile**: il DSR e' vacuo quando i trial si somigliano (var→0 ⇒ sr0→0 ⇒ DSR≈1 *per
chiunque*); una famiglia **binaria** contiene celle che scartano insiemi di trade molto diversi,
quindi **riacquista potenza**. *Non e' il binario a essere piu' solido: e' la famiglia a essere piu'
larga.* ✅ Terza misura convergente della stessa giornata sul difetto del DSR (con BOCPD e CRITICO).
⚠️ **Il null "con potenza" ha una mediana che NON e' zero, ed e' un fatto di misura:** scartare a caso
il 40% dei trade **danneggia**, perche' lo Sharpe annualizzato va con √(scommesse/anno) — misurato:
gamba 1,107 → **0,883** permutata contro **0,861** previsti da √0,60. Il null resta valido e **piu'
severo** (reale +0,112 vs massimo del null 0,031, p<0,01), **ma risponde a "batte una selezione
casuale?", non a "batte il non filtrare?"**.
🚨 **Due premesse del MIO briefing misurate e REFUTATE:**
(i) *"il binario dimezza gli ordini → migliora l'eseguibilita' e riduce le fee"* — gli ordini
**nettati** calano del **17%**, non del 50%; i sotto-min-order **non si muovono** perche' sono di
TP01; e l'**haircut a $635 e' 0,001 in entrambe le braccia**: non c'era niente da guadagnare.
(ii) *"converti il risparmio di fee in Sharpe con la curva del 26/07"* — **a fee ZERO l'effetto resta
l'87-110%** → non e' risparmio di costo, e' **informazione sul rendimento lordo**, e convertirlo
sarebbe stata un'attribuzione sbagliata.
**VERDETTO: LEAD** (non candidato, non scartato). La **direzione** e' reale e sopravvive a tutto; la
**taglia di una singola cella e' selezione**.
📌 **E la domanda che avevo posto — "+0,080 contro ±0,196 di banda d'ancora, merita?" — era il
confronto SBAGLIATO** (la banda del *livello* si cancella in un disegno appaiato), **ma la risposta
corretta e' PEGGIORE per il candidato**. Criterio dichiarato, 4 gambe: (1) mediana di famiglia ≥ meta'
della cella e >65% celle positive → **FAIL (6%, 54%)**; (2) `weights_tilt_null`**FAIL/vacuo**;
(3) marginale + null con potenza → PASS; (4) taglia ≥ €0,10/giorno per pagare un modo di fallire in
piu' → **FAIL: €0,0113/giorno** ($4,79/anno a $635).
Due prove ausiliarie che chiudono il caso: **due implementazioni difendibili della stessa regola**
(d'accordo sul 97,6% dei trade) danno **+0,066 contro +0,080** — *il 21% dell'effetto sta nel come si
riempie il warm-up*; e **versare €500/mese vale ~1456× l'effetto misurato**.
**Libro, pesi, cron, config INVARIATI.**
📌 **Riapertura pre-registrata: non una data, una SOGLIA DI CAPITALE** — cio' che fallisce e' il
rapporto fra un costo operativo **fisso** e un beneficio **proporzionale**, e nessun dato in piu' lo
cambia (con SE(Sharpe)≈1,4 su 6 mesi nessun forward misura 0,07). €0,10/giorno richiede **~$5.600**
alla stima della cella e **~$53.000** a quella onesta di famiglia → si rivaluta alla revisione dei
**$20k** gia' in calendario, **e solo se la cella e' giustificata da un MECCANISMO** invece che
dall'argmax di una griglia.
---
## 29 — PROP-RECAL (J rifatto con XS01 dalla storia lunga) — **la decisione**
`scripts/research/r0822b_prop_recal.py` (891 righe, 309 s, nessuna rete). **5.212 valutazioni MC**
contate al rialzo; risoluzione dichiarata **±0,010 sui livelli di J, ±0,007 sulle differenze
appaiate**. ✅ **Riproduzione ESATTA cifra per cifra** dei numeri di PROP-ALLOC (J 0,738/0,721/0,335;
P(pass) 82,2/77,3/38,6%; scala 39,28 €/g e 41,7%) piu' **tre controlli bit-exact a 0,0**.
📌 **IL RISULTATO: J non regge alla taglia pubblicata, e il colpevole NON e' la finestra.**
Decomposizione a **un grado di liberta' per volta**, stesso pannello:
| passo | J | Δ |
|---|---|---|
| XS01 = HL 19 gambe, finestra di scoperta (**il pubblicato**) | 0,739 | — |
| → Binance 19 gambe, **date allineate** (VENUE) | 0,732 | **0,006** |
| → Binance **13 gambe** (UNIVERSO) | 0,426 | **0,307** |
| → pannello lungo (FASE) | 0,459 | +0,034 |
| → **fuori campione 2021-2023** (FINESTRA) | 0,520 | **+0,061** |
🚨 **Il 42% del numero pubblicato sta nelle 6 gambe che fuori campione non esistono** (ARB OP SUI APT
SEI TIA) — **e quelle 6 furono messe nell'universo nel 2026-06 guardando la liquidita' HL del 2024+,
cioe' dentro la finestra di scoperta.** La finestra fuori campione, da sola, **migliora**.
✅ Allargare l'universo man mano che le gambe nascono (10→19 espandente) da' **J identico a U13**:
i 0,307 **non si recuperano**.
⚠️ **Errore di metodo catturato prima di pubblicare:** la prima stesura dava al passo venue **0,254**
e avrebbe pubblicato *"Binance costa un quarto di J"*. Era **FASE, non venue**`xsec_engine`
ribilancia sulla parita' dell'indice di pannello, e due pannelli che iniziano a date diverse
ribilanciano in **giorni di calendario diversi**. Allineati i pannelli, il venue vale **0,006** =
✅ **replica indipendente della validazione di XS01-OOS, sulla funzione obiettivo invece che sullo
Sharpe.**
**J onesto** (mediana delle 10 fasi, peso 38/38/25):
| finestra | mediana J | banda p10-p90 | LIVE 75/25 | **delta appaiato** |
|---|---|---|---|---|
| **W-LONG 2021+** | **0,453** | [0,431 0,488] | 0,281 | **+0,175 (10/10 fasi)** |
| W-OOS 2021-23 | 0,504 | [0,455 0,608] | 0,364 | +0,146 (10/10) |
| W-DISC 2024+ | 0,442 | [0,404 0,464] | 0,331 | +0,112 (9/10) |
XS01 standalone fuori campione: Sharpe 1,04, drift 22,7%, **maxDD 19,2%** contro 11,2% dello sleeve
ufficiale → **il rendimento regge, la coda no, e la barriera guarda la coda.**
📌 **Il peso 0,50 non sopravvive; la REGIONE robusta si': w_XS ∈ [25%, 38%] e' entro il 3%
dell'ottimo su TUTTE E TRE le finestre**, discovery inclusa. A 50% J scende a 0,438/0,477/0,408 e il
maxDD di libro risale a 12,6%/11,6%/9,1% (contro 9,6%/9,6%/7,3% a 25%) = **replica
indipendente del punto (ii) di XS01-OOS**.
🚨 **IL NUMERO OPERATIVO, con banda di fase: P(≥50 €/g) da €600 in 36 mesi = 7,8% [7,29,1%], con
P(zero) 25,5%** — contro il **41,7%** pubblicato stamattina. **6,6%** se la firm non lista gli alt;
**4,3%** per il libro live. ⚠️ J e P(≥50/g) hanno **argmax diversi**: si cita il centro della regione
robusta, non l'argmax di finestra.
**Stress ora ancorati al MISURATO** (delta appaiato argmaxLIVE): drift pieno +0,193 · SKH ×0,50
+0,124 · SKH ×0,33 +0,113 · **`XS ×0,00` +0,041** · SKH ×0,33 + XS ×0,00 **0,024** (peggio del libro
live). Lo scenario severo **cambia stato**: non e' piu' *"non sappiamo se il drift esiste"* ma un
contro-fattuale a rendimento nullo, e dice che **XS01 come pura decorrelazione vale +0,04** — tutto il
resto e' il suo drift, che ora e' misurato per **13 gambe su 19**.
**Gate:** lente **accoppiata obbligatoria** ovunque (close-only girata solo come controllo: **regala
+0,020 di J**); **banda di fase di XS01 girata — prima volta sotto la lente prop** (fortuna della fase
canonica solo +0,019, delta positivo **10/10**); null del de-levering **strutturale** (ogni
configurazione valutata a 8 leve). ⚠️ **Banda d'ancora di SKH01 (23 offset) NON girata**, surrogata
col taglio del drift — **e' la distorsione dichiarata due volte e mai rimossa**, ed e' diventata la
gamba (b) del gate.
**VERDETTO: LEAD — ridimensionato di un fattore ~5 sul numero operativo, non falsificato.** L'edge
sopravvive alla storia lunga (+0,175 di J, **10/10 fasi**, col 2022 dentro); crollano il **peso 50%**
e il contributo delle **6 gambe non testabili**, non la finestra.
📌 **`GATE PROP-01` — sostituisce l'attesa di anni, che e' CHIUSA:**
**(a) LISTINO — verifica, €0, BLOCCANTE prima di ogni spesa:** ≥10 delle 13 gambe negoziabili **con
short**; sotto 10 il meccanismo congelato **non ribilancia affatto**. FAIL → si decide sulla riga
senza XS01. *E' la stessa classe dell'errore GTAA01/PRIIPs.*
**(b) BANDA D'ANCORA DI SKH01 SOTTO LA LENTE PROP — misura, data 2026-10-31:** mediana delle
differenze appaiate sui 23 offset, **PASS se > +0,05** (l'agente dichiara **prima** di aspettarsi un
PASS; il surrogato dice +0,11/+0,12).
**(c) CAPITALE:** un'eval HYRO $100k costa **$579 su un conto di $635** — la prima eval consuma il
**91%** del conto.
**`IL CANALE FUNDED: SI APRE A CONDIZIONE DI leggere il listino della firm` — e di citarlo come
P(≥50 €/g) 7,8% [7,29,1%] con P(zero) 25,5%, non 42%.**
---
## 30 — LISTINO (`GATE PROP-01` gamba (a)) — **la verifica da €0, fatta**
Non un agente: eseguita dal coordinatore, perche' e' una **verifica esterna**, non un backtest — ed e'
la gamba **bloccante prima di ogni spesa**. La regola del progetto la impone da luglio: *la
negoziabilita' sul conto REALE va verificata quando lo sleeve entra in RICERCA* (lezione GTAA01/PRIIPs).
📌 **Metodo: NON leggere il sito della firm, interrogare il VENUE su cui la firm esegue.** HyroTrader
esegue su **Bybit** via API (o su Cleo, con dati Binance). Interrogato
`api.bybit.com/v5/market/instruments-info?category=linear` (pubblico, tokenless, **833 strumenti**),
lo stesso percorso che il progetto usa per certificare i feed.
| esito | risultato |
|---|---|
| **U13 (le 13 gambe testabili fuori campione)** | **13/13 `Trading`, `LinearPerpetual`** |
| le 6 gambe che fuori campione non esistono | **6/6 `Trading`** |
| min notional | **$5 su tutte e 13** |
| leva max | 50x-150x |
**`GATE PROP-01 (a): PASS 13/13` (soglia era ≥10).** E sono **perpetual lineari**: lo short e'
strutturale, non un permesso — non esiste un divieto di vendita allo scoperto su un perp.
⚠️ **Cio' che questo NON prova:** che HyroTrader non abbia una **propria** lista ristretta distinta da
quella di Bybit. La sua pagina dichiara *"700+ USDT perpetual pairs"* su un venue che ne ha 833 →
coerente con nessuna restrizione significativa, ma e' la **sua** dichiarazione. Il residuo si chiude
con una domanda al supporto, non con un dataset.
**VALIDAZIONE del modello del progetto (non correzione):** la pagina della firm dichiara
**daily drawdown 4% · max loss 6%**, e `scripts/research/r0725_hyro.py:48-49` usa gia'
`EV_TARGET, EV_DD, EV_DL = 0.10, 0.06, 0.04` e `FU_ML, FU_DL = 0.06, 0.04` → **le regole modellate dal
25/07 sono quelle vere.**
🚨 **UNA CORREZIONE ECONOMICA, invece, c'e': la quota d'ingresso non e' un COSTO AFFONDATO.** La firm
la dichiara **"Refundable Challenge Deposit, returned in full alongside your first funded payout"**
(pagina della firm + fonti secondarie concordi). Il progetto l'ha sempre modellata come **spesa
persa** — e la gamba (c) di `GATE PROP-01` dice *"un'eval $100k costa $579 su un conto di $635 = il
91%"*. **Resta vero che immobilizza il 91% del conto**, ma **non e' vero che lo brucia**: si perde
solo nel ramo in cui non si arriva mai a un payout (**P(zero) 25,5%**), e torna in quello in cui si
arriva. **E' una struttura a opzione, non una fee** → l'EV del biglietto va rifatto.
⚠️ **Qualita' delle fonti dichiarata:** il listino degli strumenti e' **primario e misurato** (API del
venue); le regole di DD sono **primarie ma dichiarative** (pagina della firm); la rimborsabilita' e il
prezzo esatto del taglio $100k sono **primari-dichiarativi + secondari concordi**, non misurati.
📌 **Conseguenza sul gate:** la gamba (a) e' **CHIUSA con un PASS**. Restano la **(b)** — banda
d'ancora di SKH01 sotto la lente prop, che un agente sta girando ora invece di aspettare il 31/10 — e
la **(c)**, che va **ricalcolata** con la quota come deposito rimborsabile invece che come spesa.
---
## 31 — GATE-RECON (cosa direbbero i gate con le serie riparate) — **sola lettura, verificata**
`scripts/research/r0822c_gate_recon.py` (719 righe, ~25 s). **Zero celle di selezione**: e' un audit,
tutte le soglie **lette dai file pre-registrati**, nessun parametro scelto dall'agente.
**Sola lettura provata**: md5 + mtime di **ogni** file `data/paper_*` invariati dopo la corsa.
| gate | serie | n | Sharpe | maxDD | vol ann. |
|---|---|---|---|---|---|
| **STATARB** | **attuale** | 54 | **+1,96** | **2,24%** | 7,88% |
| **STATARB** | **riparata** | 53 | **2,02** | **15,19%** | **31,42%** |
| XSR01 | attuale | 28 | 6,55 | 0,28% | 0,46% |
| XSR01 | riparata | 27 | 0,99 | 0,82% | 2,78% |
| DVOLSPREAD | attuale | 28 | 15,82 | 0,93% | 0,79% |
| DVOLSPREAD | riparata | 27 | 5,21 | 7,11% | 19,36% |
Minuti di mercato registrati al giorno: **3,9 / 41,2 / 2,5** = ✅ replica indipendente dei 4/41/2
pubblicati stamattina.
**`STATARB 27/09 — riparata: RITIRO · attuale: CANDIDATO AL DEPLOY`**
**`XSR01 23/10 — riparata: RITIRO · attuale: RITIRO`**
**`DVOLSPREAD 24/10 — riparata: KILL · attuale: KILL`**
*(Non sono i verdetti dei gate: sono i criteri letti **oggi**, su finestre incomplete — 54/90, 28/90,
28/91 barre. Anticipare un gate pre-registrato e' selezione sull'hold-out, e l'agente lo dichiara.)*
**LA PREMESSA SU CUI POGGIA TUTTO E' ORA CONFERMATA PER VIA DIRETTA, non piu' di traverso:**
`data/_feed_backup/*.prebuild.bak` conserva il **vintage pre-riscrittura** di stanotte →
**0 barre chiuse cambiate su 1.761.259** (BTC/ETH 1h+5m). L'unica riga cambiata per file e' **l'ultima
del vintage, che era aperta** (BTC 21/08: close 73732,5→73690, volume 342→492 = **il difetto stesso,
in chiaro**). Su 62 cicli `paper_prevday` fa 1427/1488 identiche, con tasso di divergenza **piatto
nell'eta'** (2,2-5,1%, nessuna crescita) e concentrato all'ora del cron.
⚠️ **Limite dichiarato:** `hl_*_1d` e `dvol_*` **non hanno vintage su disco** → per XSR01 e
DVOLSPREAD l'evidenza resta **indiretta**.
**Prove d'identita' obbligatorie prima di ogni confronto:** **I1** pannello letto ora == quello del
cron di stanotte (`max|d| = 0`, 3/3, contro lo `state.json` scritto alle 00:35); **I2** barre gia'
chiuse identiche al bit (statarb 6/54, xsr 1/28, **dvolspread 0/28 → per quel monitor la prova I2 NON
ESISTE, dichiarato**); **I3** troncare l'INPUT == affettare l'output (`max|d| = 0`, 3/3).
🚨 **(1) IL VETO D'INTEGRITA' DI DVOLSPREAD NON SCATTA: 28 attive / 28 = 100% in ENTRAMBE le lenti.**
Una serie che misura **2 minuti di mercato al giorno** passa al **100%** un veto progettato apposta per
non far decidere su dati mancanti. **Non e' un problema di taratura:** il veto conta *se il DVOL
c'era*, non *quanto dura la barra su cui c'era***assi ortogonali**. La stessa soglia 0,80 applicata
alla quota di barre **chiuse** leggerebbe **0%** e vieterebbe. **Variante nuova di una regola vecchia:
una barra presente non e' una giornata presente.**
🚨 **(2) Il caso peggiore NON e' quello coi numeri piu' assurdi.** XSR01 (|Sh| ×6,6) e DVOLSPREAD
(×3,0) dicono **lo stesso verdetto** in entrambe le lenti; **STATARB ha |Sharpe| quasi identico
(1,96 contro 2,02) e cambia SEGNO** — ed e' il monitor del gate **piu' vicino**. Un controllo che
cercasse *"numeri troppo belli"* **lo lascerebbe passare**. 📌 **La firma da cercare non e' il
|Sharpe| ma la vol forward molto sotto quella del backtest** (7,88% contro 31,42%).
📌 **(3) L'asimmetria del 25/07 su STATARB:** la diagnostica pre-registrata (statica sempre-short)
**non e' affetta** — si ricalcola dal **pannello**, non dalla serie registrata (varia di 0,01 fra le
due finestre contro 3,97 della strategia). **Al gate si confronterebbe un benchmark GIUSTO con un
numero di strategia SBAGLIATO**, e il margine sembrerebbe **+5,83 invece di +1,87**. Il segno del
margine sopravvive: il difetto ribalta il gate, non questa diagnostica.
📌 **QUANTO COSTA ASPETTARE — l'unico argomento quantitativo su *quando* riparare.** Con
**rigenerazione**: **zero barre perse a qualunque data**; si paga solo il rischio che la riparazione
non arrivi. **Senza**: riparare **oggi** lascia **36/90** barre vere a STATARB (62/90 a XSR01, 63/91 a
DVOLSPREAD); **alla vigilia, 1**. E la riparazione parziale **non contamina la finestra, la accorcia**
— una barra troncata porta ~1/370 della varianza *e* del rendimento di una vera, quindi non pesa:
riparando oggi, il 27/09 si leggerebbe una finestra **piu' corta ma VERA** (SE(Sharpe) ~3,2 invece di
~2,0). **Riparare alla vigilia no.**
⚠️ `implausible_sharpe` **girato per la prima volta sulle serie forward**: chiede n≥30, quindi **2
serie su 3 non sono giudicabili**, e su statarb dice "ok" **in entrambe le lenti** — **il gate non
vede un segno ribaltato**.