# Ondate di ricerca e scartati > Estratto **verbatim** da `CLAUDE.md` il 2026-08-25 durante la compattazione. > 69 filoni, 0 candidati promossi. Ogni bullet dice **perche'** e' morto: chi lo riapre deve battere il motivo, non ripetere l'esperimento. > Il testo non e' stato riscritto: e' la memoria originale, spostata. --- - **Lead OPZIONI VRP (income short-vol) — quantificato, NON deploy** — `scripts/research/options_vrp_*.py`. Vendita put settimanali che incassa il volatility risk premium (IV>RV), scorrelato al trend (~0.07). Premio prezzato BS su DVOL reale (`fetch_dvol.py`) + calibrato su quote REALI cerbero-bite mainnet (`options_vrp_calibrate.py`): **f reale ≈ 1.0** (non 1.29) → Sharpe ~0.71, DD 33%, coda severa (settimane −15..−26% su LUNA/FTX). Diversificatore DEBOLE a premio reale, e short-vol da modello. **Regola: niente short-vol da modello in deploy.** Rivalutare quando cerbero-bite cattura un crash (per il f di stress reale). Diari `2026-06-19-options-vrp-lab` / `-eval-crypto-backtest-options`. - **Edge deboli/scartati:** ML walk-forward BTC (Sh ~0.57), trend 1h L/S (~1.0), RV ETH/BTC (Sh 0.27, regime-luck), calendar/seasonality (buy&hold travestito), volume/vol e momentum-reversal (negativi). - **MORTO/confermato artefatto:** mean-reversion / fade (negativo anche a fee zero — la vecchia libreria +201%/+1238% era contaminazione); trend 5m/15m (fee). - **GAMMA SCALPING (long-vol) "scalping BTC/ETH con copertura in opzioni" — SCARTATO (2026-06-26)** — `scripts/research/options_gamma_scalp.py`, test `tests/test_gamma_scalp.py`. È lo **specchio esatto del VRP01** (long straddle ATM + delta-hedge: incassa **RV−IV**, dove VRP01 incassa IV−RV). Perde **ogni anno, ogni variante, ogni frequenza** (Sharpe −3 a −6; nudo/cheap-gated/rich-skip; rehedge 1d e 1h). Diagnostica strutturale: a 1d IV≈o>RV (BTC +4.9pp) → paghi il VRP; a 1h RV>IV gross ma (a) gonfiata da microstruttura, (b) il rehedge orario paga **24× la fee di hedge** → variante *peggiore* (−6). Marginale vs TP01 = **DILUTES**, non è nemmeno hedge (perde sia TP01-up sia TP01-down). Muro eseguibilità: opzione BTC min $5.968 ≫ $600. Schiacciato tra due muri: rehedge lento = premio, veloce = fee → **nessuna frequenza vince.** Regola gemella del VRP: *niente long-vol scalp da modello in deploy*. Il VRP01 (lato short, gated) resta l'unico edge opzioni — funziona perché sta sul lato *giusto* dello stesso premio. Diario `2026-06-26-gamma-scalp-options.md`. - **CASH-AND-CARRY (basis trade) "CC01" — premio REALE, Sharpe ARTEFATTO, NON deployabile (2026-06-26)** — `scripts/research/cash_carry_hl.py`, test `tests/test_cash_carry.py`. Diverso da FC01 (funding cross-sectional, già scartato): qui delta-neutral long-spot/short-perp sullo *stesso* asset → ritorno ≈ **+funding** (zero esposizione prezzo). Il premio di funding è **reale** (~+8-14%/anno aggregato, positivo ogni anno in-sample, ortogonale a TP01 corr ~0.05). MA lo **Sharpe modellato 11-13 (DD 0.3%) è un ARTEFATTO**: il modello cattura solo il cashflow liscio del funding e i rischi di coda sono **strutturalmente fuori dal dataset** — (1) storico funding dal 2023-05 → **manca il 2022** (deleveraging, funding −, basis blow-out); (2) **procyclico** (carry +23% toro 2024 → +1.7% bear 2026, si comprime quando servirebbe); (3) liquidazione short/slippage non modellati. Il mark-to-market della base (`premium` col → r=funding−Δpremium) sgonfia lo Sharpe solo 13→11 → il basis-from-data NON è il rischio vero. Sharpe reale di un basis-trade ~1-3 con code brusche. **NON eseguibile a $600** (spot+perp = 4-38 gambe, funding HL non Deribit) → STAT-MODE. **LEAD da rivedere a scala (~20k+ e venue con funding eseguibile), non uno sleeve.** Sottoprodotto: CC01 passa OGNI gate del marginal scorer → **punto cieco** (manca un gate "Sharpe implausibile → rischio nascosto"; prossima indurita raccomandata). Diario `2026-06-26-cash-carry-hl.md`. - **TP01 × DVOL vol-targeting — NON migliora (2026-06-26)** — `scripts/research/tp01_dvol_overlay.py`, test `tests/test_tp01_dvol_overlay.py`. Angolo ESEGUIBILE (tocca il book live, non STAT-MODE): usare il DVOL (vol implicita forward-looking) come denominatore del vol-target di TP01 invece della vol realizzata. Su finestra comune 2021-2026: le varianti DVOL abbassano il DD (12.3%→9.2%) ma anche Sharpe FULL (0.75→0.70) e CAGR (8%→6%). **Controllo decisivo:** il realized a target_vol RIDOTTO (15%) eguaglia quel DD (9.4%) a Sharpe **più alto** (0.75) → il taglio di DD del DVOL è solo **de-levering**, replicabile meglio con un semplice target_vol più basso. L'unico residuo (hold-out +0.06) è single-window (storia DVOL <5 anni) → sotto la soglia multi-cut. Il gate DVOL-spike de-risk è **ridondante col trend** (TP01 già flat nei crash, Δ 0.00). **Lezione: per meno DD sul live la leva è `target_vol`, non un overlay DVOL** (20% resta canonico). Diario `2026-06-26-tp01-dvol-overlay.md`. - **Filoni 2026-06-29 (1ª ondata) — tutti scartati/forward.** (A) **DVOL-DIREZIONALE** standalone BTC/ETH (buy-the-fear / IV-RV come segnale di livello): l'unico edge è un **HEDGE** (is_hedge=True, paga solo quando TP01 è debole), non alpha → earns_slot=False, forward-monitor come DD-dampener (diario `2026-06-29-dvol-directional.md`). (B) **INTRADAY ERM** (efficiency-ratio regime momentum sub-daily): **falso positivo da selezione-sull'hold-out** → SCARTATO (vedi gate SELECTION-ON-HOLDOUT; `2026-06-29-intraday-regime.md`). (C) **XSEC-V2 NON-MOMENTUM** su HL (reversal/idio-reversal/low-vol/BAB): solo LOWVOL 19-major regge standalone (FULL/HOLD 1.07) ma deflated-Sharpe 0.13 + storia 2.5a → **DEBOLE/ forward STAT-MODE** (`2026-06-29-xsec-v2-nonmom.md`). (D) **MACRO regime-gate** (equity/credito/oro/tassi → de-risk crypto): **RIDONDANTE col trend** (corr→TP01 0.989; il gate lavora solo nel 2-3% dei giorni, TP01 già flat nei crash) → SCARTATO (`2026-06-29-macro-regime-gate.md`). - **Sweep strategie a 5 thread (2026-06-29) — 0 nuovi sleeve, 1 LEAD che rompe 2 muri su 3.** Ricerca parallela onesta su aree inesplorate (harness `altlib`+`xsec_v2_nonmom`, tutti i gate incl. il nuovo `study_family_honest`): (1) low-risk cross-sectional, (2) momentum-structure vs XS01, (3) meta-allocazione dinamica, (4) segnali ortogonali ETH/BTC, (5) 1-gamba a segnale. Esito: soffitto ~1.3 riconfermato; ogni candidato ucciso dal gate giusto (deflated-Sharpe, is_hedge, selection-on-holdout, sostituzione-XS01, multi-cut). Niente batte/diversifica XS01 (varianti = REDUNDANT); meta-allocazione < pesi fissi (i 4 sleeve già quasi-risk-parity); 1-gamba a segnale = TP01 travestito (trend) o hedge a DSR<0.95. **LEAD forward-monitor:** **STATARB-RESID** (relative-MOMENTUM del residuo ETH−β·BTC, β OLS rolling, 2 gambe, cella vincente **sgn=+1**: le dislocazioni ETH-vs-BTC CONTINUANO a 1d, la MR pura sgn=−1 perde) — primo stream **insieme ortogonale (corr→book 0.027, β-mkt 0.013) ED eseguibile a $600** (haircut ~0, NON STAT-MODE come XS01/opzioni): marginal ADDS, robust_oos, fee-survive 0.30%/gamba; resta sotto soglia solo sull'**edge** (Sharpe 0.84, DSR 0.929 same-sign <0.95). **CABLATO in forward-monitor PAPER:** `scripts/live/paper_statarb.py` (W=45/sgn=+1 congelati, doppio libro MODELED/REAL-$600), nel cron giornaliero accanto a `paper_prevday`; test `tests/test_paper_statarb.py`. Se la finestra forward conferma l'edge è *deployabile* (2 gambe BTC/ETH perp). Altri LEAD: IVOL (idio-vol XS, STAT-MODE), DVOLSPREAD (storia DVOL corta). Diario `2026-06-29-strategy-search-5threads.md`. Script `scripts/research/{xsec_v3_lowrisk,xsec_v3_momstruct,meta_allocation,orthogonal_signals,signal_inout_1leg}.py`. - **Ondata 2026-07-01 (6 filoni multi-agente + scettico) — 0 edge nuovi dai filoni, 1 gate nuovo, e 1 sleeve promosso DALL'ARCHIVIO (GTAA01, sotto nel bullet portafoglio).** Filoni su angoli non coperti dalle ondate precedenti: (1) **funding time-series** BTC/ETH (posizionamento) = SCARTATO — FOLLOW è trend-beta ritardato, FADE shorta il toro, il gate è TP01 travestito (DSR 0.215); **il filone funding è chiuso su 3 lati** (FC01 carry, price-clock, TS). (2) **breadth/internals alt** (51 HL) = SCARTATO ma unico NON-ridondante col trend (corr→TP01 0.40); muore su jackknife (uplift su 1 mese) + DSR 0.433 con ~8 mesi IS → **rivisitabile tra 1-2 anni di storia HL nativa**. (3) **residual momentum XS** (β-hedged, 19 major) = REDUNDANT — cross-section la residualizzazione è un no-op (lo z-score di XS01 rimuove già il mercato); l'edge resta solo nella coppia ETH/BTC (STATARB-RESID). (4) **ri-ottimizzazione pesi + guardia-DD**: il candidato EW-STR (TP30/XS25/VRP15/SKH30, HOLD 2.21→2.35) **refutato dallo scettico come selezione-sull'hold-out di 2° ORDINE** — SKH01/XS01 furono ammessi/affinati *perché* forti su quell'hold-out; pre-2025 ΔSh −0.05, finestre disgiunte −0.12/+0.06/+0.14, percentile 94-100° fra 500 tilt casuali ≈ firma best-of-15. Guardia-DD 5%/0.5: inerte OOS (la diversificazione fa già il lavoro; solo circuit-breaker d'emergenza). (5) **affinamento VRP01** = NON MIGLIORA (l'alpha è tutto nel gate binario IV-rank; gate TP01 = trappola in-sample; **3° fallimento → filone "VRP dentro il modello" esaurito** fino a f di stress reale). (6) **stagionalità cross-sectional HL** = morta allo step statistico (null permutato). **GATE nuovo codificato: `weights_tilt_null`** in `src/portfolio/portfolio.py` (+ `combine_outer` riusabile): ogni proposta di CAMBIO PESI si giudica vs il null dei tilt casuali cap-respecting — gate_pass solo se delta_insample≥0 E percentile < firma best-of-k (necessario, non sufficiente); test `tests/test_weights_tilt_null.py`. ⚠️ Lezione tecnica: `DatetimeIndex.view("int64")` su indici tz-aware non-ns (pandas 2.x) → scala sbagliata → `merge_asof` broadcasta = **look-ahead che `causality_ok` non vede**; usare epoca esplicita in ms (altlib verificato pulito). Diario di sintesi `2026-07-01-strategy-wave-6threads.md` + 6 diari di filone; script `scripts/research/r0701_*.py`. - **Ondata 2026-07-02 (TIMING + CRT, 8 filoni multi-agente + scettico) — 0 nuovi sleeve, 1 finding strutturale (anchor timing-luck di TP01, vedi ⚠️ nel bullet TP01).** Goal: "strategie con timing differenti". (1) **Event-clock bars** (volume/vol/range da 5m, TSMOM/Donchian/EWMA in tempo-informazione): batte il wall-clock a pari segnale/frequenza solo in 4/45 coppie; cella best IS 1.45 → HOLD −0.46, NEUTRAL (corr 0.74 = trend travestito) → SCARTATO: il clock non è dove vive l'edge. (2) **Calendario scadenze Deribit** (expiry weekly/monthly/quarterly ven 08:00 UTC): 0/24 celle a Bonferroni; il drift post-expiry monthly fallisce placebo-weekday e permutation e si INVERTE sul quarterly (dove l'OI massimo dovrebbe amplificarlo); unico pattern robusto = gio→ven negativo, ma è day-of-week (SEA morta) a Sharpe netto ~0 → SCARTATO. (3) **Anchor timing-luck TP01 + tranching**: finding confermato (dettagli nel bullet TP01); tranching K=2/4 = sola riduzione della varianza della STIMA (ΔSharpe n.s., ΔDD ~0.5pt), NO deploy a $600 (il min-order lo degenera in K=1; serve feed intraday fuori path certificato) — rivalutare a ≥5-10k. **Audit d'ancora ESEGUITO su XS01 e SKH01 (stesso giorno): il finding si replica su 3/3 sleeve ancorati** — vedi ⚠️ nei rispettivi bullet e la stima de-luckata del book nel bullet portafoglio; diario `2026-07-02-anchor-audit-xs01-skh01.md`. (4) **Clock lenti (2-7g) + bande isteresi**: fee drag di TP01 = ~0.4%/anno = tetto di ogni risparmio; il lag costa più del risparmio (HOLD ensemble 0.34→0.11 da N=2 a 7); a $600 **il min-order $5 è GIÀ la banda ottimale** (ordini −74% a costo ~0) → nessun cambio al book. (5) **Velocità trend regime-condizionata** (pesi tra orizzonti 30/90/180g vs percentile vol RV/DVOL): pctl 0.71 vs null pesi-statici-casuali = tilt-30d statico travestito (trappola EW-STR); pesi canonici 1/3 confermati → SCARTATO. (6-8) **CRT "Candle Range Theory"** (sweep-and-reclaim 3 candele, mai coperto da MRV/MIC): base 864 trial DSR 0.000 + anchor-flip + short "smart-money" negativo perfino in-sample; multi-TF (4h→15m, 1h→5m, ~10k trade) expectancy negativa ovunque anche a fee zero, e **il ritest è informazione negativa** (pattern con-ritest −40bps vs senza +52bps: aspettarlo seleziona i peggiori); contesto (FVG/equal-highs/sessioni, 22 trial) non salva il fade, cella "Asia" = artefatto anchor-flip → SCARTATO 3/3. Sottoprodotto: sugli stessi livelli prior-day **FOLLOW > FADE ogni anno 2019-26** (conferma indipendente del lead prevday in forward-monitor). Lezione: il timing-luck d'ancora è multiple-testing che il deflated-Sharpe NON conta (candidato gate futuro `anchor_luck_band`). Diario `2026-07-02-timing-crt-wave.md`; script `scripts/research/r0702_*.py` (9 file). - **Ondata 2026-07-02-bis ("video claims": Elliott 3 filoni + Albimarini 2 + capital scaling) — 0 nuovi sleeve, 0 forward-monitor, 1 azione config pendente sul deposito.** Meccanizzazione onesta di claim da video didattici: (1) **Elliott range-cycle** (onda1 compressa→onda3 ampia): rumore, 0/24 celle a Bonferroni, nessuna cella weekly regge a tutte le 7 ancore → SCARTATO. (2) **Confluenza Fibonacci**: vs null ingenui sembra buona (pctl 0.82-1.00), vs null **location-matched** (Fib±jitter: "0.618 vs 0.58?") crolla a 0.39-0.68 = l'apparente edge è la POSIZIONE dei livelli, non i numeri; confluenza FAIL 4/4 → SCARTATO (il null location-matched è IL test per ogni claim su livelli "speciali"). (3) **Tecnica del canale Elliott**: Donchian travestito — non batte il Donchian a pari geometria (corr 0.43-0.53), DSR 0.685, cella in-sample collassa in hold-out (1.40→−0.87), target 1.618 = caso (5/6 celle), anchor-luck di nuovo (4h banda hold [0.35,1.54], 00:00 la migliore) → SCARTATO. (4) **Albimarini double-diagonal** (short T + long T+1, deep OTM, via motore DVOL di VRP01): il condor stessa-scadenza la batte a ogni f (la long T+1 = assicurazione di coda +12/33bps nel tail, ~1bps costo medio, non dominanza); senza gate IV-rank TUTTE le strutture perdono (3ª conferma: l'alpha del VRP è il gate); su Deribit fee-negativa a QUALSIASI size (fee 8 gambe = 194-221% del theta); celle deep-OTM 0-perdite/142 trade = 2° caso "Sharpe implausibile" dopo CC01 → gate `implausible_sharpe` raccomandato con più forza. VRP01 resta superiore su tutta la banda skew → nessun LEAD. (5) **Audit claims** (28 trade, 82% win, PF 5.16, "420%/anno"): consistente con ZERO skill (P=20-45%; il 78.6% delle finestre 6-mesi 1996-2026 lo produce); replay con code reali = rovina 1998/2002/2020 col sizing dichiarato; la diagonale lascia passare il 12-40% della perdita naked. (6) **Capital scaling 600→2-5k** (`r0702_capital_scaling.py`): l'unico vincolo binding è `max_notional_per_asset_usd=300` (a 5k il book live girerebbe al 49% del target) → **al deposito alzare il cap a equity/2** ($1000/$1750/$2500 a 2k/3.5k/5k); min_order $5 da LASCIARE; tranching K=2 non cablare (blocco feed intraday); opzioni ETH eseguibili da ~2.6k ma la regola no-short-vol- da-modello non decade col capitale; XS01 ~20k confermata, CC01 fuori per struttura. Aspettativa onesta col CAGR de-luckato (10-15%): 2k ≈ €0.6-0.8/g, 5k ≈ €1.4-2/g (€50/g resta ≈130k). ⚠️ Lezione pandas: `resample("7D", origin=...)` IGNORA origin (pandas 2.x, solo RuntimeWarning) → bande d'ancora weekly finte; usare `"168h"`. Diario `2026-07-02-elliott-albimarini-capital.md`; script `scripts/research/r0702_{ell_*,alb_*,capital_scaling}.py` (6 file). - **Video-claim "CRT top-down multi-TF, 74% win rate" — SCARTATO (2026-07-07): il 74% è un KNOB, non un edge.** `scripts/research/r0707_crt_topdown.py`. Metodo ICT/SMC top-down (H1 setup CRT → M15 struttura/FVG → M5 conferma → M1 entry) con uscita parziale-70/80%-a-1.5R + break-even + runner verso prev-daily high/low. Il setup H1 CRT è **già triplo-refutato** (onda 2026-07-02: base DSR 0.000, MTF expectancy neg. ovunque "il ritest è informazione negativa", contesto/FVG peggiora, fadeFADE riconfermato (3ª volta); a $600 l'esecuzione non è il vincolo. (4) **WK-OVERLAY** (lato eseguibile): **il weekend porta il 38% del gross di TP01 nel 31% del tempo** (positivo ogni anno) → TP01-weekend-flat è **attivamente dannoso** (ΔSh −0.46, P(danno)=1.000 bootstrap, banda 6/6 negativa, non-fee); half = de-levering pagato con fee (k=0.755 lo domina); boost ×1.5 n.s. → **regola: non de-esporre il weekend del book; ogni futura proposta "risk-off weekend" parte REFUTED** salvo null de-levering superato. Chiusura di famiglia: SEA + expiry + event-clock + 375 trial weekend ⇒ su BTC/ETH nessun edge di calendario/finestra oraria; riaprire solo con meccanismo non-calendario. Book/pesi INVARIATI. Diario `2026-07-17-weekend-window.md`; script `scripts/research/r0717_wk_{drift,cond,intra,overlay}.py`. - **Ondata 2026-07-25 (MAT01 + generalizzazione STATARB) — 0 sleeve nuovi, 1 DIFETTO DI DATO sul libro live trovato e riparato.** Diario `2026-07-25-mat01-statarb-generalization.md`. (1) **MAT01** (`r0725_mat01_multiasset_trend.py`, `r0725_mat01b_regime.py`): allargare il trend difensivo da 6 a **18 ETF multi-asset-class** (i 12 su disco dal 22/06, mai usati per un trend) a meccanismo GTAA CONGELATO = **SCARTATO**. MAT18 perde 3/4 finestre disgiunte; **a PARI VOL il suo minor DD si inverte** (−20.6% vs −15.4%) → era solo de-levering (**3ª occorrenza del null de-levering** dopo VRP-DD e TP01×DVOL: e' il primo test da fare su ogni claim "meno drawdown"); corr→crypto invariata (0.110 vs 0.116) → zero guadagno di diversificazione; book 2.22→2.19. **Risultato positivo da conservare:** la curva d'ampiezza e' monotona (mediana OOS 0.44 a k=1 → **0.80 a k=18**, DD −16.0%→−6.9%, satura a k≈10-12) — l'ampiezza E' un meccanismo reale, ma **GTAA6 sta gia' al 95° pctl dei 6-subset casuali** (e non e' cherry-picked: contiene TLT, il peggiore dei 18) → **niente piu' ampiezza da raccogliere su questo sleeve**. (2) **STATARB-MULTI** (`r0725_statarb_multi.py`): meccanismo congelato (W=45, sgn=+1) su tutte le **50 coppie alt/BTC** HL, out-of-pair-sample. REGGE: 82% Sharpe>0 (media 0.38), **0/50 degeneri** (mono 53% → non e' la statica short-alt travestita), perm p<0.05 nel 18% (atteso 5%), paniere Sharpe 0.82 / DD −6.0% / corr XS01 0.207. **E ETH/BTC e' al rango 22/50 (58° pctl): la coppia scopritrice NON e' un outlier** → per il gate 27/09 l'ipotesi "fortuna di una coppia" e' refutata. NON e' uno sleeve: ampiezza **effettiva ~4.5** (corr media 0.204, gamba BTC condivisa), paniere **IC95% [−0.12,1.72], t 1.31** (non distinguibile da zero a 2.6 anni), uplift −0.11 vs il null a priori "sempre short alt vs BTC", 51 gambe = STAT-MODE. ⚠ Errore di metodo corretto in-sessione: il primo null statico usava `sign(mean(segnale))` sull'intero campione = **look-ahead**; rifatto causale (media espandente) + a priori. (3) **STATARB-EQ** (`r0725_statarb_eq.py`): stesso meccanismo su **12 coppie ETF a priori, 28.5 anni, ampiezza effettiva 9.9** = **SCARTATO**. Paniere Sharpe **−1.00** (IC95% [−1.36,−0.64], t −5.33), negativo in **4/4 decadi**, 0% coppie a perm p<0.05. **Ma la lettura sta nel LORDO (−0.17, non −1.00): due terzi sono drag di turnover (0.40/g)** → **non esiste strategia specchio** (sgn=−1 sarebbe lorda +0.17, netta −0.16). Il segno lordo dice che **sulle azioni il residuo REVERTE debolmente mentre sul crypto CONTINUA** → il meccanismo e' plausibilmente crypto-specifico. Inferenza onesta: non prova che il crypto sia falso, ma il gate 27/09 **non puo' appoggiarsi** all'argomento "fenomeno universale". (4) **Addendum PRE-REGISTRATO al gate STATARB** (registrato a forward-day 26/90, 64g prima della decisione): `r0724_statarb_deploy_gate.py` riporta ora anche lo Sharpe della **statica sempre-short a pari vol-target sulla stessa finestra**. **Soglie del 24/07 NON toccate** (diagnostica non binding; renderla binding e' decisione dell'operatore). Lettura odierna (26 barre): STATARB +5.70 vs benchmark **−4.98**, e la posizione corrente e' LONG lo spread = opposta alla statica → la finestra forward non e' spiegata dal beta di regime. - **Ondata 2026-07-26-bis (TP01 su barra parziale + i 2 gate mai costruiti) — 0 sleeve nuovi, 1 audit sul libro live, 2 gate codificati, 1 falso positivo MIO su uno sleeve in produzione.** Script `r0726_tp01_partial_day.py` + `r0726_gates_retro.py`, test `tests/test_gates_implausible_anchor.py` (13), diario `2026-07-26-wave-tp01-partial-gates.md`. **Book/pesi/cron/config INVARIATI.** (1) **T1 — anche TP01 legge una barra giornaliera PARZIALE nel live, ma non conta.** Stesso fatto strutturale di SKH01: `resample_tf` non scarta il giorno in corso e `current_target` prende `[-1]`; il feed si ricostruisce alle 00:30 UTC → tutto il giorno il book vede oggi come **1 barra oraria su 24** (verificato `barre1h=1/24`). Docstring "ultima barra CHIUSA" **falso**, corretto (3ª volta in 2 giorni che un docstring di produzione dichiara una causalita' che il codice non ha). Tre path a un grado di liberta' per volta, 24 ancore, **differenze appaiate**: *barra parziale* ΔFULL **−0.031** (pos. 7/24) / ΔHOLD **+0.118** (pos. 19/24); *ritardo d'esecuzione 1h* **−0.004** (11/24 = moneta); leva gonfiata **+0.4%**. → **trascurabile, nessun cambio al live.** ⚠️ All'ancora canonica sembra peggio del vero: a offset 0 la parziale costa **−0.230** di hold-out = **il minimo dell'intera banda** (mediana +0.118) → guardando solo l'ancora canonica avrei concluso "il live degrada TP01": speculare alla lezione del 26/07 (li' l'ancora canonica *nascondeva* un vantaggio, qui *inventa* un danno). **REGOLA NUOVA (il risultato trasferibile):** la parzialita' dell'ultima barra conta **in proporzione a quanto il segnale pesa la barra piu' recente**. SKH01 = Donchian breakout su 230m, la barra corrente E' il segnale → **+0.38**; TP01 = TSMOM 30/90/180g, l'ora mancante e' 1/24 di UNA osservazione su 30-180 → **±0.03**. **La conclusione non si trasferisce fra sleeve.** (2) **T2 — `implausible_sharpe` e `anchor_luck_band` CODIFICATI in `altlib.py`** (debito raccomandato 3 volte — 26/06 CC01, 02/07 Albimarini "con piu' forza" — e mai scritto). `implausible_sharpe`: Sharpe>3, perdite/attive<2%, Calmar>20 o maxDD~0, **regola del tre** (0 perdite su N → tasso vero fino a 3/N: e' perche' "0/142" non si legge "senza rischio"). `anchor_luck_band`: la griglia d'ancore NON e' una griglia di parametri → **il deflated-Sharpe non la conta**; riporta stima onesta = **mediana della banda** e fortuna = canonica − mediana. `anchor_luck_delta`: **mediana delle differenze appaiate** (codifica l'errore del 26/07). ⚠️ **Il gate ha segnalato VRP01 e il difetto era MIO:** perdite contate su TUTTE le barre, ma VRP01 e' settimanale su griglia giornaliera = **94.2% di zeri** → "0.96%, coda assente" su uno sleeve **in produzione**; sulle barre **ATTIVE** e' **16.5%**, la forma giusta di un credit spread a rischio definito. **E la lezione era gia' cablata il giorno prima** nel monitor DVOLSPREAD ("barre attive, non giorni di calendario") — imparata in un contesto, non applicata nell'altro. Zeri per sleeve: VRP01 94.2 / SKH01 87.6 / XS01 39.6 / GTAA01 31.9 / TP01 30.7%. **Applicazione retroattiva 7/7 — tutti ok:** TP01 1.29, XS01 1.36, VRP01 1.08, SKH01 1.45, GTAA01 1.01, **XSR01 1.79 (DD 2.5% ma 47.8% di barre attive in perdita → il DD basso e' vol bassa + dollar-neutrality, NON una coda mancante: per il gate del 23/10 il rischio #1 resta lo slippage)**, DVOLSPREAD 0.68. Controlli positivi obbligatori superati (firme CC01 e deep-OTM segnalate, rumore Sh 0.62 no) — *un gate che non segnala nulla puo' essere semplicemente rotto*. ✅ **Replica indipendente del finding d'ancora del 02/07:** il gate applicato alla cieca a TP01 ritrova canonica **+0.237 = 92° pctl** delle 24, **mediana onesta +0.056**, banda [−0.087,+0.247], fortuna +0.182 — contro mediana 0.04 / banda [−0.13,+0.30] misurate il 02/07 con implementazione SEPARATA. **L'hold-out onesto di TP01 e' ~+0.05, non 0.31** (il valore del sleeve resta il taglio del DD ~6× vs buy&hold, che non e' ancorato). (3) ~~**NON fatto e perche':** il book sul path live e' bloccato da una **incompatibilita' di lenti** — il simulatore SKH01 compone per-trade a nozionale unitario, lo sleeve e' vol-targeted. Follow-up dichiarato: serve la versione vol-targeted del path live di SKH01.~~ ✅ **CHIUSO 2026-07-26 — E IL BLOCCO NON ESISTEVA: la premessa era FALSA.** Lo sleeve SKH01 **non e' vol-targeted** (`backtest_signals(..., leverage=1.0, position_size=1.0)`, nessun `target_vol` nel sorgente, e `sim_equity(canonical)` riproduce `backtest_signals` a **max|diff| = 0.0**): le due lenti erano gia' la stessa cosa. Il 20.7% di vol realizzata dello sleeve — probabilmente cio' che aveva suggerito "vol-target 20%" — e' un **prodotto** della strategia (uscite % asimmetriche + poco tempo a mercato), non un parametro; **SKH01 e' l'unica delle 5 a NON essere vol-targeted**, il contrario di quanto si credeva. Vedi bullet dedicato in fondo e diario `2026-07-26-skh-live-book-deluck.md`. **REGOLA: un blocco dichiarato e' un'ipotesi, non un fatto — si ri-verifica prima di costruirci sopra o di rimandare** (qui: tre sessioni di follow-up rimandato contro due minuti di verifica). - ⚠️ **LEAVE-ONE-OUT DEL BOOK DE-LUCKATO (2026-07-26, 3° filone del giorno) — la classifica dei contributi si RIBALTA su 2 metriche su 3, e la stima de-luckata del book era ottimista.** Domanda: *"quale sleeve terrei?"*. Script `scripts/research/r0726_loo_deluck.py`, test `tests/test_loo_deluck.py` (9), diario `2026-07-26-loo-deluck.md`. **Book/pesi/cron/config INVARIATI** (non è un gate sui pesi: quello resta `weights_tilt_null`). (1) **Il metodo:** un leave-one-out **è un Δ**, quindi eredita la fortuna d'ancora come ogni Δ (lezione 26/07). Con 4 sleeve su 5 ancorati il problema è congiunto → 2000 estrazioni uniformi indipendenti sullo spazio 24×10×7×23×5, book completo + 5 LOO **alla stessa configurazione**, statistica = **mediana delle differenze appaiate**. Sanity bit-exact 5/5 (`max|dif| = 0.0`) sulle repliche ancorate — quattro riusate dagli audit 02/07-03/07, solo la fase di GTAA01 è nuova. (2) **Contributi de-luckati** (mediana, e **frazione di estrazioni positive** — che conta più della mediana): **TP01 +0.390 FULL (100%)** = quasi 3× il secondo, e il canonico lo **SOTTOSTIMAVA** (+0.280 al 5.8° pctl); SKH01 +0.142 (91%), XS01 +0.125 (99.9%), VRP01 +0.122 (100%), GTAA01 +0.115 (100%). (3) **Due giudizi ribaltati rispetto alla lente canonica.** **SKH01 non è il motore del book**: l'ancora regala **2/3 del FULL** (+0.43→+0.14), **70% dell'hold-out** (+0.65→+0.19), **80% della protezione DD** (+1.64pp→+0.32pp) → de-luckato è **il meno affidabile dei cinque**. **GTAA01 è l'unico positivo nel 100% delle estrazioni su TUTTE E TRE le metriche** e il miglior protettore di DD (+2.0pp, doppio del secondo), senza fortuna da restituire (canonico *sotto* la mediana su FULL e DD). ⚠️ Ma **attribuzione ≠ eseguibilità**: sotto `GTAA_MIN_CAPITAL` $3k resta non deployabile, e la nota del 25/07 (€0.50/g sopra il risk-free con maxDD 10% a $10k) è intatta. (4) **TP01: hold-out negativo −0.200, e NON è artefatto d'ancora** (negativo nel **99.1%** delle configurazioni) — mentre sul FULL è il maggior contributore. È la firma dell'assicurazione, misurata: paga premio negli anni senza incendio, riprende tutto sul campione che contiene il 2022. **Regola: uno sleeve difensivo si giudica sul sinistro, non sul premio** — l'hold-out negativo non è un argomento per ridurlo. **XS01: protezione DD ESATTAMENTE ZERO** (mediana 0.000, positiva nel 43% = moneta) → è un diversificatore di **rendimento, non di rischio**; conta perché sul canale funded il vincolo binding è il DD (25/07 §4). **VRP01: 2ª conferma di zero fortuna** (canonico al 1.8° pctl sul FULL = numeri di ammissione *conservativi*). (5) **Contrappeso dovuto a SKH01:** il de-luck lo penalizza sul path **backtest**, ma il path **live** è misurato migliore su entrambi i lati (ingressi +0.38, uscite +0.081) → **vale meno dei suoi numeri di ammissione e più di questa tabella**; quantificarlo resta il follow-up bloccato (serve la versione vol-targeted del path live). ⚠️ **Errore di stampa catturato:** il primo output dava `pctl 100%` per l'hold-out del book — arrotondamento di 99.55% con `%.0f`. **Un percentile stampato a 0 decimali mente esattamente agli estremi, che sono l'unico posto dove lo si legge.** Verificato a mano (9 estrazioni su 2000 battono la canonica), formato portato a 1 decimale. - ✅ **FOLLOW-UP SKH01 "vol-targeted" CHIUSO (2026-07-26, 4° filone) — il blocco non esisteva, e il fattore de-luck ×0.6 era troppo severo del 31-34%.** Script `r0726_skh_sigcache.py` (cache), `r0726_skh_live_book.py` (misura), `r0726_deluck_factor.py` (decomposizione), `r0726_capwall_refresh.py` (muri); test `tests/test_skh_live_book.py` (8); diario `2026-07-26-skh-live-book-deluck.md`. **Book/pesi/cron/config INVARIATI.** (1) **La premessa era falsa** — vedi il bullet dell'ondata 26/07-bis: SKH01 **non e' vol-targeted**, le due lenti erano gia' identiche (`sim_equity(canonical)` == `backtest_signals` a max|diff| = 0.0). Test permanente `test_lente_sleeve_uguale_a_quella_del_simulatore`: se qualcuno aggiunge un vol-target allo sleeve, la premessa torna vera e **il test deve rompersi** invece di far passare numeri non piu' validi. (2) **Ingressi live vs backtest, de-luckato a 8 offset** (sottocampione uniforme a priori: la griglia piena a 23 costa ~9 min per asset×offset, fuori portata su 2 core col cron live). Sanity **120/120** bin con ingresso ricostruiti. **Il numero del 26/07 era ~4× troppo grande:** like-with-like (mediana PER-ASSET) **+0.38 su 3 offset → +0.097 su 8**, e "6/6 non negativi" → **13/16**. A livello di sleeve 50/50 la mediana appaiata e' **+0.112, positiva 8/8**. ⚠️ Le due grandezze (per-asset e sleeve 50/50) **non sono la stessa cosa** — nel book entra la seconda, dove la diversificazione BTC/ETH cambia il denominatore. (3) **A livello di BOOK: Sharpe ≈ monetina, drift certo.** dSh FULL +0.048 (>0 nel 79.3%), dSh HOLD +0.051 (51.2%), **d drift +0.73pp (>0 nel 100.0%)**. Meccanismo: l'ingresso intra-bin prende un prezzo migliore ma i falsi ingressi aggiungono churn (530-605 trade live vs 411-484) → vol e ritorno salgono insieme. **REGOLA: chiedersi QUALE grandezza entra nella decisione prima di misurare** — qui il ×0.6 e' sul drift, quindi lo Sharpe non era la metrica. (4) **Il ×0.6 decomposto e misurato.** (a) fortuna d'ancora **sul drift**: **×0.874** (5-sleeve) / **×0.890** (book live) — e la **vol e' invariata** fra le ancore (7.80→7.76%), la fortuna sta tutta nel drift; (b) path live: **non-negativo ovunque** (uscite +0.081 Sh, ingressi +0.73pp, TP01 trascurabile). Il ×0.6 implicava un residuo **×0.687** attribuito al live oltre l'ancora, che nessuna misura sostiene → **FATTORE ONESTO ×0.87-0.91 (5-sleeve), ≥×0.89 (book live)**. Il sospetto registrato il 25/07 ("conta due volte la degradazione SKH01") e' **confermato quantitativamente**. **REGOLA: un fattore correttivo scelto a occhio va DECOMPOSTO prima di accettarlo o rifiutarlo** — il ×0.6 non era sbagliato, era due fattori moltiplicati insieme di cui uno contato due volte. (5) ❌ **Ipotesi MIA nata e refutata nella stessa sessione:** che la grid timing-luck di SKH01 (audit 02/07) fosse un artefatto della lente a chiusura-di-bin, perche' il live valuta ogni ora e non e' ancorato al confine del bin. Dispersione fra gli 8 offset: **LIVE/CANONICO = 1.59×**, cioe' il live e' **piu'** disperso, non meno → **l'audit del 02/07 resta valido com'e'**. L'ipotesi nasceva da **2** offset, si e' incrinata a 4 (1.24×), chiusa a 8. **REGOLA: due punti non fanno una tendenza nemmeno quando la meccanica sembra spiegarla.** (6) ⚠️ **Trovato per strada:** `simulate()` in `r0726_skh_partial_entry.py` **non e' mai chiamata da `main()`** — i numeri headline del diario del 26/07 vennero da una corsa ad hoc mai committata. Ora il driver e' committato (`r0726_skh_live_book.py`). *Un numero pubblicato in un diario deve avere uno script committato che lo riproduce.* - 🌊 **QUARTA ONDATA 2026-08-23 (5 filoni, `research/wave-0822`) — 0 candidati, 1 lead RIDEFINITO, 1 premessa MIA falsificata, e la scorta di DATI dichiarata esaurita.** Registro `docs/research/RESULTS-0822.md` §41-45. **Libro, pesi, cron, config INVARIATI.** 🚨 **(1) §41 TP01-SIZE — in questa famiglia la selezione in-sample e' ANTI-correlata col futuro.** *Esiste una size che risponde alla CONVINZIONE, a pari vol realizzata?* 60 celle dichiarate prima, 24 ancore. **`Spearman(ShIS, ShHOLD) = −0,527` (p<0,001)**: scegliere in-sample e' **peggio di una moneta**, ed e' meccanismo, non rumore — `Spearman(rho, ShHOLD) = +1,000` a tutti e sei i q (in hold-out l'ottimo e' al bordo) mentre in-sample la curva e' **a gobba** con ottimo interno. **La convinzione e' informativa in-sample e ANTI-informativa in hold-out** (BTC hold-out: convinzione debole Sh **+2,20** contro piena **−0,06**) → l'unica cella con guadagno hold-out robusto e' esattamente quella selezionabile **solo guardando l'hold-out**. **Non esiste una cella proponibile.** Il meglio della griglia vale **+0,30pp** di CAGR iso-vol e il maxDD di libro peggiora a **24 ancore su 24** — cioe' proprio cio' per cui TP01 esiste. 🚨 **CORREZIONE A UNA MIA PREMESSA, verificata al sorgente: il bucket di convinzione 2/3 NON ESISTE.** `tsmom_blend` media **tre `np.sign(...)`** → direzione in **{−1,−1/3,+1/3,+1}**, dopo il clip long-flat in **{0, 1/3, 1}** (BTC 44,2/24,7/31,1%). Trovato da **due agenti indipendenti**. **Conseguenza:** potenza `c^p`, floor affine e soglia sono **la stessa cella riparametrizzata** — la famiglia della convinzione ha **UN** grado di liberta', non tre. 📌 **Null del RE-LEVERING, forma piu' pura mai misurata (6ª occorrenza, prima col segno rovesciato):** togliere il vol-targeting fa **CAGR 16,32% → 46,75% (+186%)** e a iso-vol **−2,40pp**. **Era tutta leva.** ⚠️ **Fatto sull'harness:** `altlib.tp01_baseline_daily()` **NON e' bit-exact col sleeve** — 1 ulp su **68,5%** dei giorni, perche' `_to_daily` fa `(1+r).resample("1D").prod()-1`, no-op **algebrico** ma non in virgola mobile. *"Bit-exact vs altlib" non e' un controllo ottenibile.* ❌ **(2) §42 TP01-LS — la short del trend a 1d SCARTATA, e piu' nettamente dell'attesa.** Meccanismo congelato, un solo grado di liberta' (floor da 0 a −1); ✅ replica bit-exact a 4 vie (**floor=−1 == `CANONICAL(long_only=False)`**, `max|diff| = 0.0`). Esito: **−1,91%/anno di drift in 0/24 ancore**, **gate iso-vol FAIL 3/3** (non e' leva travestita: alza la vol **e** abbassa il ritorno), **maxDD +8,80pp in 24/24**, NEUTRAL con alpha −2,60%/anno, e **a fee ZERO** 1,338 contro 0,904 → *non e' morte-per-fee, l'edge lordo non c'e'*. **L'attesa a priori ("sara' il 2022") e' confermata e superata: 2/8 anni positivi, e SENZA il 2022 il divario RADDOPPIA** (dShFULL −0,406, iso-vol −7,44%) — *il 2022 non e' l'anno che regge la tesi, e' l'unico che la tiene a galla a meta'*. **Non selezionabile**: `select_cell_insample` sceglie il canonico. ⚠️ L'unica cosa a favore (**dShHOLD +0,292 in 23/24**) **all'ancora canonica vale −0,008** = caso **speculare** della lezione del 26/07 (li' l'ancora canonica inventava un danno, qui ne nasconde un vantaggio). 📌 **Trovato per strada: `src/live/book.py` contiene `max(tp_frac, 0.0)` — il long-flat e' cablato anche nell'ESECUTORE**, non solo in `CANONICAL`. 🚨 **(3) §43 DATA-UNUSED — LA SCORTA DI DATI DEL PROGETTO E' ESAURITA.** Inventario su **647 file `.py`** (`Old/` escluso): **ogni dataset con storia vera e' gia' stato analizzato almeno una volta**; cio' che resta non letto e' **telemetria a finestra corta (30-113 giorni)**, con una sola eccezione — `external/coinmetrics/` (**26 colonne su 31 mai lette**, storia dal 2018). Misurato prima di usarlo che il dato **fosse** nuovo: il flusso **netto** e' `corr +0,9993` con la derivata dello stock gia' ucciso il 24/07, il **lordo** e' ortogonale (`+0,035`) perche' **il 94% del flusso si cancella**. E perde: **massimo atteso dal PURO RUMORE su 36 trial = Sharpe 1,009, il candidato fa 0,951 — sotto**; DSR 0,437; multi-cut negativo 7/7 anni. 📌 **METODO RIUSABILE: mettere nella griglia una variabile che si SA gia' morta** trasforma *"il candidato perde"* in *"il dato non contiene nient'altro di selezionabile"* — qui la selezione in-sample e' **tornata sul controllo negativo**. E' l'unica forma in cui un inventario puo' concludere qualcosa di positivo su un'assenza. ⚠️ **Conferma diretta del §10** catturata dall'agente su se stesso: il pool *"N=12"* del deflated-Sharpe erano **le 12 celle MIGLIORI** e faceva **PASSARE** il candidato a **0,975** invece di 0,678. ❌ **(4) §44 DEPOSIT-TIMING — il timing dei bonifici non paga, 0/12 celle in OGNI lente** (€500/m, €250/m, IID, drift dimezzato). ✅ Replica 4/4 prima di ogni delta, fra cui P0 vs `PN.accumula` a **`max|dif| = 0.0`** su capitale **e** giorno d'arrivo. 📌 **Il segnale FA quello che promette e perde lo stesso:** dip 20% compra al **0,494** del livello medio del piatto (**51% piu' in basso**) e arriva al capitale-rendita nel **6,3%** dei casi contro l'**85,4%** del piatto — *comprare meglio e comprare tardi sono la stessa mossa*. E sotto soglia bassa **si ribalta**: dip 5% compra a **1,009**, cioe' **piu' in alto** (su una serie che sale, una condizione poco profonda non compra il calo, **ritarda dentro la salita**). 📌 **L'asimmetria e' la misura: un rialzo del 20% dal minimo arriva in 16 giorni, un ribasso del 20% dal massimo in 3.682.** *Il costo non e' scommettere sul lato sbagliato, e' mettere una **condizione rara** davanti a un bonifico — in qualunque direzione.* Rischio di venue **separato** dal timing: tenere i soldi fuori vale +2,4pp a p=1% contro −15,7pp di penalita' di timing, e **`P(libro azzerato)` e' IDENTICA per tutte le politiche** (21,6%) — *il conto salta comunque, cambia quanto c'e' sopra*; la protezione si compra con un **secondo conto**. ⚠️ Due errori dell'agente catturati da un controllo: un diagnostico che diceva *"il buy-the-dip contiene previsione"* (+11,5%) e che **sotto IID vale +14,9%**, cioe' **piu' grande** → meccanico; e lo specchio anti-dip, che **si legge sulla colonna dell'ATTESA, non su quella del segno** (P4 e' piatto perche' la sua condizione e' quasi sempre gia' vera). **Ordine di grandezza: la migliore politica di timing vale −0,1pp, dentro il rumore MC di 2,0pp; €250 → €500 al mese vale +71pp (14% → 85%).** ⚠️ **(5) §45 SPOT-NETTING — il lead dello spot REGGE, ma non per la ragione per cui il filone e' stato aperto.** Il margine **non e' il vincolo**: BTC/ETH sono `in_cross_collateral_pool` (11 valute su 51), lo spot ha `max_leverage: 10` (⇒ vive nel conto marginato) e nel caso peggiore la **copertura e' 50,0x, invariante al capitale** — anche valutando lo spot **zero** come collaterale. **L'haircut non e' leggibile e non e' binding**: *unico caso in cui "non lo so" e "non conta" coincidono, e va detto in quest'ordine.* 🚨 **A bloccarlo e' IL CODICE, non Deribit:** `src/live/shadow.py::_equity` legge **solo** `account_summary("USDC")` → con $477 in spot il libro **leggerebbe $159 invece di $636 (25%)** e il riconciliatore **ricomprerebbe** la gamba. *Non e' un cambio di strumento, e' un cambio del percorso di SIZING del live.* 🚨 **La separazione delle gambe non vale nulla, su tutti e tre gli assi:** (i) **T1 sbloccato e' un DECLASSAMENTO** — `onbook_tp − hourly` **riproduce** il pubblicato (+0,051/+0,057) ma contro il path che il live **gia' percorre** fa **−0,048 FULL (6/23)** *(conferma indipendente della decisione del 26/07, per un'altra strada)*; (ii) il **netting perso RISPARMIA** commissioni (**$4,34 → $2,97/anno, −0,216%**) — la stima "1-2%" di §39 era **alta di un ordine di grandezza** — e le ore a **segni opposti** sono lo **0,61%** della storia; (iii) meno ordini **non e' meglio**: il tracking peggiora del **+12%** (5ª occorrenza della lezione *"banda in valuta assoluta"*). **Il valore e' il FUNDING e basta: lordo +1,58%/anno → netto [+1,55%, +1,66%]**, [+1,33%, +1,44%] se lo spot passasse a 3,50 bps, **+0,50% nello scenario fiscale sfavorevole**. Il costo vero d'esecuzione e' lo **spread** (perp a **un tick**, spot 1,5-3,1 bps) → **[−0,034%, +0,077%]/anno**, ampiezza 7% del lead: **l'esecuzione non decide questo lead**. ❌ **Ipotesi dell'agente nata e refutata nel filone:** l'`apr 3,40` di USDC in `get_currencies` costerebbe fino a **2,55%/anno** — ma su **6 run col conto flat (il piu' lungo 257 giri orari)** l'equity e' **invariata al centesimo** ⇒ **< 0,029%/anno**. *L'obiezione e' morta e il lead non deve pagarla.* 🚨 **Due costi NUOVI mai contati, che la separazione introduce:** (a) se i derivati sono `c-quater` i **comparti fiscali si SEPARANO** → le minusvalenze del perp (SKH01) smetterebbero di compensare le plusvalenze spot (TP01); (b) il disaster-SL oggi protegge la posizione **netta**: separando resterebbe **solo sul perp**, e in un blackout **TP01 resterebbe long al 75% del conto senza stop**. (Di contro, lo spot **non si liquida**: esce dal perimetro il 75% del libro.) ⚠️ E `fee_watch` **non vedrebbe** una gamba spot (deriva `INSTRUMENTS` da `BOOK_INSTRUMENT`, il difetto corretto il 21/08); `convenzione('BTC_USDC')` ritorna **`'ignota'`** → servirebbe una **terza famiglia 'spot'**. *La ragione per sorvegliarlo non e' che la fee lo ucciderebbe (perde il 14% del guadagno e sopravvive), e' che oggi nessuno se ne accorgerebbe.* 📌 **IL PROSSIMO PASSO NON E' UN BACKTEST: e' la domanda al commercialista** (gia' aperta dal 07/08) **e un acquisto di prova da $7,73** — le tre cose non determinabili senza conto reale (haircut, se `equity` USDC includa i saldi BTC/ETH, se `get_positions` ritorni lo spot) si risolvono cosi'. **E' un ordine ⇒ decisione dell'operatore.** 📌 **(6) LA RIGA DI SINTESI.** Quattro filoni su cinque SCARTATI, il quinto ridimensionato a *"vale il funding e basta"*. Ma la misura piu' grande dell'ondata resta quella di §44: **la migliore politica di timing vale −0,1pp mentre passare da €250 a €500 al mese vale +71pp**. **Con questa sono 45 filoni in due giorni e 0 candidati promossi: la ricerca ha smesso di essere il vincolo binding il 26/07, e sette ondate lo hanno CONFERMATO invece che ribaltarlo.** - ⚖️ **RIVALUTAZIONE DELLA STRATEGIA (2026-07-26, fine giornata) — 0 cambi, e il peso 75/25 confermato per la TERZA volta.** Script `r0726_reeval_live_weight.py`, test `tests/test_reeval_live_weight.py` (6), diario `2026-07-26-reeval-strategia.md`. **Book, pesi, cron, config INVARIATI.** (1) **Solo UNA delle sei misure del giorno apriva una decisione**, e per una ragione precisa: il peso 75/25 fu confermato il 24/07 con la lente **hourly**, che il 26/07 e' risultata pessimistica su ENTRAMBI i lati di SKH01 (uscite +0.081, ingressi +0.048 di Sharpe di book) → *se SKH01 vale piu' di come e' stato pesato, 0.25 e' ancora giusto?* Contro tirava il LOO de-luckato dello stesso giorno (SKH01 = il meno affidabile dei cinque). **Due correzioni in versi opposti: si misura, non si deduce.** (2) **Misura** (path live `intra_entry=True`, 8 offset, mediana delle differenze appaiate): argmax a **w=0.35** e 0.30-0.40 batte 0.25 nell'**88%** degli offset — il segnale c'e' ed e' nel verso previsto. Ma **plateau entro 0.05 = [0.25...0.50]** (il peso live e' dentro) e **`weights_tilt_null` FALLISCE** (delta_insample −0.0026, gate_pass False). (3) ⚠️ **Il motivo vero sta in cio' che la mediana nasconde: il guadagno e' tutto nella coda ALTA.** p10 per peso: 1.463 (0.25) / 1.465 (0.30) / 1.455 (0.35) / 1.435 (0.40) / 1.374 (0.50) mentre il p90 sale monotono 1.915→2.064. **Alzare SKH01 non compra Sharpe, compra dipendenza da quale ancora ti e' capitata** (banda da 0.45 a 0.69). Coerente con altre due misure indipendenti: SKH01 ha la frazione d'ancora piu' grande da restituire (LOO) ed e' **4x** piu' fee-sensibile (curva fee). **Tre misure indipendenti: SKH01 e' la gamba fragile, e 0.25 sta all'estremo prudente della regione robusta.** (4) 📌 **La rivalutazione che conta non e' sulla strategia.** Ordini di grandezza a confronto: ottimizzare il peso = **+0.030 Sharpe** (gate fallito); versare **€250/mese invece di €0** = da **mai** a **16.2 anni** (P(entro 20a) 92%); perdere il conto Deribit a p=1% = **−18%** di probabilita' di arrivare, ripartendo da zero. **Il book e' dentro il suo plateau su ogni asse misurato: la ricerca ha smesso di essere il vincolo binding.** I vincoli binding oggi sono **capitale che entra** e **conto che non sparisce**. (Non significa che la ricerca sia finita — significa che il margine residuo vale centesimi di Sharpe contro leve che valgono il risultato.) **REGOLE:** (a) una rivalutazione parte dall'elenco di cosa **cambia una decisione**, non dal riassunto di cosa si e' scoperto; (b) quando due correzioni puntano in versi opposti **si misura** (a occhio si poteva argomentare qualunque cosa); (c) **un argmax dentro un plateau non e' una decisione**, e la mediana da sola puo' nascondere il fatto decisivo (qui: p90 su, p10 giu'); (d) quando le leve hanno ordini di grandezza diversi **dirlo**, o si lavora molto senza cambiare niente; (e) rivalutare **non** vuol dire anticipare i gate pre-registrati — anticiparli e' selezione sull'hold-out. - ❌ **SOL COME TERZA GAMBA DIREZIONALE — SCARTATO (2026-08-22).** `scripts/research/r0822_sol_leg.py`, test `tests/test_sol_leg.py` (5), diario `2026-08-22-sol-terza-gamba.md`. **Book/pesi/universo direzionale/cron INVARIATI.** Nato da *"hai gia' analizzato XRP/SOL/UNI?"*: si', ma sempre dentro panieri cross-sectional su HL — **SOL e' l'unico dei tre eseguibile su Deribit** e TP01/SKH01 non erano mai stati misurati su di lui. Ipotesi a priori registrata **prima**: diluisce (trend multi-asset 19/06, corr 0.74). Confermata. (1) **Dato**: storico ricostruito (`SOL/USDC:USDC`, 466.776 barre 5m dal 2022-03-15, 0 gap) e certificato → conferma esatta del 19/06: **>1% da Coinbase nell'1.3% (2022) / 0.6% (2023) delle barre**, med 8.1→3.9 bps dal 2022 al 2026; flat 1h 0.2% (ok), 5m **20.8%** (run 177 barre). Da qui **due lenti dichiarate prima di misurare**: L-FULL 2022-03+ e L-PULITA 2024+. (2) **Gambe sole** (meccanismi CONGELATI): TP01 SOL Sh 0.91 / **hold-out −0.24**; SKH01 SOL Sh 0.51 / **maxDD 40.5%**. ⚠️ **SKH01-V2-DD fu SELEZIONATA (23/06) sul criterio maxDD<30%** (BTC 21%, ETH 27%): su un asset nuovo **il criterio per cui la variante esiste fallisce** → era una proprieta' dei due asset di taratura, non del meccanismo. (3) **Book, 24 ancore, mediana delle differenze APPAIATE:** dSharpe hold-out **−0.166, >0 in 0/24 ancore in ENTRAMBE le lenti**; L-PULITA dSharpe FULL −0.099 (0/24) e dCAGR −1.34pp (0/24); L-FULL dSharpe FULL +0.094 (24/24) ma dCAGR +0.10pp. Canonica: 2 gambe 1.44/−9.4%/14.7% → 3 gambe 1.48/−7.5%/13.6% (L-FULL), 1.54 → **1.30** (L-PULITA). (4) **Il DD scende ma e' DE-LEVERING (5ª occorrenza** dopo VRP-DD, TP01×DVOL, MAT01, azioni intere UCITS**):** a pari maxDD, L-PULITA k=0.886 → Sh **1.54 vs 1.30** e CAGR 14.5% vs 12.6%. **L'unica lente in cui SOL aggiunge e' quella costruita sui dati che la certificazione segnala.** (5) 📌 **E dentro quella lente il guadagno e' UN ANNO:** dSh per anno 2022 **−0.91** · 2023 **+1.06** · 2024 −0.29 · 2025 −0.20 · 2026 −0.22 → **4 anni su 5 negativi**; la gamba SOL da sola fa Sh −1.99 / **+2.65** / +0.45 / +0.17 / +1.46. Il 2023 e' la risalita post-FTX da ~$8 a ~$100: un evento, non un meccanismo. Corr col book **+0.404 L-FULL / +0.561 L-PULITA** — vicina allo 0.74 che boccio' il trend multi-asset, **e in salita man mano che il dato migliora**. (6) **L'eseguibilita' NON e' il vincolo:** `SOL_USDC-PERPETUAL` min 0.001 SOL = **$0.09** contro il pavimento `min_order` $5 → **primo candidato bocciato senza che il muro sia la taglia del conto.** (7) ⚠️ **EFFETTO COLLATERALE TROVATO SU ME STESSO: il "guardrail solo dati certi" NON e' codice.** `load_data` **non ha whitelist**: `load_data("SOL") -> FileNotFoundError` funziona solo perche' il file non c'e'. Ricostruendo SOL in `data/raw/sol_1h.parquet` **il guardrail si e' disattivato in silenzio**, e quel file NON viene rinfrescato dal cron (`--asset BTC ETH`) → sarebbe diventato **dato stantio con l'aspetto di dato attivo**. Riparato con la convenzione gia' in uso (`hl_`/`eq_`/`eqx_`/`fut_`): SOL vive in **`data/raw/alt_sol_*.parquet`**, fuori dal namespace nudo; guardrail verificato ripristinato e congelato in due test (uno **deriva** gli asset a rischio da `rebuild_history.DERIBIT_INSTR`, l'altro segnala se `load_data` acquisisce una whitelist vera). ⚠️ La prima stesura del test elencava i prefissi a mano e bocciava `eqx_`, `fut_`, `vol_term_`, `fundnews_` — namespace veri: **l'invariante si deriva dal codice, non si elenca** (stessa lezione di `fee_watch` il giorno prima). **REGOLE:** (a) un meccanismo si trasferisce a un asset nuovo **coi parametri congelati**, o non e' un trasferimento ma una nuova famiglia (→ `study_family_honest` + DSR); (b) **un criterio di SELEZIONE va riprovato sull'asset nuovo** — quello di SKH01 non sopravvive; (c) quando il risultato dipende dalla finestra, **guardare quale finestra la CERTIFICAZIONE approva**; (d) **un contributo positivo si scompone per ANNO prima di crederci** — 24/24 ancore positive sembravano un plateau ed erano un anno solo; (e) **ricostruire dati per un'analisi puo' disattivare un guardrail che vive nell'assenza di un file**: chiedersi in quale namespace atterra. ⚖️ **DECISIONE DELL'OPERATORE 2026-08-22: SOL ESCLUSO.** Presa dopo aver visto l'analisi completa. L'universo direzionale resta **BTC/ETH**, presidiato da `tests/test_sol_leg.py::test_l_universo_direzionale_resta_BTC_ETH`. **Cosa NON si ri-discute:** SOL su un book a 2 gambe, con questi dati. **Cosa la riaprirebbe:** ~3 anni di storia SOL *certificata* (dal 2024) sufficienti a rifare la misura **senza** la finestra 2022-23 che la certificazione segnala — cioe' **non prima del 2028** — oppure un meccanismo che non sia TP01/SKH01 congelati. I parquet `alt_sol_*.parquet` restano su disco (precedente: i 51 HL conservati dopo il rifiuto dell'espansione XS01); **non sono nel feed attivo e il cron non li rinfresca**, quindi vanno rigenerati prima di ricrederci. ⚠️ **Nota per il futuro-me:** e' una decisione presa con l'informazione completa, non una svista. Se qualcuno propone SOL "perche' e' eseguibile su Deribit", la risposta e' che l'eseguibilita' non e' mai stata il problema — l'hold-out lo e', a 24 ancore su 24. - 🌊 **ONDATA MULTI-AGENTE 2026-08-22 (20 filoni, branch `research/wave-0822`) — 0 candidati, 1 DIFETTO DI PRODUZIONE, **4** soglie pubblicate falsificate, 1 leva che nessun gate sa vedere.** Diario `docs/diary/2026-08-22-wave-multiagente.md`; ledger per filone `docs/research/RESULTS-0822.md`; briefing `docs/research/BRIEF-0822.md`; 21 script `scripts/research/r0822_*.py` (15.295 righe, compilano tutti, ognuno gira da solo). **Book, pesi, cron, config INVARIATI.** 🚨 **(1) I MONITOR FORWARD REGISTRANO UNA FRAZIONE DEL GIORNO — 4 su 6 rotti.** `fetch_hyperliquid` e `resample_tf` scrivono la barra del **giorno in corso**; `advance()` la consuma e **porta `last_ts` su di essa** -> le ore restanti non entrano in nessun rendimento. | monitor | barre coincidenti | **min/giorno** | gate | |---|---|---|---| | `paper_statarb` | **0/46** | **4** | **STATARB 27/09** | | `paper_dvolspread` | 0/28 | **2** | DVOLSPREAD 24/10 | | `paper_xsr` | 1/28 | **41** | XSR01 23/10 | | `paper_portfolio` | 7/56 | 19 | — | | `paper_prevday` | 1259/1319 | 1.438 | — | | `paper_combo` | 7/37 | 1.402 | — (sano **per caso**: aspetta una borsa) | **Il gate STATARB si ribalta su 2 criteri su 3**: Sharpe registrato **+1,96** contro **−2,02** ricostruito, maxDD **2,2% contro 15,3%** (guardia <10%). ✅ **La finestra NON va persa** (misurato 2 volte: il feed non riscrive le barre chiuse — `paper_prevday` 1427/1488 identiche al bit dopo 62 notti; le 6 barre di statarb recuperate dopo il guasto EPERM 09-15/07 coincidono al bit) -> **"riparare `advance()` + RIGENERARE", non "riparare e azzerare": nessuna data di gate si sposta** (pessimista: STATARB +18g). **Guardia raccomandata, NON cablata:** `ts_ultima_barra + cadenza <= mtime del file`, grazia 5 min. O(1), segnala 5/6, **tace sul sano**, controllo positivo sintetico 6/6 nei due versi. ⚠️ `monitor_health` non poteva vederlo: **una serie fresca, completa e SBAGLIATA passa ogni controllo di freschezza**. E `implausible_sharpe` non e' **mai** stato puntato sulle serie forward. 📌 **(2) TRE SOGLIE PUBBLICATE, FALSIFICATE.** (a) *"XS01 serve ~$20k"* (origine: "rumore di arrotondamento", stima a occhio del 19/06) -> **nessuna soglia da min-order**, haircut ~0 gia' a **$200-600 allocati**. Meccanismo: gli ordini sono **due popolazioni** — il ribilanciamento del segnale e' il 13% degli ordini ma il **75% del nozionale** (ticket $13,65); la deriva del vol-target e' l'87% degli ordini ma il **25%** (ticket $0,64) e **il pavimento la taglia gratis**. *Contare gli ordini da' 16%, contare il nozionale da' 75%.* ⚠️ **Il "$20k di XS01" e il "$20k della DECISIONE DI VENUE" sono due cose diverse conflate in questo file: il primo cade, il secondo REGGE** (e' sull'asse della rovina, non dell'eseguibilita'). (b) *"slippage = rischio #1 di XSR01"* -> **refutato con margine 21x**. (c) *"BTC opzioni fuori a $3.000"* -> misurato sulla famiglia **inverse**, che un conto **USDC non puo' marginare**; la famiglia USDC-lineare ha lotti **10x piu' piccoli** (ETH_USDC **$242**, BTC_USDC $772 contro $7.744). ~~Il muro resta **per il prezzo del lotto**.~~ 🚨 **CORRETTO 2026-08-23 (§46): quelle cifre sono il COLLATERALE PER VENDERE. COMPRARE un'opzione costa il PREMIO, non il nozionale** — `min_trade_amount` **0,01** su tutte le 343 put BTC_USDC (✅ verificato al venue) e il premio del lotto minimo di una put deep-OTM va da **$0,00 a pochi dollari** ⇒ **sul lato LONG il muro di capitale non esiste** (e la regola *niente short-vol da modello* non ha mai avuto bisogno di un muro di taglia per reggere). 📌 **Il muro vero sul lato long e' un altro, ed e' STRUTTURALE: il tick da 5,00 USDC** (✅ verificato, `tick_size = 5.0` su tutte) — **piu' l'opzione e' deep-OTM, cioe' economica, piu' il tick domina**: una put marcata 0,82 USDC non e' quotabile sotto 5, cioe' un pavimento di prezzo del **6x** sulle ali lontane, che nessun capitale aggira. Parametri veri Hyperliquid: **min order $10** (non $5), **taker 4,50 bps** (non 5,0). 📌 **(3) LA LEVA E' L'UNICA VARIABILE CHE NESSUN GATE DEL PROGETTO SA VEDERE.** Lo Sharpe e' **invariante alla scala** (1,31 a ogni cella del knob) -> `deflated_sharpe` e `marginal_vs_tp01` non falliscono, **non la vedono**. Il libro gira al **7% di Kelly** e raccoglie il **15%** della crescita massima in log; il gradino eseguibile 1,00x->1,25-1,50x vale **14,7a -> 12,9-11,6a** al capitale-rendita (€500/m, netto fisco). **Lo scettico conferma il numero e toglie la sua condizione bloccante**: sotto la lente wick accoppiata il maxDD prende un **ricarico moltiplicativo costante ~3,5%**, non un'amplificazione (**il maxDD e' multi-giorno, il wick e' di un giorno**). **Il gradino resta NON autorizzato**: cade 1 riserva su 3; restano il drift stimato su 7,4 anni (k* e' lineare nel suo errore) e la **coda assente dal dataset** (un giorno −10%/anno -> k* 2x). ⚠️ **Ma la lezione del 25/07 e' vera e NON si trasferisce:** su una regola a **UN giorno** (daily-loss, stop di conto) close-only e' **esattamente cieca** — 0,00 breach/anno contro 0,40-1,21 veri (**rapporto INF**). **Sul canale prop/funded la lente accoppiata resta OBBLIGATORIA.** ⚠️ **`target_vol` e `k` NON sono la stessa leva:** `target_vol` scala il 75% del libro e lascia fermo il 25% (a tv=30% il libro e' **82/18**, a 60% **90/10**) -> e' anche un tilt di pesi, e **fallisce `weights_tilt_null`**. La strada pulita per un cambio di SCALA e' il cap di config. 📌 **La vol realizzata di TP01 a `target_vol=20%` e' 12,14%**, scomposto: `20% x 0,682 x 0,890`, dove lo 0,682 sono **due meta' quasi uguali** (flat nel 44,3% delle barre **e** convinzione parziale) -> **"TP01 e' long-flat" spiega meta'**; e alzare `target_vol` **aumenta la size proprio nei giorni in cui il segnale e' piu' debole**. Il x0,890 e' **diversificazione, non un difetto**. ⚠️ **XS01 dichiara lo stesso 20% e ne realizza 20,59%: vale per TP01, non per il libro.** Nessun numero pubblicato cambia (sono tutti sulla serie **realizzata**); sbaglia chi legge l'**etichetta** (attribuirebbe a TP01 l'89% del rischio invece del **73%**). 📌 **(4) PROP/FUNDED — l'ipotesi centrale e' falsificata, e per la ragione teorica giusta.** Riallocare *per la barriera* invece che *per lo Sharpe* vale **+0,016 di J (il 4%)**: il conto del gambler's ruin lo prevedeva (**la vol sparisce, il contenuto sta nella LEVA**). Cio' che vale e' **mettere XS01 su un conto funded: +0,400** (J 0,335 -> 0,738; P(pass) 38,6% -> 82,2%). Leva ottima **0,75x HYRO / 1,00x FTMO**, e **la barriera piu' larga alza l'ottimo: il vincolo e' la regola di DD, non il libro**; la leva alta **non compra probabilita', compra fretta**. Il **75/25 del libro live non e' la ripartizione giusta per un conto a barriera** (sul 2019+ che contiene il 2022 l'ottimo e' **38/62 @0,50x**). **Il null dei tilt dice che il PUNTO non conta**: il massimo di 200 pesi casuali (0,739) **eguaglia** l'argmax (0,738) — conta stare nella regione diversificata. 🚨 **Il numero da citare e' LA BANDA: P(>=50/g) da €600 in 36 mesi = 42% al drift pieno · 7,7% allo stress moderato · 0,7% a quello severo** (e li' e' **peggio del libro live**), perche' **tutto il vantaggio poggia sul drift di XS01 misurato sulla sua finestra di scoperta**. Gate proposto: non aprire un funded su questa allocazione prima che XS01 abbia una finestra fuori dal 2024-2026. ⚠️ Distorsioni dichiarate e non rimosse: banda d'ancora **non girata** sotto quella lente (l'ottimo gira sull'ancora canonica e si appoggia a **SKH01, che ha la fortuna d'ancora piu' grande da restituire**); e la sotto-pesatura di **TP01, lo sleeve difensivo, e' misurata su un campione senza sinistro** — su una barriera assorbente quella scommessa si paga una volta sola. 📌 **(5) LO SLIPPAGE DEL LIBRO LIVE, misurato per la prima volta: non c'e' a questa taglia.** I backtest a 10 bps RT restano **conservativi di ~1,5 bps/lato** (fee vera 7 bps RT); estremi avversi **1/18 contro 4,7 attesi**. Prova diretta: un fill ha preso il **21,9% del volume della sua barra 5m** e quella barra ha avuto un range di **1,08 bps**. ✅ **Fee sul NASTRO: 5,00 bps/lato prima del 2026-08-01 e 3,50 dopo, 16/16 esatti** = conferma indipendente di `fee_watch`. 🚨 **Ma la misura ha una DATA DI SCADENZA:** la partecipazione scala lineare -> quel 22% diventa **172% di una barra 5m a $5.000** e **687% a $20.000**. **Va rifatta a ogni salto di taglia.** ⚠️ Due difetti del dato trovati prima di misurare: `ts_utc` in `book_executions.jsonl` **non e' l'ora del fill** (18/18 = `00:00:00`; l'ora vera sta solo in `logs/cron_book.log`); e il feed certificato e' l'**INVERSE** mentre il libro trada il **LINEARE USDC** (**4ª occorrenza** dello schema `fee_watch`: misurare li' avrebbe misurato **la base**). 📌 **(6) IL `f=0,73` DI VRP01 SCOMPOSTO — il 42% e' STRUTTURA A TERMINE, solo il 25% e' skew** (30% spread, 2% fit). **Il sleeve prezza un'opzione a 7 GIORNI col DVOL a 30 GIORNI**, che nel 90% delle ore sta ~3 punti di vol **sopra** l'ATM a 7g -> sovrapprezza **entrambe** le gambe. Il "+0,8pp sulla gamba corta" del 30/07 — che faceva sembrare **corretta** la gamba venduta — e' la **cancellazione di due errori da ~3pp**. ⚠️ **E la regola per prenderlo era gia' scritta il 03/07** ("riprezzare term-structure-consistent prima di credere a un numero da struttura BS-flat") **e non e' stata applicata alla misura del 30/07**. Verso: `f_term` va da **0,83** (IV-rank basso) a **0,93** (alto) e **supera 1 in backwardation** mentre `f_skew` resta piatto -> **la parte maggiore del difetto si annulla proprio dove il gate fa tradare il sleeve**, quindi f=0,73 e' plausibilmente **conservativo li'**. Non misurato (0/22 ingressi passano il gate) e in un crash i due pezzi vanno in **direzioni contrarie**. **`VRP_CFG["f"]` NON cambiato.** Replica indipendente del f: **0,714**. 📌 **(7) CHIUSURE DI FAMIGLIA.** **Il filone funding si chiude sul QUARTO lato** (affollamento): su **53.430 ore / 3 anni** non predice ne' direzione ne' volatilita'. E i futures datati **non sono un quinto lato**: il loro basis **E'** il funding del perp (+7,33% implicito contro **+6,48%** realizzato; premio incassabile **+0,85%/anno con IC95 che contiene lo zero**). **La mean-reversion non risorge** sotto due conditioner mai provati (volume, shock 3σ): la selezione in-sample sceglie il ramo di **continuazione** in entrambi. Scartati anche: adaptive-horizon (il "vincitore adattivo" ha lookback **costante**, corr 1,000), dealer-gamma (BTC non separa, ETH separa **al rovescio**; ⚠️ **e qui una REGOLA MIA, pubblicata la sera stessa e RITIRATA poche ore dopo:** avevo scritto che `dealer_net_gamma` del dataset ereditato *"e' il GEX col SEGNO INVERTITO"* (corr −0,95). **FALSO, e la fonte gira su questa stessa VPS:** `/opt/docker/cerbero-mcp/src/cerbero_mcp/common/options.py:11-14` **dichiara la convenzione** — *"i dealer sono SHORT calls (le vendono al retail) e LONG puts"* — e `dealer_gamma_profile:138-140` la implementa (`call_dealer_gamma -= contrib` / `put_dealer_gamma += contrib`). Non e' un segno sbagliato: e' un'**assunzione di posizionamento dichiarata**, diversa da quella del GEX standard, e il default `top_n_strikes=50` spiega anche il coefficiente −0,7 e l'offset che avevo attribuito a "non-portabilita'". **Il verdetto SCARTATO regge; cade la regola** — che le prossime ondate avrebbero ereditato al contrario. **REGOLA VERA: prima di dichiarare che un campo di un dataset e' sbagliato, aprire il codice che lo produce** — qui erano due comandi, e la correlazione a −0,95 con la ricostruzione "standard" era esattamente cio' che una convenzione diversa **deve** produrre. `liquidation_*_risk` e' invece **una sola categoria in 17.229/17.229 righe**, e quello e' confermato. Scartati anche: oi-pin (il max-pain **non batte mai, 0/24, la media a 7 giorni dello spot**), term-structure (**termometro contemporaneo**), skew direzionale (**il prezzo muove lo skew**, t 3,1-9,4 su 8/8, non il contrario), ortho-screen **7/7**, alt-options, xs-lite, vrp-quote-vere. ⚠️ **La catena ereditata da bite ha 74-75 giorni utili, non 3,7 mesi:** prima del **2026-06-09** raccoglieva **una sola scadenza per giro** (due agenti indipendenti, 74 e 75). 📌 **(8) REGOLE NUOVE.** (a) **L'open interest NON misura la negoziabilita'** — su Deribit USDC sono quasi **anti-correlati (rho di rango −0,77)**: SOL_USDC e' 1ª per OI e **ultima per quote a due lati (9%)**, BTC_USDC ha **5** strumenti con OI>=100 e il **93%** dei put quotati (e sul short leg di SOL il miglior bid sta a **UN tick**: vendere li' significa **pagare $27** per aprire un credit spread). (b) **Il deflated-Sharpe va calcolato DI SCREEN, non solo di famiglia**: su 168 trial il massimo atteso dal **puro rumore** e' **Sharpe 1,572**, sopra il soffitto direzionale (~1,3) -> **uno screen largo su BTC/ETH direzionale non puo' passare il proprio gate, per aritmetica.** 🚨 **QUESTO ARGOMENTO E' REFUTATO DUE VOLTE, per due strade indipendenti, e NON va ereditato:** (i) la stessa griglia dichiarata come 7 famiglie da 24 da' **1,15**, sotto il soffitto — il verdetto si ribalta sulla **partizione** (ondata 2, §24); (ii) **il soffitto non e' ~1,3**: la stessa ondata pubblica un lookback costante a **1,639** e la cella PREVDAY al buio a **1,621**, stessa coppia e stessa lente netta-fee (§23, §54). «Soffitto» sta per tre cose diverse e il registro usava la piu' bassa citandola come la piu' alta. (c) **Un placebo si controlla per BILANCIAMENTO DEL SEGNO prima di usarlo** (un null che concorda col segnale nel 14% dei casi non e' un null, e' la strategia invertita: fabbrica celle "significative"). (d) **Il null del de-levering e' DEGENERE quando la variante e' una ri-scalatura** (`sh(k*base) === sh(base)`): serve **iso-peso sullo Sharpe**. (e) **Un gate che stampa `None` va verificato prima di dichiararlo "non girato"**. (f) **Su una finestra interamente post-hold-out `marginal_vs_tp01` non puo' dare ADDS per costruzione** — un NEUTRAL li' non e' un giudizio. (g) **Un confronto appaiato deve ereditare TUTTI i parametri della riga in cui compare.** ❌ **REGOLA RITIRATA, pubblicata poche ore prima nella stessa ondata:** *"su equity a gradino un overlay giornaliero e' non-causale"* — **falso su questo motore**: `backtest_signals` contabilizza al giorno d'**INGRESSO** in **291/293** trade e la "riparazione" e' un **no-op bit-exact**; il "+0,04 fantasma" era la differenza fra due varianti **entrambe causali**, e quella scartata era la **migliore sull'hold-out**. *Il costo di una regola derivata da un difetto inesistente e' gia' stato pagato.* 📌 **(9) Cosa NON e' piu' il vincolo: TRE volte in questa ondata l'eseguibilita' a $600 non ha bocciato niente** (haircut 0,00-0,01; lotti $7-242; margine ~$148). Dopo due mesi in cui il muro era sempre il capitale, **adesso muoiono tutti sull'edge**. ⚠️ **(10) FATTO OPERATIVO: il cron gira dal WORKING TREE.** Con un branch di ricerca attivo, il cron esegue quel branch. Durante l'ondata il diff vs `main` toccava **solo** `scripts/research/` e `docs/research/` (verificato) -> produzione identica; ed e' il motivo per cui **nessuna riparazione e' stata applicata**: sarebbe andata live alle 00:30 senza una decisione dell'operatore. 🗂️ **Dataset nuovo in eredita':** **30/30 futures trimestrali scaduti** Deribit ricostruiti (`get_instruments?expired=true` ne ritorna **1**, ma i nomi sono deterministici e `get_tradingview_chart_data` serve la storia di un contratto scaduto): **BTC 240.150 barre orarie / ETH 233.334, dal 2018-09, col deleveraging 2022 dentro** — cioe' **la coda che a CC01 mancava per costruzione**. Cross-check col forward implicito nella catena opzioni: mediana **−0,6 bps**. - 🌊 **SECONDA ONDATA 2026-08-22 sera (9 filoni, `research/wave-0822`) — 0 candidati, 1 gate pre-registrato SOSTITUITO, il numero funded ridimensionato di 5x, e un difetto strutturale del deflated-Sharpe misurato da TRE agenti indipendenti.** Diario `docs/diary/2026-08-22-wave2-xs01-funded.md`; registro `docs/research/RESULTS-0822.md` §21-29. **Libro, pesi, cron, config INVARIATI.** ✅ **(1) XS01 REGGE FUORI DALLA SUA FINESTRA DI SCOPERTA — ED E' PIU' FORTE LI'.** La finestra c'era gia': stessi 19 ticker su **Binance spot 2021-2023**, che contiene **LUNA e FTX**, meccanismo **congelato**. Mediana di fase **+1,12 fuori campione contro +0,37 dentro**; differenza appaiata **+0,668, positiva in 10/10 fasi**; p=0,013 contro permutazione a fee zero; sopravvive a 30 bps/lato. **L'obiezione "Binance non e' la verita'" e' stata MISURATA, non aggirata:** quella regola riguarda l'**ancoraggio di prezzo**, non un ranking cross-sezionale, e lo scarto USDT e' un **fattore comune** che sparisce nello z-score — stesso sleeve sui due venue **corr 0,9991**. **Null "universo dove non dovrebbe funzionare"** (11 settoriali SPDR 1998+): −0,45, **0/10 fasi** → **3ª conferma indipendente che il cross-sectional e' crypto-specifico**. ⚠️ **Ma tre correzioni vanno nel verso opposto:** maxDD standalone **10,8% → 21%**; **deflated-Sharpe FAIL 0,342**; **32% dell'universo non testabile** (19 gambe 1,31 contro 13 gambe 0,54, stessa finestra e venue). **Verdetto LEAD**, non promozione. ✅ **(2) Il falsificatore che l'autore aveva nominato CONTRO SE STESSO — eseguito, e non falsifica.** La validazione di venue girava solo sul 2024+, cioe' **senza il depeg USDT** che il fuori campione contiene. Soglia dichiarata da lui (`corr ≥ 0,99`): **corr mediana 0,9992, minima 0,9921**, dSharpe appaiato **−0,000**, titolo da +1,12 a **+1,11**; sui 734 ribilanciamenti solo **10 cambiano una gamba su cinque** e **ZERO dentro il depeg**. **Il punto di metodo: la divergenza va SCOMPOSTA** — la **comune** arriva a −39 bps ed e' quella che lo z-score annulla, la **idiosincratica** (l'unica che cambia il ranking) sale solo da 2,0 a 3,6 bps mediani; *riportare solo la prima da' la risposta rassicurante e sbagliata*. 🚨 **E il caso peggiore del campione non e' il depeg: e' il 2025-10-10** (cascata di liquidazioni /USDT, **INJ 1.981 bps** mentre BTC/ETH stanno a 21) → **il meccanismo temuto e' REALE**, e' solo caduto nella finestra di *scoperta*. 🚨 **(3) IL NUMERO FUNDED SI RIDIMENSIONA DI 5x, E IL COLPEVOLE NON E' LA FINESTRA.** Decomposizione a **un grado di liberta' per volta** (riproduzione **esatta cifra per cifra** dei numeri del mattino + 3 controlli bit-exact a 0,0): | passo | J | Δ | |---|---|---| | il pubblicato (HL, 19 gambe, finestra di scoperta) | 0,739 | — | | → venue Binance, **date allineate** | 0,732 | **−0,006** | | → **13 gambe** | 0,426 | **−0,307** | | → pannello lungo | 0,459 | +0,034 | | → **fuori campione 2021-2023** | 0,520 | **+0,061** | **Il 42% del numero pubblicato sta nelle 6 gambe che fuori campione non esistono** (ARB OP SUI APT SEI TIA) — **e quelle 6 entrarono nell'universo nel 2026-06 guardando la liquidita' HL del 2024+, cioe' dentro la finestra di scoperta**. La finestra, da sola, **migliora**; allargare l'universo man mano che le gambe nascono **non recupera** i 0,307. ⚠️ **Errore di metodo catturato prima di pubblicare:** la prima stesura dava al passo venue −0,254 ("Binance costa un quarto di J"). Era **FASE, non venue** — `xsec_engine` ribilancia sulla parita' dell'indice di pannello, e **due pannelli che iniziano a date diverse ribilanciano in giorni di calendario diversi**. Allineati, il venue vale −0,006. **NUMERO DA CITARE: P(≥50 €/g) da €600 in 36 mesi = 7,8% [7,2–9,1%], P(zero) 25,5%** (non 42%); 6,6% se la firm non lista gli alt; 4,3% per il libro live. **Il peso 0,50 non sopravvive; la REGIONE [25%, 38%] e' entro il 3% dell'ottimo su tutte e tre le finestre.** Stress ora ancorati al misurato: `XS ×0,00` **+0,041** → **XS01 come pura DECORRELAZIONE vale +0,04, tutto il resto e' il suo drift.** 📌 **`GATE PROP-01` — SOSTITUISCE l'attesa di anni, che e' CHIUSA:** **(a) LISTINO — verifica a €0, BLOCCANTE prima di ogni spesa:** ≥10 delle 13 gambe negoziabili **con short** (sotto 10 il meccanismo congelato **non ribilancia affatto**); FAIL → si decide sulla riga senza XS01. *Stessa classe dell'errore GTAA01/PRIIPs, per cui la regola e' gia' scritta.* **(b)** banda d'ancora di SKH01 sotto la lente prop, **2026-10-31**, PASS se **> +0,05** (atteso PASS, dichiarato prima). **(c)** un'eval HYRO $100k costa **$579 su un conto di $635** = il **91%**. ⚠️ **(4) I DUE AFFINAMENTI DI XS01 DEL 2026-06-19 NON SI REPLICANO FUORI CAMPIONE** (misurato da **due agenti indipendenti**): il **blend [30,90] e' PEGGIO del solo L=30** (+1,12 vs +1,28) e il **gate di dispersione p30 vale ZERO** (+1,12 con e senza) — mentre *dentro* la finestra di scoperta il gate vale eccome (+0,37 contro −0,03). Il secondo agente lo ritrova per un'altra strada: l'unica correlazione sotto soglia del suo test e' **causata dal gate** (spento, 0,9674 → **0,9977**), perche' e' **binario** e pochi bps lo fanno cadere ai due lati. **Cio' che sopravvive e' il meccanismo cross-sectional NUDO.** ⚠️ **NON e' un argomento per cambiarli** — cambiarli guardando *questo* risultato sarebbe la stessa selezione spostata di finestra — **e' un argomento per non attribuire loro il valore che questa memoria gli attribuisce.** ✅ **(5) L'ALLARME SUL PESO DI TP01 E' FALSIFICATO NEL VERSO** (l'agente aveva registrato nel docstring, **prima di misurare**, che si aspettava di confermarlo): **TP01 ~0,375 e' l'argmax sia sulla finestra che contiene il 2022 sia su quella che non lo contiene**, e nel sinistro il libro con **meno** TP01 fa **meglio** — TP01 va flat mentre **SKH01 si gira short e guadagna**; test dei segni **12/12** (p=0,0005) e **8/8** sul solo pre-2024. **Null del de-levering, 7ª occorrenza, in veste nuova** ("protezione dal crash"): a leva comune TP01 protegge davvero, ma **a ISO-SOPRAVVIVENZA meno TP01 paga di piu'** ($4.490 → $2.119, monotono). Tre collaterali: **(i)** *"2024-2026 non contiene un crash"* e' **falsa nella forma** (buy&hold −60% di DD); manca la **taglia** (~2,3x sulla coda) → la domanda giusta e' **"e se ne arriva uno due volte piu' grande"**; **(ii)** alle leve funded **il 2022 non era una minaccia** (min equity −1,4/−2,4% contro barriera −6%): **cio' che uccide un conto a barriera e' la regola a UN GIORNO su una giornata qualunque**; **(iii)** il rischio vero dell'ottimo e' **XS01, non TP01**. Il 75/25 live e' **fuori** dalla regione di compromesso del funded — coerente col fatto gia' scritto il 25/07: *canale funded e libro proprietario vogliono libri diversi*. ❌ **(6) ORIZZONTE ADATTIVO — CHIUSO DEFINITIVAMENTE.** Il falsificatore e' stato eseguito coi rilevatori che nominava (**BOCPD** Adams & MacKay + **optimal partitioning causale**) e **questa volta ha avuto POTENZA**: **68/96 celle davvero adattive** (contro 0 del primo tentativo, dove il "vincitore adattivo" aveva lookback costante). Con potenza: **0/68** su entrambe le condizioni dichiarate, corr→TP01 **minimo 0,754** (soglia 0,60). 📌 **La decomposizione E' il risultato: l'adattivita' spiega il −7% del vantaggio su TP01** (miglior costante +0,326, adattivo +0,305) → il 100% e' **"un orizzonte piu' corto", non "adattarlo"**. E il miglior costante **non si propone**: il salto fra L **adiacenti** e' **+0,190 = il 58% del vantaggio** — max-of-24 su un crinale di rumore. 📌 **Prova di IDENTITA' invece di diagnostica** (controllo riusabile in ogni famiglia con un parametro clippato): invece di *"questa cella sta al bordo"*, la sua serie e quella del costante coincidono a **max|Δ| = 0 su n=2719**. ❌ **(7) MAKER — il segno dipende da `<` contro `<=`.** Differenziale maker/taker: tetto **$2,96/anno a $635** (replica indipendente della curva 26/07 al terzo decimale). Il costo del non-fill lo mangia interamente gia' alla condizione di riempimento **piu' generosa fisicamente difendibile**: se una barra che apre esattamente al nostro prezzo e da li' se ne va conta come fill, resta +0,31 bps; se **non** conta (e non conta: a quel prezzo non e' stato scambiato niente dopo l'arrivo dell'ordine, e un passivo sta **dietro a tutta la coda**), resta **−0,47**. **Non esiste un q positivo di pareggio**; IC95 contiene lo zero in **10 celle su 10**. 📌 **La firma della troncatura, vista dall'altra parte: il passivo vince sul 92-98% degli ordini e perde sulla media** (5 ordini su 1535 fanno il **42%** del danno) — *una politica che vince quasi sempre e perde sulla media si giudica sulla media*. **Placebo a ore casuali girato**: la selezione avversa **non** e' "il libro trada nei momenti brutti", e' **strutturale all'esecuzione passiva**. ⚠️ Osservazione che riapriva la domanda: il netting su strumento unico (che uccise T1 il 26/07) **non si applica all'ordine NETTO di ribilanciamento**, che e' uno solo. ❌ **(8) SUPERFICIE DI VOLATILITA' — il lato relative-value e' CHIUSO.** Censimento (non selezione) su **1,24 M quote a due lati**: **0 violazioni di monotonia su 1,11 M**, **1 di convessita' su 1,03 M** che vale **$0,00** ed e' sparita l'ora dopo. |residuo| mediano **0,125-0,200 pt-vol** contro **mezzo** spread 0,861-1,208, e **sotto il tick nel 96% dei casi**. 📌 **IL MECCANISMO: |residuo| cresce MONOTONAMENTE col largo del mercato** (0,080 pt a spread 2,6% → 0,255 a spread 50%) → **l'incoerenza al mid *E'* la larghezza del mercato guardata attraverso il mid**, non un errore di prezzo — e questo uccide il controfattuale USDC che l'agente stesso aveva costruito (restringendo alla superficie gia' quotata stretta: **0 su 158.718**). Reversione **misurata**: mezza-vita 11-12 h, corr(t,t+1) +0,94 → il residuo e' **la forma dello smile**. Controlli positivi **3/3 in entrambi i versi** — *un rilevatore che trova ~0 e non e' validato e' indistinguibile da uno rotto*. ⚠️ **(9) BIN-FREQ (il binario di frequenza su SKH01) — LEAD: la direzione e' reale, la TAGLIA e' selezione.** Argmax **+0,112 in 23/23 ancore**, ma **mediana di famiglia +0,007** con 39/72 celle positive = **monetina**: **l'argmax vale 16× la mediana, punta e non plateau**. Direzione solidissima (**0/72** sul segno inverso; trasferisce a SKH01_V1). Criterio a 4 gambe: **3 FAIL**, e la taglia e' **€0,0113/giorno**. Due implementazioni difendibili della stessa regola, d'accordo sul **97,6%** dei trade, danno +0,066 contro +0,080 → **il 21% dell'effetto sta in come si riempie il warm-up**. 📌 **Riapertura pre-registrata: non una data ma una SOGLIA DI CAPITALE** ($5.600 alla stima della cella, **$53.000** a quella onesta di famiglia) — perche' cio' che fallisce e' il rapporto fra un costo **fisso** e un beneficio **proporzionale**, e nessun forward a 6 mesi puo' misurare 0,07 di Sharpe (SE≈1,4). 🚨 **(10) IL FILO DELLA GIORNATA: `deflated_sharpe` NON HA UNA REGIONE UTILE IN MEZZO — misurato da TRE agenti indipendenti, e TRE gate pre-registrati ci poggiano sopra** (XSR01 23/10, DVOLSPREAD 24/10, 22/12). `altlib.deflated_sharpe` calcola `sr0 = sd(Sharpe dei trial) × mult(N)`: dipende dalla **VARIANZA** della griglia, non solo da N. **(a)** VOL-SIZE lo dichiara **VACUO** (1,000 anche per il baseline). **(b)** BOCPD lo misura dall'altro capo: **0,998 PASS** dentro la famiglia omogenea → **0,555 FAIL** con l'sr0 di screen, TP01 compreso — *"gonfiare N col padding alza N e non la varianza"*. **(c)** Il critico trova che l'**1,572 di ORTHO-SCREEN** implica sd≈0,58 e che **le stesse 168 celle dichiarate come 7 famiglie da 24 danno 1,15**, sotto il soffitto ~1,3: il verdetto *"uno screen largo non puo' passare il proprio gate per aritmetica"* **si ribalta senza toccare un dato**, e la cura che suggerisce (famiglie piu' piccole) e' **la manovra proibita il 30/07**. **(d)** BIN-FREQ chiude il cerchio dall'alto: su una famiglia **binaria** il DSR **riacquista potenza** (0,977 contro baseline 0,834) perche' le sue celle scartano insiemi di trade molto diversi — *non e' il candidato a essere piu' solido, e' la famiglia a essere piu' larga*. **REGOLA: non basta contare i trial di screen, serve la VARIANZA di screen** — e **la stessa griglia da' verdetti opposti a seconda di come la si partiziona**, il che rende la scelta della partizione un secondo posto dove barare e' indolore e invisibile. ⚠️ **(11) REGOLA MIA PUBBLICATA E RITIRATA IN GIORNATA** — vedi il ritiro nel bullet dell'ondata 1: `dealer_net_gamma` **non e' il GEX col segno invertito**, e' una **convenzione dichiarata** nel sorgente che gira su questa stessa VPS. **REGOLA: prima di dichiarare che un campo di un dataset e' sbagliato, aprire il codice che lo produce.** 📌 **(12) ALTRE REGOLE NUOVE.** (a) **Una divergenza fra due fonti di prezzo si scompone in COMUNE e IDIOSINCRATICA prima di giudicarla**: le due rispondono a domande diverse e la prima da' sempre la risposta rassicurante. (b) **Due pannelli che iniziano a date diverse ribilanciano in giorni di calendario diversi**: un confronto di venue non allineato misura la **fase**, non il venue (qui −0,254 contro −0,006, fattore 42). (c) **Un null di permutazione puo' avere mediana diversa da zero per ragioni strutturali** — scartare a caso il 40% dei trade danneggia perche' lo Sharpe va con √(scommesse/anno) (misurato 0,883 contro 0,861 previsti): il null resta valido e **piu' severo**, ma risponde a *"batte una selezione casuale?"*, non a *"batte il non filtrare?"*. (d) **Un contro-fattuale costruito sui mid di un mercato largo non descrive un mercato stretto**: prendere il mid a spread 50% e fingere di quotarlo al 2,6% fabbrica opportunita' che spariscono restringendo il campione a cio' che e' gia' quotato stretto. (e) **Un `git add -A` durante un'ondata cattura il lavoro IN CORSO degli agenti** (successo qui: un commit conteneva una versione intermedia e sbagliata di uno script poi corretto). 📌 **(13) E LA RISPOSTA ONESTA AL MANDATO, che al critico era stato chiesto di dare se vera: NESSUNA misura di ricerca di questa giornata batte "versare".** L'effetto piu' grande misurato oggi vale **€0,0113/giorno**; versare €500/mese vale **~1456×** quello. **La verifica che costa meno di tutte non e' ricerca: leggere il listino di due prop firm** — l'intero risultato di testa poggiava su un assunto scritto in un **commento a riga 100**. *La ricerca ha smesso di essere il vincolo binding il 26/07, e due ondate da 29 filoni lo hanno CONFERMATO invece che ribaltarlo.* - 🌊 **TERZA ONDATA 2026-08-22 notte (4 filoni) — DUE GATE D'ATTESA ELIMINATI, 2 difetti strutturali trovati, 0 candidati.** Diario `docs/diary/2026-08-22-wave2-xs01-funded.md`; registro `docs/research/RESULTS-0822.md` §30-33. **Libro, pesi, cron, config INVARIATI.** ✅ **(1) `GATE PROP-01` gamba (a) — LISTINO: PASS 13/13.** La verifica a **€0** che il hook e il critico avevano indicato come il vero vincolo. 📌 **Metodo: non leggere il sito della firm, interrogare il VENUE su cui la firm esegue.** HyroTrader esegue su **Bybit**; `api.bybit.com/v5/market/instruments-info?category=linear` (pubblico, tokenless, **833 strumenti**) → **13/13 gambe U13 `Trading`, `LinearPerpetual`, min notional $5**, leva 50-150x; **6/6** anche le gambe non testabili. **Lo short e' STRUTTURALE su un perp**, non un permesso. ⚠️ Non prova che la firm non abbia una **propria** lista ristretta: la sua pagina dichiara "700+ pairs" su un venue che ne ha 833 (coerente, ma e' la *sua* dichiarazione) → si chiude con una domanda al supporto, non con un dataset. ✅ **VALIDAZIONE del modello:** la firm dichiara **daily DD 4% · max loss 6%**, e `r0725_hyro.py:48-49` usa gia' `EV_TARGET,EV_DD,EV_DL = 0.10,0.06,0.04` → **le regole modellate dal 25/07 sono quelle vere.** 🚨 **CORREZIONE ECONOMICA: la quota d'ingresso NON e' un costo affondato** — e' un *"Refundable Challenge Deposit, returned in full alongside your first funded payout"*. Il progetto l'ha sempre modellata come spesa persa. **Resta vero che immobilizza il 91% del conto ($579 su $635), non che lo brucia**: si perde solo nel ramo senza payout. **E' una struttura a OPZIONE, non una fee** → l'EV del biglietto va rifatto (gamba (c) del gate). *Qualita' delle fonti dichiarata: listino **primario e misurato**; regole DD **primarie dichiarative**; rimborsabilita' **dichiarativa + secondarie concordi**, non misurata.* ✅ **(2) `GATE PROP-01` gamba (b) — chiusa OGGI invece che il 2026-10-31: PASS 23/23.** Delta appaiato mediano **+0,1162** [p10-p90 +0,087/+0,152], **23/23 offset e 230/230 celle congiunte positive** (soglia +0,05), su **griglia congiunta PIENA** 23 offset × 10 fasi — non un campionamento e non una somma di marginali. Riproduzione **7/7 esatta**, bit-exact **3/3 a 0,0**. 📌 **La data non aspettava un dato: aspettava che qualcuno misurasse il COSTO** (0,6 s per offset; i "~9 min" erano di una computazione che la misura non usa). **Secondo gate d'attesa eliminato in una sera, per la stessa ragione del primo.** 🚨 **Ma il numero operativo scende ANCORA: P(≥50 €/g) da €600 in 36 mesi = 4,4% [2,5–8,2%], P(zero) 35,3%** (l'offset canonico era al **91° pctl**; all'ancora canonica la macchina ridice 7,7% → e' **fortuna d'ancora, non disaccordo**). **Traiettoria del numero in una giornata: 42% → 7,8% → 4,4%.** 📌 **E la distorsione dichiarata DUE VOLTE e mai rimossa — *"l'ottimo si appoggia a SKH01, lo sleeve con la fortuna d'ancora piu' grande"* — e' MISURATA E REFUTATA nella forma forte:** a **38/25/38** SKH01 sta **allo stesso peso del LIVE**, la sua ancora si cancella nella differenza appaiata, e li' il delta e' **il piu' alto dei tre (+0,120)** con la banda **piu' stretta**. **L'ampiezza della banda scala col differenziale di peso su SKH01** → **cio' che paga e' XS01, non un sovrappeso dello sleeve fragile.** ⚠️ **Due avvertenze:** (i) **il gate e' su una DIFFERENZA, il numero operativo e' un LIVELLO** — nella prima l'ancora si cancella in parte, nel secondo per niente: passano insieme e si muovono diversamente (−33% contro −44%). ***Un gate superato non e' un numero confermato.*** (ii) il surrogato del 22/08 era finito vicino al vero **per la cancellazione di due asimmetrie opposte**: **il numero era giusto, il metodo no.** **Smentitore residuo fuori perimetro:** l'ancora giornaliera di **TP01** (24 ore, canonica 00:00 UTC = la piu' fortunata delle 24) non e' toccata da questa misura. 📌 **(3) GATE-RECON — il difetto `advance()` ribalta UN gate su tre, e in quello due criteri su tre.** Audit di **sola lettura provata** (md5+mtime di **ogni** `data/paper_*` invariati). **`STATARB 27/09 — riparata: RITIRO · attuale: CANDIDATO AL DEPLOY`** (Sharpe **+1,96 → −2,02**, maxDD 2,24% → 15,19%); XSR01 e DVOLSPREAD danno **lo stesso verdetto** in entrambe le lenti. ✅ **La premessa "rigenerare non perde la finestra" e' ora CONFERMATA PER VIA DIRETTA:** `data/_feed_backup/*.prebuild.bak` conserva il vintage pre-riscrittura → **0 barre chiuse cambiate su 1.761.259**; l'unica riga che cambia per file e' **l'ultima del vintage, che era aperta** = *il difetto stesso, in chiaro*. ⚠️ Limite: `hl_*_1d` e `dvol_*` **non hanno vintage su disco** → per XSR01/DVOLSPREAD l'evidenza resta **indiretta**. 🚨 **Il veto d'integrita' di DVOLSPREAD NON scatta: 28 attive/28 = 100%.** Una serie che registra **2 minuti di mercato al giorno** passa al 100% un veto progettato apposta per non far decidere su dati mancanti — **non e' taratura**: il veto conta *se il DVOL c'era*, non *quanto dura la barra su cui c'era* (**assi ortogonali**); la stessa soglia 0,80 sulla quota di barre **chiuse** leggerebbe **0%**. **Variante nuova: una barra presente non e' una giornata presente.** 🚨 **Il caso peggiore NON e' quello coi numeri piu' assurdi:** XSR01 sbaglia di **×6,6** e DVOLSPREAD di ×3,0 **senza cambiare verdetto**; **STATARB ha |Sharpe| quasi identico (1,96 contro 2,02) e cambia SEGNO** — ed e' il gate piu' vicino. Un controllo che cercasse *"numeri troppo belli"* **lo lascerebbe passare**; `implausible_sharpe`, girato per la prima volta sulle serie forward, dice **"ok" in entrambe le lenti** (e chiede n≥30, quindi 2 serie su 3 **non sono giudicabili**). **La firma da cercare e' la VOL forward molto sotto quella del backtest** (7,88% contro 31,42%). 📌 **QUANDO riparare, con un numero:** con **rigenerazione zero barre perse a qualunque data**; senza, riparare **oggi** lascia **36/90** barre vere a STATARB (62/90 XSR01, 63/91 DVOLSPREAD), **alla vigilia 1** — e la riparazione parziale **non contamina la finestra, la ACCORCIA** (una barra troncata porta ~1/370 della varianza *e* del rendimento di una vera, quindi non pesa). ⚠️ La diagnostica pre-registrata del 25/07 (statica sempre-short) **non e' affetta** perche' si ricalcola dal pannello → al gate si confronterebbe **un benchmark giusto con un numero di strategia sbagliato**, e il margine sembrerebbe **+5,83 invece di +1,87**. 🚨 **(4) WORST-DAY — la riserva sulla leva e' mal tarata di 2-4 ORDINI DI GRANDEZZA, ma il knob di scala NON ESISTE.** 🚨 **AGGIORNATO 23/08: il 1,50x e' BOCCIATO** (§53: peggior giorno strutturale **21,48% > 20%**) e il **k massimo difendibile e' 1,40** — di questa riga sopravvive **solo la colonna 1,25x**. Il gradino di leva vale **14,7a → 12,9a a 1,25x** e **→ 11,6a a 1,50x** al capitale-rendita (**+€164/mese** e **+€282/mese** di versamenti equivalenti 🚨 **il primo e' +€144 misurato direttamente — vedi il ritocco del 23/08 sotto**) ed era bloccato da un parametro **scelto a mano** ("un giorno a −10% ogni anno"). **Il peggior giorno ha due risposte:** **−3,94% in chiusura** (2020-03-13) e **−7,33% al minimo** intra-giorno (rapporto mediano **1,89×**). Coda GPD: **−4,55% a 1/10.000 giorni** [−6,34/−3,08] ⚠️ **ma Hill dice −7,34% (ξ 0,34 contro 0,09): i due stimatori NON concordano → si cita la banda.** Conto **aritmetico** (cap + vol-target + gap-through di SKH01): peggior giorno **possibile** a k=1,00x **−14,32%**. 📌 **Il −10% sta al 70% del massimo strutturale: la TAGLIA e' plausibile, la FREQUENZA no** (1 ogni 67-6.075 anni contro "ogni anno"). 📌 **E la forma della coda non e' la leva: muove k* di 1-2 unita', il DRIFT di 6,7.** Anche prendendo lo stress **alla lettera**, k* 2,95x → mezzo-Kelly **1,48x**: *lo stress bocciava il gradino DOPPIO, non quello singolo*. C1-C5 passano tutti. ⚠️ **Il libro NON e' immune ai crash, e' immune ai crash GROSSI:** sui 160 giorni di crash perde in media −0,505%, e l'esposizione di TP01 scende **monotona** col crollo (0,096 → **0,042** sotto il −20%) *perche' li' il trend si e' gia' girato*. **Il suo peggior giorno non e' un crash: e' uno SHORT SQUEEZE** (SKH01 short con stop 2% che gappa a **−15,77%** di sleeve mentre TP01 e' flat; il secondo peggiore fa −6,67% → **la coda di SKH01 e' un giorno solo**). 🚨 **IL RISULTATO CHE DECIDE, e nessuno lo cercava: il cap di `config/live.json` e' un CLAMP, non un MOLTIPLICATORE.** Morde su **3 osservazioni-asset su 5.650 (0,053%)**; alzarlo da 0,50 a 0,625 lascerebbe il libro a k=1,00x in **5.647 giorni-asset su 5.650**. ✅ **Verificato:** le chiavi sono `max_notional_per_asset_usd/_frac`, `min_order_usd`, `disaster_sl_pct`, `max_data_age_days`, `skh_feed_max_age_min` — **non esiste una chiave di scala**; servirebbe toccare `WEIGHT`/`W_TP01`/ `W_SKH` in `src/live/book.py`, cioe' **codice** su un percorso con soldi veri. **⇒ La regola *"ogni cambio di SCALA passa dal cap di config, non da `target_vol`"* NON E' IMPLEMENTABILE COME SCRITTA.** *Due mesi di discussione su un knob inesistente.* **Il gradino a 1,25x e' AUTORIZZABILE A CONDIZIONE DI** costruire prima una **chiave di scala esplicita** in config **e** rifare `r0726_fee_sensitivity`, la cui conclusione *"liquidation fee irrilevante"* **vale solo a nozionale lordo ≤1x** (ed era gia' legata a un test di guardia sul cap). ⚠️ **Nota dovuta:** credendo **entrambe** le riserve insieme (drift −2SE **e** −10% annuo) il drift atteso e' **−0,61%/anno** → *non e' il gradino a essere sbagliato, e' il libro; chi usa quella combinazione sta chiedendo di spegnere anche il conto di oggi.* 🚨 **(5) IL FUNDING DEI PERPETUAL NON E' MODELLATO IN NESSUN BACKTEST — e tocca ogni numero del progetto.** ✅ **Verificato:** **zero occorrenze** di `funding` in `src/backtest/harness.py`, `src/strategies/trend_portfolio.py`, `src/portfolio/{sleeves,portfolio}.py` **e in tutto `src/live/`**. **Il progetto ha prezzato fee, slippage, min-order, pavimento IB, haircut, fortuna d'ancora, degrado d'esecuzione, look-ahead, split, rischio di venue e fisco — e mai il costo di TENERE APERTA una posizione su un perpetual.** ✅ **MISURATO la notte stessa** (`r0822d_funding.py`, 1.212 righe, replica bit-exact 5/5, §35 del registro): **il libro paga −2,16%/anno di DRIFT** (2019-2026) · **−1,39%** sulla sola finestra dello strumento vero (≥2022-03) · **−0,55%** sul 2025+. **Il costo si cita con la finestra**, e il 2022 e il 2026 costano ~0 **perche' il libro era FLAT**, non perche' il funding fosse sparito. 🚨 **Il meccanismo, ed e' trasferibile a ogni futuro candidato su perpetual: esposizione e funding sono POSITIVAMENTE CORRELATI** — il tasso pagato davvero e' **1,86-2,55×** l'incondizionato per TP01 e **2,41-3,44×** per SKH01, quindi **il prodotto ingenuo "esposizione media × tasso medio" sottostima di ~2×**. ❌ **Ipotesi da cui il filone era partito, FALSIFICATA: "SKH01 paga meno perche' sta a mercato il 12% del tempo"** → paga **2,24%/anno contro 2,02%** di TP01, perche' quando e' a mercato sta a nozionale **1,0×** (TP01 vol-targeted sta a **0,14×**) **ed entra sui breakout, cioe' quando il funding e' caro**. **Il peso 75/25 NON si muove** (delta negativo a 23/23 offset per ogni w). ⚠️ **Il proxy Hyperliquid era 2,1-2,2× il venue vero** (14,8% contro 6,8-7,1% sulle stesse ore): **due errori opposti — tasso troppo alto, esposizione condizionale troppo bassa — che quasi si compensavano.** *Compensarsi non e' misurare.* 🚨 **NUMERI PUBBLICATI CHE CAMBIANO:** rendita perpetua **10,73% → 9,14%**; **muro $276,6k → $325,0k (+17,5%)**; traiettoria da $600 a €250/mese **16,4a P(20a) 90% → 18,7a P(20a) 64%**; **soffitto direzionale ~1,31 → ~1,15**. **NON cambiano:** peso 75/25, gradino di leva (k* 13,7→12,3), **maxDD (+0,3pp)**, ordine delle leve del piano. 📌 **E' una tassa sul DRIFT, non sulla coda** — per questo colpisce i **muri** molto piu' dello Sharpe, ed e' lo stesso ordine di grandezza della correzione d'ancora ×0,89. ⚠️ **QUESTA CORREZIONE E QUELLA DEL FISCO SI SOMMANO, E NESSUNA TABELLA PUBBLICATA LE CONTIENE ENTRAMBE.** La riga "€250/mese" vale P(20a) **92% al lordo** · **52% col fisco** (07/08) · **64% col funding** (22/08): **le due lenti sono state applicate separatamente allo stesso numero lordo**, e il risultato congiunto sara' **peggiore del 52%**. **La tabella con entrambe non esiste ancora.** ✅ **Validato contro il conto vero per ELIMINAZIONE, non per grandezza:** modello vs `realized_pnl` di sessione **ETH −0,2% / BTC −7,7%** (le finestre sbagliate sbagliano di 2-4×), e l'identificazione regge perche' nella sessione ci sono stati **0 ordini** → il P&L di trading e' esattamente zero, quindi quel campo non puo' essere P&L di trading. Convenzione `interest_8h` **verificata sui dati** (mediana |dif| 2,2e-08 contro 1,1e-06). Funding realmente pagato dall'arming: **$0,22**. ⚠️ **BUG in famiglia gia' nota, catturato da un controllo positivo e non a occhio:** `DatetimeIndex.astype("int64")` su tre serie con risoluzioni **diverse** (`[ms]`/`[us]`/`[s]`) dava **0,000%/anno su SKH01** e **+1,229%/GIORNO su TP01** — **nessuna eccezione, nessun NaN, due numeri plausibili in due punti diversi**. Stessa famiglia del `DatetimeIndex.view("int64")` codificato il 01/07. **Su un perpetuale lineare, inoltre, `diff(nozionale) < 0` NON e' una vendita: il nozionale scende da solo quando scende il mark.** ✅ **SEGUITO 2026-08-22 notte — LA CHIAVE E' SPECIFICATA (`docs/research/SPEC-scale-key.md` + prototipo isolato `r0822e_scale_proto.py`, zero scritture, isolamento verificato a runtime), con un NODO IRRISOLTO.** Registro §38. Replica a k=1,00 **6/6** contro WORST-DAY. ⚠️ **CORREZIONE A UN NUMERO CHE AVEVO SCRITTO IO:** *"1,25-1,50x vale 14,7 → 11,6 anni, ~€300/mese"* **fondeva due gradini** — a **1,25x** l'equivalente e' **+€164/mese**, il €282 e' del **1,50x** 🚨 **che il 23/08 e' stato BOCCIATO: la meta' cara della frase non esiste piu'.** 🚨 **RITOCCATO 2026-08-23 (§53), e il ritocco riguarda la CONVENZIONE piu' che il numero:** il "+1,8 anni / +€164" e' la lettura a **muro CONGELATO** (si de-leva al traguardo) e §33 **non dichiarava quale delle due letture stesse usando**. A **muro MOBILE** lo stesso gradino vale **+2,98 anni**; con il **funding dentro**, +2,10a (congelato) / **+3,49a** (mobile). **La differenza fra le due letture e' 1,2 anni — piu' grande di quasi tutti gli effetti che questo progetto misura** ⇒ da qui in avanti un guadagno in anni si cita con la sua convenzione. Il versamento equivalente **misurato direttamente** e' **+€144/mese**, non €164: la differenza *e'* l'ipotesi di linearita' dell'interpolazione. 📌 **E il funding va nel verso opposto all'atteso: non riduce il gradino, lo AUMENTA** (peggiora il caso base) — **ma il livello peggiora su tutta la colonna**: k=1,25 col funding (13,78a) resta **peggio** di k=1,00 senza (14,81a). *Il gradino non ripaga il funding, lo attenua.* 🚨 **Tre risultati che il mandato non prevedeva:** **(i)** `test_leva_massima_da_config_resta_sotto_o_uguale_a_1x` **NON si rompe, ed e' PEGGIO che rompersi**: misura `frac · n_asset` mentre la grandezza vera diventerebbe `frac · n_asset · scala` → **continua a passare e smette di controllare**. **4ª occorrenza** della forma *"un controllo puntato su una configurazione diversa da quella che gira"*. **Va cancellato con nota, non aggiustato.** **(ii) La guardia che morde per prima e' il DISASTER-SL, non il peggior giorno:** bound strutturale k ≤ 3,49x, **disaster-SL k ≤ 1,67x = 2,1× piu' stringente** → **C1 di WORST-DAY guardava la grandezza sbagliata**. Il tetto giusto e' l'invariante `n_asset · frac · scala · disaster_sl_pct ≤ 0,50`, che lega **tre** chiavi. **(iii) Il tetto va sul PRODOTTO, non sulla chiave:** `frac=0,625` + `scala=1,25` = leva **1,562x** e **passerebbe** un tetto *"scala ≤ 1,25"* — e WORST-DAY aveva appena pubblicato che alzare `frac` da solo *"non produce k=1,25"*: **combinato con la scala lo produce eccome.** 📌 **Gate proposto `GATE SCALA-01`** (9 condizioni, fra cui **tetto sul prodotto** e **A6 anti-recency**: `k_ammesso` calcolato **togliendo gli ultimi 90 giorni** dev'essere ≥ k richiesto), perche' **la scala e' invisibile a ogni gate esistente** — Sharpe **1,5051 identico a tutte le celle di k**: `deflated_sharpe` e `marginal_vs_tp01` **non falliscono, non vedono la variabile**. ✅ `weights_tilt_null` invece **passa con potenza**: peso implicito TP01 **0,750000 a ogni k**, `max|target(k) − k·target(1)| = 0`, e il **controllo positivo** (scala sulla sola gamba TP01 = cio' che farebbe `target_vol`) lo porta a **0,789** e viene smascherato. ✅ **IL NODO E' SCIOLTO (2026-08-23, `r0823_sl_anchor.py`, §40) — E LA DICHIARAZIONE DI NON-MISURABILITA' ERA FALSA: IL LOG BASTAVA.** *(3ª conferma della regola del 26/07: un blocco dichiarato e' un'IPOTESI, non un fatto.)* 📌 **L'attesa e' stata scritta PRIMA di guardare, derivata dal codice, e ha predetto le soglie esatte:** rotolante e **simmetrico**, innesco **+5,263%** / **−4,762%** (il fattore 0,70 si semplifica e la condizione diventa una condizione **sul mark**, non sullo stop). **Il fatto e' confermato:** su 1443 giri i 15 `placed` sono **5 aperture + 7 ribilanci + 3 A POSIZIONE FERMA** (21/08, `HOLD (a target)`, **0 ordini**, trigger spostato di **+5,74/+5,81/+5,38%** = appena sopra la soglia predetta); e sul venue **l'ordine di stop e' 2,5 giorni piu' giovane della posizione che protegge**. 🚨 **MA IL TIMORE E' REFUTATO, e va nel verso OPPOSTO:** uno stop che segue il prezzo **si allontana dal mercato, quindi scatta MENO**. Alla cadenza che gira (**1h**) gli episodi su storia reale sono **0-1 contro 1 del pavimento**, mai piu' di 1 in 30 giorni; e **nell'outage — l'unico scenario per cui il bracket esiste — il ri-ancoraggio e' SPENTO per costruzione** (nessun giro, nessun ri-piazzamento) ⇒ **un episodio solo**. **Il 37,5% resta il costo di un episodio singolo, il margine 1,33× e' quello vero, la gamba di WORST-DAY REGGE.** 🚨 **Due cose indipendenti da k, da sapere comunque:** (i) **il nome inganna** — *"disaster-SL −30%"* suggerisce un massimo di perdita per trade che **non esiste**: su cicli a ingresso proprio il rotolante lascia passare perdite oltre −30% **senza scattare** nel **0,03%/0,96-2,84%/7,22-13,33%** dei cicli (24h/7g/30g) e il peggior DD dall'ingresso e' **−60,6% BTC / −61,5% ETH**; (ii) 🚨 **TRAPPOLA VIVA: l'accumulo e' funzione della CADENZA DEL CRON, e il docstring di `book_execute.py` prescrive "ogni ~230 minuti" mentre il cron gira OGNI ORA** — chi "correggesse" la cadenza verso il docstring sposterebbe il libro sulla riga **4h, dove BTC RADDOPPIA gli scatti** (2 contro 1; a 24h ETH arriva a 5). **Il docstring e' sbagliato e la configurazione che gira e' quella giusta.** ⚠️ **Limite dichiarato: 0 ri-ancoraggi verso il BASSO osservati su 3** — 2 mesi di vita del libro in **un solo regime** (BTC ~$66,5k → ~$78,6k), mai un calo del mark >4,76% con posizione aperta. **La simmetria e' un fatto di CODICE** (un solo `abs()`, esercitato in entrambi i versi), **non un fatto OSSERVATO**: la prima osservazione utile arriva al primo ribasso >5% con posizione aperta. **Seconda soglia dichiarata:** il fallback dell'equity oggi scatta **0 volte su 1.442 giri**; sopra il **2% dei giri in 90 giorni** il libro girerebbe a leva **mista** e `g(k)` smetterebbe di descriverlo. **REGOLE NUOVE:** (a) **una data in un gate va giustificata col COSTO della misura, non con la sua difficolta' percepita** — due gate d'attesa eliminati in una sera perche' nessuno aveva contato i secondi; (b) **una verifica esterna a €0 va fatta PRIMA di qualunque misura che ne dipenda**, e si fa **sul venue, non sul sito** di chi la dichiara; (c) **un gate superato non e' un numero confermato**: differenze e livelli ereditano la fortuna d'ancora in modo diverso; (d) **un veto d'integrita' sorveglia l'asse su cui e' stato scritto** — contare *se* il dato c'era non dice *quanto* del giorno copriva; (e) **una regola operativa va provata contro il codice che dovrebbe eseguirla**, o si discute per mesi di un knob che non esiste; (f) **quando due stimatori di coda non concordano si cita la banda**, non quello che conviene. - 🌊 **QUINTA ONDATA 2026-08-23 (12 filoni + critico di chiusura, `research/wave-0822`) — 0 candidati su **57 filoni cumulativi**, 1 candidato scoperto GIA' IN PRODUZIONE SENZA GATE, il gradino di leva delimitato, e un critico che ha falsificato **due sue attese e tre miei numeri**.** Diario `docs/diary/2026-08-23-wave-chiusura-critico.md`; registro `docs/research/RESULTS-0822.md` §46-57; 17 script `scripts/research/r0823_*.py` (15.443 righe, compilano tutti, ognuno gira da solo). **Libro, pesi, cron, config INVARIATI.** 🚨 **(1) IL RISULTATO PIU' IMPORTANTE NON E' UNA STRATEGIA NUOVA: E' CHE LA PIU' FORTE GIA' MISURATA GIRAVA SENZA GATE.** §50 cercava il miglior TERZO sleeve eseguibile a $635: sette candidati, **sette muri diversi, e nessuno dei sette e' una soglia di capitale**. Il piu' forte — **PREVDAY** — sta in monitor **da giugno senza gate pre-registrato e senza deflated-Sharpe**. §54 gliene ha scritto uno (`GATE PREVDAY-01`, **8/10 condizioni oggi**) e le due che mancano sono **la stessa cosa**: 🚨 **la cella che GIRA non e' quella che la selezione onesta sceglie** (e la cella viva **fallisce il DSR**, 0,905), e la selezione onesta compra il libro **LONG-FLAT** — cioe' butta via proprio la gamba per cui PREVDAY fu promosso. ✅ La serie e' **intatta, 1512 barre su 1512** (e' il monitor sano, quello che il difetto `advance()` non tocca) ⚠️ **ma la finestra e' 0,172 anni → MDE 4,72 di Sharpe: il +2,11 forward non e' distinguibile da zero su 26 ENTRY. Qualunque cosa il gate decida, non puo' appoggiarsi al numero forward.** 🚨 **(2) IL GRADINO DI LEVA E' DELIMITATO: 1,25x REGGE, 1,50x E' BOCCIATO, k max difendibile 1,40.** §53 lo attacca 6 volte col funding dentro: **5/6 falliscono**; il 1,50x cade sul peggior giorno strutturale (**21,48% > 20%**). L'incrinatura e' il ramo **`eq_fallback`**, dove **la scala non apre il buco: lo MOLTIPLICA**. ✅ Aritmetica dei tetti verificata sul config che GIRA, 3/3 al centesimo: disaster-SL ⇒ **k ≤ 1,67** · peggior giorno ⇒ k ≤ 3,49 · scettico ⇒ **k ≤ 1,40**. ❌ **(3) TRE MECCANISMI DI PROTEZIONE REFUTATI, E DUE PER LA PREMESSA.** **TAIL-HEDGE (§46):** la premessa cade **prima del prezzo** — il maxDD **SALE in 162/162 celle**, a ogni lente di f (f=1,00 regalato compreso), perche' il beta del libro al sottostante e' **+0,076**: *non si assicura un libro che nei crash e' gia' quasi piatto*. **TP01-TWIN (§49):** un ensemble di definizioni di trend protegge **PEGGIO** — 0/24 ancore nei 4 anni recenti, **3,2x peggio nel 2022**, −0,127 di Sharpe hold-out; e i meccanismi **non erano ridondanti** (corr di posizione 0,61): la ridondanza non era il problema. **ANCHOR-ENSEMBLE (§47):** eseguibile, ma su TP01 il drift **non puo'** cambiare per **algebra** (`lordo_ens == media(lordi)`, residuo 1,4e-17); il segnale c'e' su **SKH01** (+0,312 di Sharpe mediano, maxDD 23,3%→16,6%) ma dentro il libro **non si distingue da zero**. 📌 **(4) IL LEAD DELLO SPOT MUORE DOVE SERVIREBBE.** §52 lo attacca sei volte: **5/6 falliscono**, e cio' che morde non e' nei numeri — e' **nella taglia a cui vengono spesi**. **Regge a $600, si annulla a $272k**: sparisce **esattamente al muro che pretende di spostare.** ✅ **(5) IL COSTO D'ESECUZIONE ENDOGENO NON MORDE (§55):** muro **+0,6%** (dentro la risoluzione MC), saturazione a **$9,5-10M = 30x sopra**, e il fatto trovato per strada — **alla taglia di oggi il costo mancante ha SEGNO NEGATIVO**: il drift a $635 e' **13 bps/anno piu' basso** che a $5.000 per il pavimento `min_order` $5, **~2x** quello che lo slippage costa da $313k a $1M, in direzione opposta. *Il conto piu' preciso non muove il muro: sposta il segno dell'errore, e a questa taglia lo sposta a favore.* ❌ **(6) DUE CHIUSURE DI FAMIGLIA.** **VOLVOL (§48):** la volatilita' del DVOL e' davvero una variabile **NUOVA** (ortogonalita' PASS, max |corr| 0,396) ma **guarda INDIETRO** — picco a lag **−5/−10**, parziale con la vol futura **NEGATIVA**: *un secondo momento non e' automaticamente informazione anticipata*. ⚠️ Ma il filone lo **chiude** su una branca dove dichiara esso stesso **un fattore 44 sotto l'MDE**: e' un'etichetta piu' forte della misura. **XS-AMPIEZZA (§56):** su 11 gambe **la caduta NON era ampiezza — solo il 14%**: e' **selettivita'** (recuperabile, ma sotto l'MDE) **piu' un IC che su quelle gambe vale ZERO**. 🚨 E **`k=5` non e' invariante di scala**: il numero di gambe per lato di XS01 e' tarato su 19 gambe, non e' una proprieta' del meccanismo. 📌 **(7) SOLO 2 FONTI SU 10 MERITANO DI ESSERE RACCOLTE (§51):** la catena **USDC** (**+18% di chiamate, non +90%**) e una **campagna a termine** di book depth. Il criterio di **ricostruibilita'** ne uccide 4 da solo — *se lo puoi ricostruire domani, non raccoglierlo oggi*. ⚠️ **(8) ERRORI MIEI, corretti dentro l'ondata** (tutti numeri gia' pubblicati, due in questo file): (a) **"la convinzione di TP01 sta spesso a 1/3 o 2/3"** — **falso**, `tsmom_blend` media tre `np.sign()` → direzione in {0, 1/3, 1} dopo il clip: **il bucket 2/3 NON ESISTE**, la famiglia ha **UN** grado di liberta'; trovato **indipendentemente da due agenti**. (b) **catena USDC "+90% di chiamate"** → **+18%** (i 587 erano il conteggio grezzo, senza il filtro OI≥100 del collettore; al venue: **113 USDC contro 649 inverse**). (c) **"le opzioni BTC sono fuori a $3.000 per il lotto"** → quello e' il **collaterale per VENDERE**; comprare costa il **premio** (`min_trade_amount` 0,01) e **il muro vero e' il TICK da 5,00 USDC** (una put che vale 0,82 non e' quotabile sotto 5 = pavimento di prezzo **6x**). (d) **"il gradino vale +1,8a / +€164"** — era la lettura a **muro FERMO**, convenzione **mai dichiarata**; a muro mobile fa **+2,98a**, e le due distano **1,2 anni**. (e) **"la coda muove k\* di 1-2 unita'"** → **4,6**. 🚨 **(9) IL CRITICO DI CHIUSURA (§57) — repliche 6/6, ma tre numeri di testa vanno riscritti.** ✅ Ha **riprodotto con macchineria propria** i quattro muri **al dollaro**, il funding (**−2,1597%/anno**, e da implementazione indipendente TP01 2,138% con rapporto condizionale 1,93x/2,58x), il dShFULL di §42 (**−0,4502**) e ✅ **che il muro E' esattamente `prelievo/perpetua`** su 4 lenti su 4 — *il nucleo quantitativo dell'ondata regge*. Le tre cose che cambiano — **la banda del muro**, **«N/N ancore» = ~2 osservazioni** e **il 1,50x bocciato** — sono gia' scritte nei bullet a cui appartengono, sopra. In piu': **tre baseline diverse sotto lo stesso nome «libro 75/25»** (`hourly` 1,683/11,22% = la lente di **ogni muro e traiettoria** · `canonical` 1,800/9,56% · mediana d'ancora 1,626/10,4%) — **spread 0,12 di Sharpe e 1,7pp di maxDD, piu' grande di quasi tutti gli effetti che l'ondata misura**, quindi *un Δ accostato al baseline sbagliato cambia piu' del Δ*: **ogni numero va scritto con la sua lente attaccata**. ⚠️ E il **pilastro del canale funded** (§21, XS01 fuori campione) ha effetto **+1,12 contro un MDE di 1,13**: sta *esattamente* al proprio limite di rilevabilita', e viene propagato fino a P(≥50 €/g) come se fosse noto a due cifre. *(Equita': §21 gira anche un null di permutazione a fee zero, p=0,013, che ha piu' potenza del t-stat — il problema non e' «nessuna evidenza», e' la precisione attribuita al livello.)* ✅ **A credito dell'ondata: quattro auto-correzioni in 24 ore** (§45 falsificato da §52; §39 falsificato lo stesso giorno; la regola «overlay non causale» ritirata; «`dealer_net_gamma` e' il GEX invertito» ritirata leggendo il sorgente). **E' il dato piu' sano dell'ondata.** 🚨 **(10) LA RISPOSTA AL MANDATO, in una sola unita' (€/giorno a $635):** gradino di leva 1,25x **+0,046** · lead SPOT +0,017 · PREVDAY al 15% de-luckato +0,014 · BIN-FREQ +0,011 · MAKER +0,005 · **funding (costo scoperto) −0,023**. **Somma di TUTTI i lead positivi, se fossero autorizzati e additivi (non lo sono, e nessuno e' eseguibile oggi): +0,036 €/giorno.** Sullo stesso motore e sugli **stessi percorsi**: **€250 → €500 al mese porta P(20a) dal 14% all'85% e la mediana da 23,4 a 17,3 anni.** **VERDETTO DELL'ONDATA: `NIENTE CHE AVVICINI I 50 €/GIORNO.`** Ha prodotto (i) un **costo gia' in essere** che porta P(20a) a €250/mese dal 49% al **14%** (il funding), (ii) **quattro monitor rotti** che avrebbero fatto decidere un gate al contrario, (iii) un **punto singolo di guasto** nella rete di sicurezza (il trasporto degli allarmi), (iv) **tre lead reali tutti bloccati da qualcosa che non e' la ricerca**. **Il suo valore e' DIFENSIVO ed e' reale: ha impedito decisioni sbagliate.** ❌ E **nulla di sepolto sotto uno «SCARTATO» merita di essere riesumato**: il candidato piu' forte non promosso vale **+0,014 €/g** de-luckato e gira la cella sbagliata. 📌 **La riga che chiude cinque ondate e 57 filoni: la ricerca ha smesso di essere il vincolo binding il 26/07, e ora cinque ondate lo hanno CONFERMATO invece che ribaltarlo. I vincoli binding restano due: il capitale che entra e il conto che non sparisce.** - 🌊 **SESTA ONDATA 2026-08-23 (12 filoni, §58-69, `research/wave-0822`) — 0 candidati su **69 cumulativi**, 1 finding che riguarda l'OBIETTIVO stesso, 2 appoggi tolti a decisioni gia' prese.** Registro `docs/research/RESULTS-0822.md` §58-69 + sezione di sintesi in fondo; 12 script `scripts/research/r0823b_*.py`. **Libro, pesi, cron, config INVARIATI.** ⚠️ **PROVENIENZA DIVERSA DA OGNI ALTRA ONDATA, e va detto per primo:** la sessione si e' chiusa dopo che gli agenti avevano scritto gli script e **prima** che i verdetti fossero consolidati — le 12 righe restarono `_in corso_` e **i messaggi finali degli agenti sono persi**. I verdetti pubblicati **non vengono da quei messaggi: vengono da una RIESECUZIONE dei 12 script** (07:38-08:06 UTC, sequenziale; log in `logs/r0823b/`, che e' **gitignored** ⇒ il registro e' l'unica copia versionata). 📌 **La regola del 26/07 — *un numero pubblicato deve avere uno script committato che lo riproduce* — e' cio' che ha impedito la perdita dell'ondata.** Estensione: **un'ondata interrotta si recupera solo se ogni script calcola il proprio verdetto a RUNTIME**, non se il verdetto vive nel messaggio dell'agente. 🚨 **(1) §58 — L'OBIETTIVO DEL PROGETTO HA DUE DEFINIZIONI OPERATIVE IN USO, E DANNO 33,9% CONTRO 0,33% SULLA STESSA DOMANDA.** A **FLUSSO** (quanto esce al mese: la lente del canale funded) il massimo a 36 mesi e' **33,9%**; a **RICCHEZZA SOSTENIBILE** (la lente dei muri e del piano) e' **0,33%**. **Per cinque ondate i due corpi di lavoro sono stati confrontati come se parlassero della stessa cosa.** E l'ottimo di `P(>=50/g)` **non e' l'ottimo di J**: 37,3% contro 13,9% alla leva argmax-J. Il libro di oggi a 36 mesi: mediana **0 EUR/g** di flusso (non preleva), capitale mediano $22.467 = **3,59 EUR/g** di rendita. **REGOLA: un obiettivo si dichiara nella sua definizione operativa PRIMA di ottimizzarlo** — qui due definizioni entrambe difendibili differiscono di **cento volte**. 📌 **(2) §61 — la politica di ri-acquisto dei biglietti era CABLATA e mai dichiarata come scelta** (compra subito, il piu' grande, in tutti e 6 gli slot, con qualunque soldo): e' **la piu' aggressiva della famiglia**, e **da li' escono TUTTI i numeri del canale funded**. Mappata la famiglia (7 tempi x 2 taglie): **il massimo di famiglia E' il cablato** (4,0%), spread 4,05pp, prezzo della prudenza 4,05pp di bersaglio per 2,05pp di rovina; «solo dai payout» **non vincola nulla** a $654 (dopo il primo biglietto restano $75, sotto il piu' economico). **La riga che il filone stampa da solo: ottimizzare la politica vale +0,00 EUR/g, versare EUR 500/mese ne vale +15,75.** 🚨 **(3) §67 — IL MURO DI TAGLIA NON NASCONDEVA NIENTE, e il perche' e' metodologico:** a $100.000 nessun archiviato passa, **non perche' sia stato ricontrollato ma perche' i gate pubblicati erano GIA' calcolati sulla serie MODELLATA, che e' il limite a capitale infinito**. Censimento 14 voci, **12 con un rifiuto ANCHE sull'edge**; delle 2 in cui la taglia era l'unico motivo nessuna e' una strategia (XS01, GTAA01). Muri di taglia caduti **5 su 14, tutti nell'ondata 22-23/08**. ⚠️ **Cio' che TOGLIE: il gate pre-registrato XSR01 del 23/10 legge un monitor tarato sul pavimento del venue SBAGLIATO** — C* vero **$15.000-20.000** contro i ~$3.000 riportati da HL-EXEC con un criterio piu' permissivo. **Decisione dell'operatore:** riscrivere la soglia **adesso**, dichiarando che la si riscrive prima di vedere l'esito, oppure lasciarla e **citare il difetto alla decisione** — non c'e' una terza via pulita, e toccarla guardando l'esito sarebbe selection-on-holdout. 🚨 **(4) §64 — LE DUE SUPERFICI OPZIONI SONO LA STESSA SUPERFICIE** a strike appaiati, su entrambi gli assi (prezzo equo identico per costruzione; mezzo-spread Δ **−0,21/−0,38 pp**; `f_venue` Δ **+0,005/−0,011**) ⇒ **la raccomandazione di §51 (raccogliere la catena USDC, +18% di chiamate/giro) NON e' giustificata dalla ragione che porta**: il `f` di VRP01 misurato sull'inverse **non e' «il numero della famiglia sbagliata», e' lo stesso numero**. ⚠️ **(5) §60 — la politica multi-conto MISTO, scelta il 25/07, NON e' piu' l'ottimo:** oggi vince **MISTO-A** (`P(>=50/g)` **9,27%** contro 6,60%) su 288 celle; **mediana 0,00 EUR/g in tutte e sei**. 🚨 **(6) §63 — IL FORFAIT 33% E' LA CASELLA SBAGLIATA per i payout di una prop firm:** il trader **non possiede il conto ne' le posizioni** ⇒ nessun realizzo di cripto-attivita', e **`c-sexies` (33%) e `c-quater` (26%) sono ENTRAMBE fuori categoria**; le fonti convergono su **LAVORO AUTONOMO** e **nessuna prassi ufficiale esiste**. ✅ La conclusione di §37 regge su tutta la banda; il costo della questione vale **−8,21 EUR/g** fra i due estremi. 📌 **Domanda NUOVA al commercialista, DIVERSA da quella aperta il 07/08** sui derivati. ⚠️ **(7) §69 SCETTICO — replica (3,4% contro il 2,6% pubblicato) e poi toglie precisione:** SE del drift di XS01 **9,6%/anno** ⇒ a −1 SE `P(>=50/g)` **1,6%**; morte-firm da evidenza pubblica **12-19%/anno** contro il **10% assunto** (EV regge, break-even >55%); max-J dal **puro rumore** su 360 celle **0,069** contro **0,303** osservato. **Raccomanda di non cambiare nulla.** 🚨 **E il pattern conta piu' del singolo numero: 42% → 7,8% → 4,4% → 2,6% → 1,6% a −1 SE. Ogni volta che il numero del canale funded e' stato misurato meglio e' SCESO, e non ha ancora smesso.** E' la firma di un numero che vive di ottimismo non ancora misurato, non di una stima che converge. ❌ **(8) GLI ALTRI CINQUE, tutti negativi.** **§59** a regime servono **4 conti da $100k** (i cap di 2 firm) e `P(>=50/g)` **SATURA all'87%** — *non e' una rendita, e' una scommessa ingrandibile ma non rendibile affidabile*; da EUR 635 **1,78 EUR/g mediani**. **§62** la frazione del versamento verso i biglietti e' segnale sul FLUSSO (**+16,3 pp**, risoluzione MC 1,0) ma **0,0 pp** sulla RENDITA e **+12,4 pp** di `P(sotto il versato)`. **§65** la forma della curva dei datati **e' un grado di liberta' nuovo** (scorrelato dal funding, A2 confermata piu' forte dell'atteso) **e non predice nulla**: 0 candidati su 4 rami, DSR 0,108, roll 0,49%/anno = l'ordine del premio. **§66** cross-venue: 2 celle su 8 sopra la propria MDE, **manca un fattore 6,5x** (16,2x per l'arbitraggio), e *per entrare si attraversano gli stessi due book che generano lo scarto*. **§68** il paniere dei quasi-passati fa FULL 1,822 / HOLD 1,323 ed e' al 100° pctl contro gli scartati netti, **ma DSR 0,828-1,000 secondo la PARTIZIONE** (lo stesso difetto del 22/08, applicato al paniere che dovrebbe superarlo) e **dipende da UNA gamba** (PREVDAY). ⚠️ **(9) UN FILONE E' MORTO SU UN BUG E LA CORREZIONE E' DEL COORDINATORE, non dell'autore.** `r0823b_quasi_passati.py` terminava con `IndexError: Boolean index has wrong length: 958 instead of 2720` — `Griglia.combo()` indicizzava con `self.idx` (l'unione) un **sottoinsieme di righe**. Corretto col parametro `idx` esplicito **piu' un controllo di lunghezza**; la rinormalizzazione e' **riga per riga**, quindi i valori sono quelli dell'intento dell'autore. **Il verdetto di §68 va letto sapendo su quale codice gira.** 📌 **(10) LA RIGA DELL'ONDATA.** Dodici filoni, zero candidati, **nessun EUR/giorno prodotto**: il valore e' interamente **DIFENSIVO** (§67 e §64 tolgono due appoggi, §69 toglie precisione, §60 toglie un ottimo). **Con questa sono 69 filoni e 0 candidati promossi.** La ricerca ha smesso di essere il vincolo binding il 26/07 e **sei ondate lo hanno CONFERMATO invece che ribaltarlo**; previsione verificabile registrata: **la 70ª dara' la stessa risposta**. I vincoli binding restano **il capitale che entra** e **il conto che non sparisce**. - 💡 **EVITARE IL FUNDING — datati SCARTATI, ma lo SPOT e' un LEAD e la domanda fiscale vale piu' del risparmio (2026-08-23, `r0822e_funding_avoid.py`).** Registro §39. **Libro/pesi/cron/config INVARIATI.** Primo filone della sessione che poteva **restituire** drift invece di toglierlo. **Il segnale resta CONGELATO** (TSMOM 30/90/180, vol-target 20%): cambia solo lo **strumento**. | variante | ShFULL | ShHOLD | drift | Δdrift | muro | |---|---|---|---|---|---| | **A) perp (oggi)** | 1,513 | 1,154 | 17,08% | — | **$325,0k** | | D) TP01 datato + SKH01 perp | 1,507 | **1,118** | 17,53% | +0,47% | $319,5k | | **E) TP01 SPOT + SKH01 perp** | **1,649** | **1,203** | 18,63% | **+1,55%** | **$289,6k (−10,9%)** | | F) nessun carry (irreale) | 1,692 | 1,214 | 19,24% | +2,16% | $276,6k | ❌ **DATATI: NON CONVIENE.** La tesi condizionale **regge** (funding condizionale **1,94×/2,59×** l'incondizionato — ✅ replica indipendente del 1,86-2,55× — contro basis **1,47×/1,66×**: in **livello** i carry sono identici, il datato vince **solo perche' si riprezza meno**), ma il vantaggio e' **tutto 2019-2023**, ~0 o avverso dal 2024 → **ShHOLD −0,034 negativo a 0/23 offset** e **gate iso-volatilita' FALLITO**. SKH01 sui datati **peggiora** (turnover **48-57×/anno** contro 6,6-8,4× di TP01 → lo stesso mezzo spread gli costa **7 volte tanto**). 💡 **LEAD: lo strumento a carry ZERO esiste ed e' lo SPOT** (`BTC_USDC`/`ETH_USDC`, taker **0,0** oggi, min 0,0001). TP01 e' long-flat e supera 1,0× nello **0,102%** dei giorni → il tetto non morde; **+1,55%/anno di drift a volatilita' IDENTICA** (supera il gate iso-vol), muro **−10,9%**. ⚠️ **NON e' un candidato, tre ragioni dichiarate:** (a) **SKH01 non e' esprimibile sullo spot** (long/short); (b) la **fee 0 e' dichiarata temporanea** e **`fee_watch` non sorveglia lo spot** — se sparisse, **−13% del vantaggio** (misurato); (c) 🚨 **la domanda fiscale aperta vale PIU' del risparmio**: se i derivati sono `c-quater` (26%) e lo spot `c-sexies` (33%), **7 punti su un CAGR del 17,9% = ~1,25%/anno**, cioe' **piu' di quello che lo spot porta** → **la domanda al commercialista viene PRIMA di qualunque prova**, ed e' la stessa gia' aperta dal 07/08. 🚨 **MURO EREDITATO FALSIFICATO (correzione a §34, scritto poche ore prima):** *"tutti i futures datati Deribit sono INVERSE, non esiste una linea USDC datata"* e' **FALSO** — esistono **16 datati USDC su BTC/ETH** (il piu' vecchio `BTC_USDC-25SEP26`, creato **2026-05-07**), taker **identico al perpetual**, min 0,0001 BTC / 0,001 ETH. ✅ Verificato con GET pubblica. **La svista e' di NAMESPACE:** `get_instruments?currency=BTC` **non li ritorna**, stanno sotto **`currency=USDC`** — *e il coordinatore ha commesso la stessa svista al primo controllo, ottenendo 0.* **Il muro vero e' un altro: 3,5 mesi di vita e ZERO roll trimestrali mai eseguiti.** *(6ª volta nell'ondata che l'eseguibilita' non e' il vincolo.)* 📌 **REGOLA: il carry si misura sul LOG del rapporto dei prezzi, mai sulla media aritmetica delle differenze** — quella contiene `(var A − var B)/2`, che qui vale **1,48%/2,60% l'anno = 2-4× l'effetto cercato**. Controllo che lo rende visibile: col metodo aritmetico il perpetual "sovra-rende" il proprio indice di +0,4/+0,5%/anno, col log ~0. **Stessa forma della regola UCITS del 26/07**, in veste nuova. ⚠️ **BUG in famiglia gia' nota, e NON visto dal numero:** `fund_*.parquet` etichetta l'indice **all'istante T**, `al.get(a,'1h')` la barra **all'inizio** → appaiarle **sfasa di un'ora** (corr **0,996 al lag +1**, ~0 al lag 0), gonfia la sd della base da 8 a **68-86 bps** e produceva un finto **+0,32%/anno nel verso atteso**. 📌 **Si e' visto dalla VOLATILITA' (+1,07pp su una strategia identica), non dal numero.** Il pezzo vero vale **+0,07%/anno**. **REGOLA: due serie temporali dello stesso progetto possono avere convenzioni di etichettatura diverse — verificare col LAG, non fidarsi dell'indice.** - **Sweep "strategie alternative" (2026-06-20) — 104 ipotesi / 153 agenti / NIENTE di nuovo regge.** Ricerca onesta a largo spettro su BTC/ETH+DVOL (harness condiviso vettoriale leak-free `scripts/research/alt/altlib.py`, 104 script in `scripts/research/alt/runs/`): 11 famiglie (breakout, trend non-TSMOM, mean-rev gated, DVOL/vol, cross-asset pairs, stagionalità, overlay rischio, opzioni modellate, microstruttura, ML walk-forward, combo). 16 promettenti, **1 sola** sopravvissuta alla verifica avversariale (3 scettici) e comunque NON deployabile. Conferma forte del soffitto ~1.3: ogni PASS era hold-out-fitting o **TP01/TSMOM travestito** (trend-beta del toro). Unico LEAD: **STA05** (EWMA-cross ensemble, **long-short**) — leak-free, plateau, corr hold-out **0.53** a TP01, il blend 0.75·TP01+0.25·STA05 alza l'hold-out 0.31→0.59 (full 1.30→1.24, DD 14→16%); MA hold-out corto (536g) → **forward-monitor, non sleeve.** Lezione harness: valutare lo Sharpe **MARGINALE vs baseline TP01** (non assoluto) + esigere plateau e jackknife drop-one-month sull'hold-out prima di PASS (hanno ucciso 13/14 falsi positivi). Diario `2026-06-20-alt-strategies-100agent-sweep.md`. --- ## 2026-08-25 — «Mettere l'ETF nei giorni in cui il libro è flat»: SCARTATO Script `scripts/research/r0825_capitale_fermo.py` (calcola il proprio verdetto a runtime). Nasce da un'osservazione dell'operatore: il libro live sta **flat il 28,0% dei giorni** sull'intera storia (**75,6% nel 2026**, 77,0% nel 2022) → quel capitale fermo è un'occasione? ### L'esito, a ISO-RISCHIO (vol 11%, M6) | linea | drift | Sharpe | maxDD | |---|---:|---:|---:| | BOOK da solo | 14,80% | **1,35** | **−12,1%** | | 50/50 statico | 15,41% | **1,40** | −19,6% | | **DINAMICO (ETF se flat)** | 11,13% | **1,01** | −14,7% | | ETF da solo | 9,53% | 0,87 | −20,2% | **Il dinamico perde contro entrambi.** E il null a maschera casuale (400 estrazioni, stessa quota 28,0%, stessa struttura a blocchi di 20g) lo mette al **30° percentile**, p 0,698: **fa peggio di una maschera a caso della stessa frequenza**. ### I motivi — cioè quello che chi riapre il tema deve battere - 🚨 **A ISO-NOZIONALE il dinamico SEMBRAVA vincere**: drift **17,09%**, il più alto di tutti. Ma aveva anche la vol più alta (16,90%). È esattamente la trappola di **M6**: a iso-nozionale un veicolo a vol bassa perde per costruzione e uno a vol alta vince per costruzione. *Il de-levering è il PRIMO test, non l'ultimo.* - 🚨 **IL MECCANISMO CHE SEMBRAVA OVVIO NON ESISTE.** Aggregato: nei giorni flat l'SPY rende **4,91%**, negli altri **21,48%** → differenza **−16,57%**, e la storia si scrive da sola («il libro va flat quando anche l'azionario soffre»). **Falsa.** Scomposta per anno il segno **ALTERNA — 3 anni su, 4 giù** — e il **2022**, l'anno che doveva reggerla (77% flat, SPY −18,2%), ha il segno **OPPOSTO** (+39,9%: nei giorni flat l'azionario andava *meglio*). L'aggregato è un **artefatto di composizione**: i giorni flat si concentrano negli **anni** a basso rendimento azionario, non nei **giorni** a basso rendimento. È **M9** che fa il suo lavoro. - **La spiegazione vera è meccanica e non serve una storia:** scambiare un asset a Sharpe 1,35 con uno a Sharpe 0,87 per il 28% del tempo abbassa lo Sharpe della miscela. Punto. - 📌 **La flat-ness del libro NON porta informazione sull'azionario, in nessuna direzione.** ### Due cose utili cadute fuori dal test 1. **Il 50/50 statico batte il libro sullo Sharpe (1,40 vs 1,35) ma PEGGIORA il drawdown (−19,6% vs −12,1%).** Non è pasto gratis: siccome la rendita perpetua **vive sul drawdown**, per l'obiettivo €50/giorno **il libro da solo resta preferibile** nonostante lo Sharpe più basso — coerente col capitale-rendita $254k contro $646k. Il 50/50 conviene per *capitale a 10 anni*, non per *rendita*. 2. ⚠️ **Difetto del misuratore, catturato da una riga di stampa.** La prima stesura prendeva la maschera flat dalla serie **de-luckata** — ma `deluck` sottrae una COSTANTE, quindi un giorno a rendimento esattamente zero non è più zero e `abs(r) < 1e-12` **non trova niente**. Maschera vuota, dinamico identico al book, e lo script ha stampato **tabelle complete e un p-value** dall'aria seria. Se ne è accorta solo la riga `giorni in cui il LIBRO e' flat: 0 = 0.0%`. **REGOLA: stampare sempre la CARDINALITÀ di una maschera prima di usarla** — un filtro vuoto non solleva, produce il caso degenere e lo veste da risultato.