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

62 KiB
Raw Blame History

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
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
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 USDC4ª 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? in corso
22 MAKER l'esecuzione passiva e' una fonte di ritorno, al netto del costo di non essere eseguiti? in corso
23 BOCPD un rilevatore di cambio di regime vero batte il miglior lookback COSTANTE? in corso
24 CRITICO cosa NON e' stato misurato, e quale singola misura mancante vale di piu' in corso
25 BIN-FREQ il binario di frequenza su SKH01 e' un candidato o un sottoprodotto? in corso
26 TP01-SINISTRO quanto pesa TP01 se l'obiettivo include un crash che nel campione non c'e'? in corso
27 SURFACE-RV la superficie e' internamente incoerente, e l'incoerenza vale piu' del costo di attraversarla? in corso