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

36 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 (gate 2026-12-22) + 1 falsificazione 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

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
-> BTC_USDC e' praticamente morto (5 strumenti liquidi su 686). **Il muro sul BTC RESTA, ma per
la ragione giusta e meglio misurata: non la taglia del lotto, la LIQUIDITA'.** ETH_USDC (119
strumenti, ~$250/lotto) e' l'unica gamba che varrebbe la pena raccogliere.
📌 Sottoprodotto fuori perimetro: esiste un universo opzioni USDC piu' liquido di BTC_USDC —
SOL_USDC 341, XRP_USDC 250, HYPE_USDC 172, AVAX_USDC 146 strumenti con OI>=100.
  • 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(). 🚨 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. 🚨 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.