Files
PythagorasGoal/docs/memory/20-ondate-e-scartati.md
T
Adriano Dal Pastro b237ad2e8b docs: compattazione di CLAUDE.md — 3458 -> 424 righe, memoria in docs/memory/
CLAUDE.md era arrivato a 310 KB (~80k token caricati a OGNI sessione) e la
sua funzione si era sdoppiata: era insieme il manuale operativo e l'archivio
di 69 filoni di ricerca. Le due cose hanno lettori diversi.

I 65 bullet-blocco sono stati spostati VERBATIM in docs/memory/ (nulla
riscritto). Verifica meccanica riga per riga prima del commit: 3272 righe
non vuote, 0 mancanti, 0 aggiunte, zero buchi e zero sovrapposizioni nella
copertura delle regioni estratte.

  10-sleeve-e-candidati.md    30 KB  TP01 XS01 VRP01 SKH01 GTAA01 XSR01
  20-ondate-e-scartati.md    126 KB  69 filoni, ogni scartato col suo perche'
  30-piano-capitale-fisco.md  59 KB  muri, versamenti, venue risk, fisco, prop
  40-produzione-e-deploy.md   66 KB  esecutore, tripwire, monitor, PRIIPs/UCITS
  50-dati-e-feed.md           14 KB  difetti del dato, catena opzioni
  60-metodo-e-gate.md          4 KB  i gate di altlib.py

In CLAUDE.md resta solo cio' che serve a non sbagliare una decisione: stato,
book live vs book di ricerca, i numeri da citare e quelli da NON citare,
7 decisioni vincolanti dell'operatore con "cosa le riapre", 6 gate
pre-registrati con la data, 9 debiti aperti non riparati, le regole di
prim'ordine (D/M/C/P/N, distillate dalle 113 righe che contenevano REGOLA),
IL DATO, metodologia, stack/struttura/comandi.

Tre fatti che erano sepolti in 3400 righe e ora stanno in testa: le TRE
baseline diverse che girano sotto il nome "libro 75/25" (spread piu' grande
di quasi tutti gli effetti misurati), il funding non modellato in nessun
backtest (-2,16%/anno), e che «N/N ancore» vale ~2 osservazioni.

Verificato prima del commit: 36/36 percorsi citati esistono su disco,
708 test collezionati, code fence bilanciati. Nessun file di codice toccato.

Convenzione aggiunta (§14) perche' il file non torni a crescere: quando un
risultato CAMBIA UNA DECISIONE si aggiorna CLAUDE.md; quando aggiunge
racconto, va in docs/memory/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 08:50:02 +00:00

1402 lines
126 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 **RVIV**, dove VRP01 incassa IVRV).
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, fade<follow) →
qui testato l'UNICO angolo nuovo: la **gestione d'uscita** e il **claim 74%**. Su BTC/ETH certificati
(H1→5m/15m; M1 non nel feed): **WR reale 3037%** a RR 1.52 (SOTTO il null gambler's-ruin 40% =
P(+1.5R prima di 1R)=1/(1+1.5) → il ritest tocca il target MENO di una moneta), **expectancy R
negativa a ogni schema/fee/finestra/asset** (1.2…−3.3R netto). **Il 74% si fabbrica avvicinando il
target**: sweep rr1 0.5→2.0 mostra WR salire (51→32%) con expectancy R INVARIANTE (WR alto = target
vicino, non direzione). DSR 0.000 (48 trial); a **fee 0** expR 0.10/Sh 0.63 → **non è morte-per-fee,
l'edge lordo non c'è** (residuo = beta di trend dei time-exit); parziale+BE+runner = 3-4 ordini/trade,
alcuni sub-min-order a $600. **Regola candidata:** il win-rate di uno schema parziale+BE non è merito
(≈1/(1+rr1)); convertire ogni claim "WR X%" in **expectancy R netto fee** prima di crederci (helper
`winrate_is_a_knob()`). Diario `2026-07-07-crt-topdown-74winrate.md`. Book/pesi INVARIATI.
- **Ondata WEEKEND ven→lun (2026-07-17, 4 agenti) — SCARTATO 4/4; famiglia CALENDARIO dichiarata
SATURA; 1 fatto strutturale difensivo sul book.** Goal "strategie che lavorino solo ven→lun a
timing diversi". (1) **WK-DRIFT** (144 trial, griglia ore ven×lun × L/S × asset): il drift weekend
è **beta B&H a esposizione ridotta** — null weekday: Fri = 71° pctl, sotto Mon e Sun (nessuna
specialità); DSR 0.001; hold-out negativo **anche a fee zero**; boundary ARTIFACT-RISK. (2)
**WK-COND** (5 gate causali × 9 timing = 99 combo): 5/5 earns_slot=False, boundary ARTIFACT-RISK
5/5; il gate TSMOM è TP01-in-weekend (β 0.67, re-timing del trend); FOLLOW-del-venerdì si inverte
OOS (il lead prevday NON si trasferisce al weekend); l'unica variante HOLD+ (vol HIGH70) non è
selezionabile in-sample = trappola selection-on-holdout. (3) **WK-INTRA** (132 celle 1h/15m:
Donchian weekend, gap "CME" dom22, magnete-livelli-venerdì): ~50% celle LORDE positive = **moneta
simmetrica** (diagnostica nuova di famiglia-rumore); il claim CME-gap è morto **anche lordo**;
magnete del venerdì inesistente; FOLLOW>FADE 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,29,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,58,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`.