235 KiB
ONDATA 2026-08-22 — esiti per filone (aggiornato man mano)
Regola di lettura: SCARTATO con un meccanismo misurato vale quanto un LEAD — chiude un filone
e smette di farlo pagare alle ondate successive. CANDIDATO richiede marginal ADDS + DSR>=0.95 +
null de-levering superato + eseguibilita' al capitale dichiarato.
| # | filone | verdetto | in una riga |
|---|---|---|---|
| 9 | ADAPTIVE-HORIZON | SCARTATO | il "vincitore adattivo" ha lookback incollato al bordo il 100% del tempo = TSMOM costante a 20g (corr 1.000, dSh 0.00 in 8/8 anni e 0/12 ancore); isolando le celle davvero adattive -> NEUTRAL, corr→TP01 0.90 = TP01 travestito |
| 2 | GROWTH-POLICY | LEAD (condizione, non data) | il libro gira al 7% di Kelly e raccoglie il 15% della crescita massima in log; il gradino eseguibile 1.00x->1.25-1.50x vale 14.7a -> 12.9-11.6a al muro. Ma un solo giorno -10% all'anno porta k* da ~10x a 2x: non si decide su un conto vero con la lente close-only |
| 12 | ORTHO-SCREEN | SCARTATO 7/7 | nessuna famiglia arriva a ADDS+DSR; e il motivo e' aritmetico: su 168 trial il massimo atteso dal rumore e' Sharpe 1.572, SOPRA il soffitto direzionale misurato (~1.3) -> uno screen largo su BTC/ETH direzionale non puo' passare un DSR, per costruzione |
| 3 | XS-LITE | SCARTATO (come sleeve) + 1 soglia pubblicata falsificata | concentrare XS01 non crea uno sleeve nuovo (corr 0.81-0.96 col canonico, DSR FAIL, de-levering non superato) — ma il muro "XS01 serve ~$20k" e' misurato su una diagnostica di TURNOVER: il ribilancio vero smette di passare sotto |
| 10 | FLOW-SQUEEZE | SCARTATO (2 motivi indipendenti) | meta' dell'ipotesi non esiste nel dato (liquidation_*_risk = una sola categoria in 17.229/17.229 righe); l'altra meta' e' sotto la propria soglia di potenza dichiarata prima (MDE 1,056% vs effetto 0,402%) ed e' comunque morta alla nascita (la colonna non e' ricostruibile) |
| 11 | VRP-QUOTE-VERE | SCARTATO + 1 difetto di RACCOLTA in produzione | il campione contiene l'astensione della strategia (0/19 settimane passano IV-rank>0.30) e il titolo non sopravvive all'ora d'ingresso; ma soprattutto: collect_chain.py raccoglie la famiglia di contratti che il conto NON puo' marginare |
| 7 | TERM-STRUCTURE | SCARTATO + 1 LEAD stretto (decisione 2027-02-01) | la pendenza e' un termometro contemporaneo (picco CCF a lag −1h/0h); il carry non paga il bid-ask (18,6 giorni di roll-down per pagare UN round-trip); come gate e' la 5ª occorrenza della ridondanza col trend |
| 6 | OI-PIN | SCARTATO | il max-pain batte uno strike casuale ma non batte mai (0/24) la media a 7 giorni dello spot, un livello che non usa NESSUN dato di opzioni: non e' pinning, e' reversione verso il centro recente con l'OI come stimatore rumoroso di quel centro |
| 8 | VOL-SIZE | LEAD RIDIMENSIONATO — gate 22/12 gia' fallito oggi | dare a SKH01 una size per-trade regge a 23/23 ancore, 8/8 anni, null di permutazione e trasferimento su V1 — ma vale +0,07 di Sharpe di libro, un terzo della fortuna d'ancora del libro stesso (+0,196). Il vol-target di libro e' invece falsificato: compra peso SKH gia' respinto e peggiora l'eseguibilita' |
| — | XSR-REPRO (integrita') | 🚨 DIFETTO DI PRODUZIONE | il numero 1.82 e' SPIEGATO e non era sbagliato (era su una terza lente, e su una barra non ancora chiusa) — ma cercandone la causa e' emerso che paper_xsr registra ~41 minuti di mercato al giorno, non un giorno. Tre gate pre-registrati leggono serie costruite cosi' |
| 5 | SKEW | SCARTATO (Q1, Q2) + LEAD (Q3, gate 2027-02-22) | il prezzo muove lo skew (t 3,1-9,4 su 8/8 test), non il contrario (max |
| — | HL-EXEC (audit di fatto) | 3 falsificazioni misurate | il pavimento vero e' $10 (non $5) e il taker 4,50 bps (non 5,0) — ma il "XS01 serve ~$20k" e' refutato del tutto (nessuna soglia da min-order), il "XSR01 ~$5.000" e' conservativo di 1,7x (vero ~$3.000), e lo slippage "rischio #1" di XSR01 e' refutato con margine 21x |
| — | SLIP-AUDIT (audit di fatto) | SCARTATO = nessun costo nascosto a questa taglia | i backtest a 10 bps RT restano conservativi di ~1,5 bps/lato; nessuna evidenza di impatto sopravvive al null (p=0,274; estremi avversi 1/18 contro 4,7 attesi). Ma la misura ha una data di scadenza |
| — | SCETTICO su GROWTH-POLICY | REGGE (condizione bloccante DECADUTA) | la lente wick accoppiata non cambia il gradino: e' un ricarico moltiplicativo costante ~3,5% sul maxDD, non un'amplificazione (Δ/k cala). Ma su una regola a UN giorno close-only e' esattamente cieca (rapporto INF) -> la lezione 25/07 e' vera e non si trasferisce |
| 13 | BASIS-CALENDAR | SCARTATO + 1 dataset nuovo | il basis dei futures datati E' il funding del perp quotato diversamente (7,33% contro 6,48%/anno): non e' un quarto lato del filone funding, e' lo stesso lato. Premio incassabile +0,85%/anno con IC95 che contiene lo zero |
| — | MONITOR-AUDIT (produzione) | 🚨 4 monitor su 6 rotti, ma la finestra NON e' persa | paper_statarb registra 4 minuti al giorno e il suo gate del 27/09 si ribalta su 2 criteri su 3 (Sharpe registrato +1,96 contro −2,02 ricostruito). La riparazione e' "riparare + RIGENERARE", non "riparare e azzerare": nessuna data di gate si sposta |
| 1 | PROP-ALLOC | LEAD (gate: XS01 fuori dalla sua finestra) + 1 ipotesi falsificata | riallocare per la barriera invece che per lo Sharpe vale +0,016 di J (il 4%): e' cio' che il conto del gambler's ruin prevedeva. Cio' che vale e' mettere XS01 su un conto funded (+0,400) — ma tutto il vantaggio poggia sul drift di XS01 misurato sulla sua finestra di scoperta |
Note che sopravvivono ai singoli filoni
9 — ADAPTIVE-HORIZON (r0822_adaptive_horizon.py, 112 trial dichiarati)
- Sanity: il baseline dell'agente riproduce TP01 canonico a max|diff| = 0.0 (n=2719).
- Il controllo giusto NON era TP01 ma il miglior lookback COSTANTE: senza quel controllo il null confonde "adattare paga" con "un orizzonte piu' corto paga su questo campione". L'agente se l'e' costruito da solo dopo aver visto l'argmax incollato al bordo, e ha dichiarato i trial in piu'.
- ⚠️ Segnalazione, NON proposta: 30/90/180 e' rango 18/24 in-sample nella propria famiglia di orizzonti (10/24 sull'hold-out), ma la superficie di L e' un crinale di rumore — il salto di Sharpe fra L ADIACENTI e' +0.18, cioe' il 47-67% dell'intero vantaggio del vincitore su TP01, ed estendere la griglia ha spostato l'argmax da L=20 a L=15. "Piu' corto e' meglio" e' un max-of-k su una superficie frastagliata. Nessun cambio a TP01.
- Riaprirebbe il filone: un rilevatore il cui L si muove DAVVERO che batta il miglior L costante (non TP01) in >=6/8 anni appaiati con corr→TP01 < 0.6 — es. BOCPD/PELT vero, non provato.
4 — DEALER-GAMMA (r0822_dealer_gamma.py, 136 statistiche dichiarate)
⚠️ DIFETTO DI DATO, il risultato piu' riusabile del filone: dealer_net_gamma e' il GEX col SEGNO
INVERTITO — corr -0.95 BTC / -0.89 ETH contro la ricostruzione da manuale sulla catena
(962/1116 snapshot, ~280-316 strike), fit dng ~ -0.7*GEX. Chi lo usasse col nome che porta
leggerebbe ogni regime al contrario. Spiega anche la contraddizione interna del file (corr fra
dng>0 e spot>flip = -0.28 / -0.92).
⚠️ Il file dichiara piu' di quel che ha: cadenza 15 min solo dal 2026-05-01; i 37 giorni
prima sono un punto al giorno -> 90 giorni, non 4 mesi. liquidation_long_risk e
liquidation_short_risk sono COSTANTI ('low' in 17.229 righe su 17.229 non nulle) = zero
informazione. gamma_flip_level congelato nel 61% dei passi su BTC.
- Gate: null de-levering FALLITO (baseline x0.6 stesso maxDD con Sharpe migliore); DSR 0.440
su 64 trial, e nel modo piu' netto — la cella migliore (+4.98 lordo) sta sotto il massimo
atteso dal puro rumore (+5.12).
marginal_vs_tp01inutilizzabile: su 90 giorni full e hold-out COINCIDONO (n_hold_days == n_days == 90). - Null location-matched (aggiunto dall'agente):
gamma_flip_levelbocciato — 96% di accordo conspot > SMA(720h)su ETH; su BTC la SMA nuda da' uno spread MAGGIORE. - Ampiezza effettiva: 73/59 episodi di regime ma 6-8 coprono il 78-86% del tempo -> n_eff 53 (BTC) / 24 (ETH) ore su 2.130. Il regime coincide col MESE (maggio long, giugno short, luglio long).
- ✅ Ricostruibile oggi dalla NOSTRA catena, meglio dell'originale (518 ore dal 01/08, ~209-262
strike/ora, quote_status ok ~100%, segno giusto) — ma la soglia non e' portabile (
dng=0corrisponde aGEX=+5.8e6su BTC): ricalibrarla sui 90 giorni sarebbe la selezione che il progetto rifiuta. Riapertura non prima di ~30-40 episodi di regime = ~2 anni (meta' 2028).
2 — GROWTH-POLICY (r0822_growth_policy.py, 241 celle dichiarate)
✅ Controllo di replica superato: il motore riproduce r0807_piano_netto §2 al numero pubblicato
(EUR250/m -> 19,8a / P 52%; EUR500/m -> 14,7a / P 99%) con path diversi.
📌 Il risultato strutturale: ogni gate del progetto e' INVARIANTE ALLA SCALA. Lo Sharpe misura
1,31 a OGNI cella del knob di leva -> deflated_sharpe e marginal_vs_tp01 non falliscono, non
vedono la variabile. E' per questo che la leva e' l'unica leva del libro mai esaminata in 2 mesi.
- Serie de-luckata x0,89: drift 17,11%/a, vol 11,37%, Sharpe 1,51, peggior giorno -3,95%. Netto fee E netto fisco d'accumulo (33% + carry 4a + patrimoniale 0,2%).
- k* empirico ~10-14x (banda 10x a 1500 path / 14x a 2500: la POSIZIONE non e' risolta), Kelly gaussiano 13,2x. Libro a k=1 -> g 17,0%/a, maxDD mediano 18,1%, P(DD>30%) 1,4%.
- Fragilita' che decide il verdetto: k* e' lineare nell'errore del drift (stimato su 7,4 anni) — -1 SE -> 10x, -2 SE -> 7x, drift dimezzato -> 7x, drift zero -> 0,5x. E allo stress di coda un giorno -10% all'anno porta k* a 2x, -15%/anno a 1x.
- ⚠️ Controllo di plausibilita' FALLITO dall'agente sul proprio output (e riportato): capitale mediano $4,4e12 da $600 a k=14x -> il modello assume ritorno indipendente dalla size. A k>2 i numeri sono aritmetica, non previsioni.
- Gate pre-registrato (condizione, non data): nessuna proposta di k>1 prima di rifare la curva con
la lente WICK ACCOPPIATA (
r0725_prop_coupled) — a leva il breach si valuta sul MINIMO, e la lente close-only usata qui e' quella misurata cieca il 25/07 (raddoppia i breach da daily-loss). - 📌 Sottoprodotto da verificare (tocca un'etichetta del libro live): a
target_vol=20%la vol realizzata di TP01 e' 12,14% — il target vale sulla posizione quando c'e', e TP01 e' long-flat. L'etichetta sovrastima il rischio preso di ~40%.
12 — ORTHO-SCREEN (r0822_ortho_screen.py, 174 trial: 7 famiglie x 24 + 6 controlli)
📌 Il risultato piu' riusabile dell'ondata, ed e' metodologico: il deflated-Sharpe va calcolato di screen (168 trial) e non solo di famiglia (24). Su quel pool il massimo atteso dal puro rumore e' Sharpe 1.572, cioe' sopra il soffitto direzionale misurato del progetto (~1.3). Conseguenza: una ricerca a rete larga su un singolo stream direzionale BTC/ETH non puo' passare il proprio gate — non e' sfortuna, e' aritmetica. Le ondate future o dichiarano famiglie molto piu' piccole in anticipo, o cambiano meccanismo (non-direzionale / cross-sectional). 📌 Per la prima volta nel progetto l'eseguibilita' a $600 non e' il vincolo binding di niente (haircut 0.00-0.01 su 7/7): muore tutto molto prima, sull'edge.
- Famiglie: RSKEW (skew realizzata), TACC (accelerazione del trend), VPX (volume-prezzo), XDISP
(dispersione dei 51 alt come timer), XCORR (corr BTC-ETH), XTAIL (dopo shock 3σ), VRAT
(variance-ratio). Miglior DSR di famiglia 0.633, di screen 0.034.
robust_oosFalse 7/7. - TACC e' l'unica ADDS (corr→TP01 0.09) ma il suo uplift hold-out vive tutto nel 2026 (2025 da solo −0.314) = finestra fortunata. E la domanda della famiglia ha risposta: e' il LIVELLO, non l'accelerazione — la cella scelta si riduce al ritorno a 5 giorni, corr +0.784 col momentum di livello.
- ✅ Tre falsificazioni che chiudono spazio: (1) la mean-reversion non torna in vita sotto due conditioner mai provati (volume, shock 3σ): la selezione in-sample sceglie il ramo di CONTINUAZIONE in entrambi i casi; (2) la dispersione dei 51 alt come timer di mercato e' negativa (−0.899 sulla sola finestra attiva, non e' un artefatto di calendario); (3) RSKEW e' il ritratto del fitting — miglior in-sample dello screen (1.281) e peggior hold-out (−0.494), col segno OPPOSTO all'a-priori teorico dichiarato.
- ⚠️ 6ª occorrenza del null del de-levering (VRAT, maxDD 4.4% ->
k*TP01fa meglio). - ⚠️ Due candidati hanno l'ancora canonica come PEGGIORE delle 8 (TACC, VRAT): la fortuna d'ancora non ha un verso fisso, e guardare solo il canonico a volte inventa un danno.
3 — XS-LITE (r0822_xs_lite.py, 26 celle + 120 valutazioni d'ancora)
✅ Repliche bit-exact prima di ogni delta: XS01 vs sleeves._xsec_returns e XSR01 vs
basket_from_positions(demean=True), entrambe max|diff| = 0.0.
📌 Falsificazione di un numero pubblicato: il muro "XS01 serve ~$20k" non e' un fatto di
Sharpe ma di turnover — e a capitale piccolo il min-order salta la deriva del vol-target
(|Δw| giornaliero 0.001) che non porta segnale, non il ribilancio (|Δw| 0.091-0.157). Capitale
minimo perche' il ribilancio passi: $109 (k=5) / $86 (k=3) / $64 (k=2) di sleeve. Stessa lezione
gia' imparata su TP01 nel 2026 ("a $600 il min-order e' gia' la banda ottimale") e mai applicata a
XS01. ⚠️ L'agente ha usato min-order $10 (Hyperliquid), non $5 (Deribit) — un audit dedicato
sta verificando i minimi veri del venue.
- Concentrare non ripara il rischio #1 di XSR01: XS-LITE regge oltre 50 bps/gamba, XSR-LITE muore a ~28 bps a ogni k, pieno incluso.
- La radice dell'ampiezza non descrive XS01: da 10 a 4 gambe si perde il 2% di Sharpe mediano-di-fase mentre N_hhi passa 6.9 -> 3.0 (il segnale sta negli estremi del ranking; le gambe 3-5 per lato aggiungono rischio quanto segnale). Il collasso arriva solo a k=1 (41%).
- ⚠️ Da inseguire — tocca un gate pre-registrato: lo Sharpe 1.82 di XSR01 NON si riproduce oggi.
Sulla finestra identica a quella di scoperta la lente "paniere" da' 1.75 e la lente "libro" di
paper_xsrda' 2.23; 1.82 non e' nessuna delle due. Spiegazione piu' probabile:data/rawe' gitignored e il cron riscrive i parquet HL ogni notte -> stesso codice, dati diversi (identico allo scoperto del 07/08 su GTAA/TLT). La decisione del 23/10 poggia su quel numero.
10 — FLOW-SQUEEZE (r0822_flow_squeeze.py, 118 trial dichiarati, griglia RIDOTTA per budget)
📌 Sottoprodotto con potenza vera, e chiude un filone: il funding non predice ne' direzione ne' volatilita' — misurato su 53.430 ore / 3 anni di funding Hyperliquid (li' la potenza c'e'): eccesso |<=0,35%| a 24h con segno instabile fra anni, |ritorno| futuro piatto e non monotono. Il filone funding, gia' chiuso su 3 lati come livello di carry, si puo' dichiarare chiuso anche come proxy di AFFOLLAMENTO. Quarto lato.
- Il "segnale" migliore (Sharpe 3,25 su 90 giorni) e' il massimo di 18 celle: DSR 0,103
(0,004 su 118 trial),
implausible_sharpe=True, e su 114 giorni il massimo atteso per caso e' Sharpe 5,40 -> il candidato sta sotto il proprio null. Il 71% del P&L e' in giugno, il 60% in 3 giorni su 114. - Il null "statica travestita" e' superato (sempre-short = −0,67), ma quello di timing casuale location-matched e' al 99,7° pctl che pero' e' il massimo di 18 -> P(per caso) = 0,06: non superato dopo il conto dei trial. Esempio pulito di come si legge un percentile alto.
- ⚠️ Ricostruibilita' MISURATA, non assunta: l'OI della catena (opzioni) contro la colonna dello snapshot (perpetual) da' Pearson +0,03 BTC / +0,21 ETH — non e' la stessa grandezza.
- 💡 Azione possibile, costo quasi nullo (NON eseguita, tocca il cron di produzione): accendere
un collettore orario dell'OI dei perpetual Deribit (una GET/ora, API pubblica). Non ripara
questo filone, ma da quel giorno la storia comincia; oggi ripartirebbe da zero. Il criterio di
falsificazione e' gia' scritto dall'agente: >=12 mesi, eccesso oltre la MDE (~0,3%) e presente in
=3 trimestri su 4.
- ⚠️ Distinzione metodologica utile (nata contraddicendo il suggerimento del coordinatore): qui il vincolo binding NON e' la concentrazione degli episodi (86-87 episodi corti, i primi 8 coprono solo il 20-25% delle ore) ma la lunghezza del calendario (90 giorni). Ampiezza scarsa e calendario corto sono due diagnosi diverse e si curano in modi diversi: piu' episodi vs piu' tempo.
11 — VRP-QUOTE-VERE (r0822_vrp_real_quotes.py, 60 trial + 9 ancore d'ingresso)
🚨 IL RISULTATO DI PRODUZIONE — collect_chain.py interroga {"currency": "BTC"|"ETH"}, che su
Deribit restituisce le sole opzioni INVERSE (regolate in BTC/ETH). Il conto e' in USDC (esegue
BTC_USDC-PERPETUAL). Esiste una famiglia USDC-lineare con lotto minimo 10x piu' piccolo:
| famiglia | min lotto | ~$ per lotto |
|---|---|---|
| BTC inverse | 0.1 | ~$7.700 |
| BTC_USDC | 0.01 | ~$780 |
| ETH inverse | 1.0 | ~$2.500 |
| ETH_USDC | 0.1 | ~$250 |
| Quindi il muro pubblicato "BTC opzioni min 0.1 = $6.210/lotto -> FUORI a $3.000" (congelato in | ||
tests/test_vrp_profit_take.py) e' misurato sulla famiglia che il conto non puo' marginare. |
||
**3ª occorrenza dello schema fee_watch (21/08): un controllo/collettore puntato su uno strumento |
||
| diverso da quello che si trada.** | ||
| ⚠️ MA la verifica indipendente del coordinatore cambia la conclusione, e in meglio: contando | ||
l'open interest famiglia per famiglia (get_book_summary_by_currency, misura mia, non dell'agente) |
||
| famiglia | strumenti | con OI>=100 |
| --- | --- | --- |
| BTC inverse | 1038 | 415 |
| ETH inverse | 932 | 548 |
| BTC_USDC | 686 | 5 |
| ETH_USDC | 660 | 119 |
| -> conteggio corretto come FATTO, **ma l'inferenza che ne ho tratto io ("BTC_USDC e' praticamente | ||
| morto") e' SBAGLIATA**: vedi filone 14 — su queste famiglie l'OI e la negoziabilita' sono | ||
| anti-correlati, e BTC_USDC ha il 93% dei put quotati a due lati. **Il muro sul BTC resta | ||
| per il PREZZO del lotto ($772 su un conto da $635), non per la liquidita'.** | ||
| ETH_USDC resta la gamba giusta su cui puntare, ma per spread e prezzo del lotto (filone 14), | ||
| non per il conteggio di OI. | ||
| ❌ Sottoprodotto RITIRATO: avevo scritto che *"esiste un universo opzioni USDC piu' liquido di | ||
| BTC_USDC (SOL 341, XRP 250, HYPE 172, AVAX 146 con OI>=100)"*. Falso nel senso che serve: quelle | ||
| famiglie hanno piu' posizioni aperte e meno quote — SOL_USDC ha il 9% dei put quotati a due | ||
| lati contro il 93% di BTC_USDC, e il suo miglior bid sta a un tick. |
- Il campione misura la strategia mentre STA FERMA: 0/19 settimane passano il gate IV-rank>0.30, DVOL alla mediana del 7°/11° percentile storico, sottostante +25%/+44%.
- ✅ Replica indipendente del f del 30/07 su campione piu' lungo: f = 0,714 pooled (IC95 [0,690, 0,779], 0/19 osservazioni >= 1,0). Attraversare lo spread costa ~10% del credito.
- ⚠️ Correzione a un numero pubblicato: il forfait fee del sleeve sovrastima il listino vero di 1,44x (BTC) / 1,80x (ETH), non di "~2x". Il segno (conservativo) regge, la taglia no.
- ⚠️ Rischio sul MINIMO, non sulle chiusure: peggior mark infra-settimana mediana −6,4% del rischio, minimo −91,0%; fra le settimane chiuse in utile, minimo −56,9%.
- Gate:
implausible_sharpeFLAGGED su entrambi (0 perdite su 10 -> regola del tre: tasso vero fino al 30%, su un payoff che perde 7,4x il credito);deflated_sharpenon calcolabile (T=10) e l'agente si e' rifiutato di fabbricare una griglia giornaliera al 94% di zeri per superare il T>=30; banda d'ancora: canonico all'89° pctl, mediana onesta 1,45, banda che include il negativo. Il titolo annualizzato (32,58) e' stato deliberatamente non riportato come risultato. - ⚠️ L'agente ha refutato in corsa una propria conclusione: spostare l'ora d'ingresso cambia QUALI STRIKE corrispondono al delta obiettivo -> non e' lo stesso trade un'ora dopo, e' un'altra struttura; la media BTC cambia segno fra le ancore (−1,35% -> +11,22%).
7 — TERM-STRUCTURE (r0822_term_structure.py, 312 trial dichiarati)
🚨 MURO DEL DATO, e vale per ogni filone che usa la catena ereditata: prima del 2026-06-09
bite_archive raccoglieva UNA SOLA SCADENZA per giro (mediana 1, max 1) -> la curva non
esiste. La finestra utilizzabile non e' "3,7 mesi": e' 74 giorni, SE(Sharpe) ~ 2,2.
✅ Ricostruzione certificata contro due riferimenti indipendenti: vs il logger vol_term_*
corr 0,992-0,997 (scarto 0,00-0,30 pt-vol); vs DVOL corr 0,94 con bias −2,2/−2,8 pt-vol = il
segno atteso (DVOL integra lo smile).
- Il test piu' informativo e' quello di RISOLUZIONE: l'unica correlazione col futuro che sembrava qualcosa (h=5g: +0,29/+0,32, 94°/98° pctl vs null a blocchi) cambia SEGNO togliendo l'ultima settimana (−0,22/−0,17). Sette giorni su 70. Nella regressione controllata per il ritorno passato il t di Newey-West sta sotto 1,0 a ogni orizzonte.
- Il confronto che uccide il candidato: il buy&hold sulla stessa finestra. Mediana appaiata su
24 ancore vs B&H = +0,14 (14/24) su BTC e −0,65 (1/24) su ETH. La banda d'ancora
gate_pass=Truein isolamento e' inutile: il B&H passa lo stesso gate. - Confound proprio del filone, misurato: corr(pendenza, RV passata) −0,50/−0,57 contro RV
futura −0,39/−0,38 -> la pendenza e' il premio di vol con la gamba realizzata sostituita da
una implicita = la variabile di
dvol_directional(gia' HEDGE, earns_slot=False su 5 anni). deflated_sharpeNON girato, e la motivazione e' il risultato: su 74 osservazioni l'incertezza di CAMPIONE domina di un ordine di grandezza quella da SELEZIONE — deflazionare 312 trial darebbe un numero preciso e privo di senso.- 📌 LEAD stretto e pre-registrato (l'unico numero non banale: corr(pendenza, RV futura) −0,39): la term structure come previsore di VOL, non di ritorni. Decisione 2027-02-01, si riapre solo se (a) corr <= −0,30 su entrambi gli asset E (b) batte il DVOL a tenore singolo in R² incrementale E (c) supera il null del de-levering. Se (b) fallisce, il filone si chiude.
- ⚠️ Tre bug propri catturati in sessione, tutti del tipo che passa i test pigri: il null del de-levering cercava il primo k salendo invece del piu' grande; la RV futura aveva uno shift di troppo; l'ATM vettorializzato e' stato verificato contro il prototipo (23.544/23.545 righe identiche).
6 — OI-PIN (r0822_oi_pin.py, 516 trial dichiarati, 73 scadenze/asset)
✅ Potenza dichiarata PRIMA di guardare (e questa e' la ragione per cui il verdetto e' credibile): MDE a hte 12 = 0,46%/trade; effetto max-pain osservato +0,273% = SOTTO il proprio MDE. 📌 Il null che decide: il placebo senza opzioni. La cella migliore fa Sharpe 5,59 e batte gli strike casuali (6/72 contro ~2 attesi), ma 0/24 contro la media a 7 giorni dello spot, con cui condivide il 68-77% del segno. Non e' pinning verso uno strike: e' reversione verso il centro recente, e l'OI e' solo uno stimatore rumoroso di quel centro.
- DSR 0,290 (288 trial): lo Sharpe-null atteso e' 6,79 > 5,59 osservato — su 75 giorni il
massimo del rumore batte il risultato.
implausible_sharpescatta. I 5 giorni migliori valgono il 61% del log-equity. - ⚠️
marginal_vs_tp01non puo' dare ADDS per costruzione su questa finestra:multicutvuole=2 tagli annuali da >=120g e
has_insample_edgee' True per default perche' non esiste pre-2025. Un NEUTRAL qui non e' un giudizio. - Haircut a $600: +0,000 (si esegue sul perp) — 2ª conferma che l'eseguibilita' non e' piu' il vincolo binding di questa ondata.
- ⚠️ REGOLA NUOVA (difetto proprio, trovato e corretto in sessione): un placebo si controlla per
BILANCIAMENTO DEL SEGNO prima di usarlo. Il placebo
jitconcordava in segno con la propria regola solo nel 14% dei casi (5% perjit_gex): non era un null, era la strategia invertita, e usarlo fabbricava 3 celle "significative" e un contrasto spettacolare (−8,6 di Sharpe). Un null pulito sta a ~0,50; sotto ~0,35 il suo delta va letto come ~2x il segnale.
8 — VOL-SIZE (r0822_vol_size.py, 28 trial + 23 ancore)
✅ Sanity bit-exact: ricomposizione trade-by-trade max|diff| = 0.0 contro run_asset e contro
sleeves._skyhook_returns().
❌ RITIRATO DALLO SCETTICO (vedi in fondo): il difetto qui sotto NON ESISTE su questo codice.
Lasciato a verbale perche' la regola era stata pubblicata e va vista insieme alla sua smentita.
🚨 DIFETTO DI METODO GENERALE, trovato dall'agente nella propria prima stesura e MISURATO invece
che cancellato: su uno sleeve a equity a GRADINO, un overlay giornaliero e' NON CAUSALE. Tutto il
P&L di un trade SKH01 e' contabilizzato il giorno di CHIUSURA, fino a 3,83 giorni dopo
l'ingresso; moltiplicare la serie giornaliera per <- RITIRATA, vedi sotto
🚨 REGOLA 2 — il null del de-levering e' DEGENERE quando la variante e' una ri-scalatura
(L_t (che usa solo dati <= t−1) passa
qualunque controllo di causalita' scritto sulla serie giornaliera — il look-ahead sta nella
CONTABILITA', non nella formula. Costo misurato: +0,04 di Sharpe hold-out fantasma.
REGOLA: un overlay si applica alla data d'INGRESSO, non a quella in cui il P&L viene contabilizzato.sh(k*base) === sh(base)): il test che serve non e' sul DD ma ISO-PESO sullo Sharpe, altrimenti
si sta solo misurando di quanto e' cambiato il peso di uno sleeve. Qui era decisivo: quasi ogni
variante alzava il peso effettivo di SKH fino a 0,375, e "alzare SKH01" e' gia' stato misurato e
respinto il 26/07.
📌 Il meccanismo NON e' quello ipotizzato: scomponendo la vol trailing di uno sleeve all'88% di
zeri nei due canali, il guadagno FULL viene dalla FREQUENZA (il solo filtro di attivita' fa
+0,051 su +0,061) e non dalla magnitudine (+0,003). Non e' controllo del rischio: e' un
filtro di frequenza, e va chiamato cosi'.
- Baseline del libro, stima onesta (mediana banda): 1,626 FULL / 1,037 HOLD / DD 10,4% — la fortuna d'ancora del libro vale +0,196 FULL / +0,448 HOLD.
- Cella congelata del LEAD (
VTL tv20 w90): size fissata all'ingresso =clip(0,20 / rv90(t−1), 0, 3). ISO dShFULL +0,070 (23/23 ancore), dShHOLD +0,101 (19/23), 8/8 anni positivi, null di permutazione superato in ENTRAMBE le terne di ancore provate, p <~ 0,03 (mediana del null −0,03/−0,05: riassegnare a caso la stessa distribuzione di size danneggia). ⚠️ Autocorrezione dell'agente, da rispettare: quel null gira su 3 ancore delle 23 per costo, e la TAGLIA dell'effetto varia di 3x fra due terne diverse della stessa banda (+0,033 vs +0,111 sulla stessa cella) -> i p-value non si citano a tre decimali: il numero da mettere a verbale e' il segno. Il resto del report e' su 23 ancore piene. - ⚠️
DSR = 1,000dichiarato VACUO, non PASS: lo passa anche il baseline — su una famiglia di perturbazioni della stessa strategia il deflated-Sharpe non ha potenza. Onesta' rara. - ⚠️ Punto piu' fragile, dichiarato: l'asse della finestra e' un picco, non un plateau (w30 nettamente negativo, w180 ~0).
- Gate pre-registrato — e non e' un forward (con SE(Sharpe)~1,4 sei mesi non possono misurare
0,07): e' un secondo trasferimento, la famiglia IV su SKH01_V1, dove il meccanismo dichiarato
prevede un effetto minore (lo stop e' gia' in ATR). Se invece l'effetto e' uguale, la
spiegazione e' sbagliata anche se il numero regge. Entro 2026-12-22, prima di qualunque
modifica a peso/config di SKH01. Deploy solo se ISO dShFULL > 0 in >=20/23 ancore E
weights_tilt_nullpassa. Book, pesi, cron, config INVARIATI.
XSR-REPRO (r0822_xsr_repro.py) — filone di INTEGRITA', non di alpha
✅ Il numero pubblicato e' spiegato e NON era sbagliato. 1.82 viene da una terza lente
(r0725_statarb_demean_skeptic.ret_from_pos, divisore fisso 50), non da quella che ha girato i
gate (basket_from_positions, divisore variabile). Sullo stato del dato del 25/07 ricostruito:
11 numeri pubblicati su 12 riprodotti (Sharpe netta 1.8164, lorda 2.6956, DD −2.585%, lag
1.82/1.19/0.81/0.50, Sharpe 2024 1.0297 / 2025 1.9752 / 2026 3.1078).
📌 Ma il numero di TITOLO e i numeri di GATE non sono mai stati la stessa serie: la lente dei
gate da' 1.79 — ed e' esattamente il "Sharpe 1.79" che il docstring dello scettico gia' citava.
DSR ri-calcolato oggi sulla lente giusta: 0.983 PASS (pubblicato 0.985) -> il gate DSR regge.
✅ L'ipotesi "il cron riscrive la storia" e' FALSIFICATA da due prove indipendenti: (a) il
registro del cron su 54 simboli, 25/07 vs 22/08, mostra crescita di esattamente 28 barre per
tutti con start_reale invariato; (b) lo Sharpe degli anni chiusi si riproduce al quarto
decimale attraverso quattro settimane di riscritture. Cambia una sola barra: l'ultima.
🚨 IL DIFETTO CHE CONTA — paper_xsr registra ~41 minuti di mercato al giorno.
fetch_hyperliquid gira alle 00:30 con END = oggi e scrive la barra del giorno in corso;
advance() processa le barre con ts > last_ts e porta last_ts su quella parziale -> le 23
ore e mezza restanti di ogni giorno non entrano in nessun rendimento registrato.
Misurato (28 barre appaiate contro il replay): 1/28 identiche · corr −0,045 · vol registrata
0,46% contro 2,74% ricalcolata (la strategia e' progettata a 2,3%). Rapporto di varianza 0,0286
-> ~41 min/giorno; stima indipendente dal volume: ~69 min.
✅ Verifica del coordinatore, indipendente: l'ultima barra di hl_btc_1d ha volume 1.274
contro 66.926 e 102.198 dei due giorni precedenti.
⚠️ monitor_health lo dichiara OK e non puo' vederlo: la serie e' fresca e senza buchi.
Una serie fresca, completa e SBAGLIATA passa ogni controllo di freschezza.
⚠️ Stessa forma di codice in paper_statarb (gate 27/09), che per giunta ha un docstring
"barre 1d chiuse" mentre consuma altlib.get(...,"1d") -> resample_tf, che non scarta il giorno
in corso. Segnalato come forma, non misurato -> audit dedicato in corso su tutti e 6 i monitor.
⚠️ Haircut, la seconda gamba del gate 23/10, e' piu' fragile della prima: ticket per gamba
mediano $3,33 / medio $5,98, 63% degli ordini sotto $5; il pubblicato $14,41 non ha alcuno
script committato che lo riproduca ed e' ~2,4x ottimista. A min-order $10 la guardia
formalmente passa ma si esegue un ordine su cinque — e il criterio pre-registrato non lo guarda.
📌 NUMERO ONESTO DA CITARE: lente dei gate, sole barre chiuse -> 1.79 (finestra di scoperta)
/ 1.63 (a oggi). Va sempre citata la coppia (lente, ultima barra chiusa), mai il numero nudo.
📌 GATE 23/10 COMPROMESSO: PARZIALMENTE — ammissione NO (storia chiusa stabile, DSR regge),
forward SI (metrica primaria su una serie scorrelata dalla realta'), haircut SI (parametro senza
script e ~2,4x ottimista). La finestra forward non e' recuperabile a posteriori; riparare
advance() la azzera. Scelta fra gate letto su strumento rotto e gate rimandato con contatore
nuovo: va decisa PRIMA del 23/10, non quel giorno.
5 — SKEW (r0822_skew.py, 37 trial dichiarati)
- Q1 (skew come segnale direzionale): SCARTATO, e non per mancanza di potenza — la potenza c'e' e falsifica. Il prezzo precede lo skew con t da 3,13 a 9,39 su 8/8 test e su entrambi gli asset; in avanti il max |t| su 16 test e' 2,35 contro 2,08 atteso dal rumore, e non replica sul secondo asset. L'unica cella con lead apparente crolla togliendo 4 giorni di rally su 24. DSR 0,163 FAIL; IC95 block-bootstrap sullo Sharpe: [−2,90, +5,86] (ampiezza 8,76).
- Q2 (skew come gate di de-risk): SCARTATO (non misurabile) — nella finestra TP01 e' attivo 5 giorni su 75 con maxDD 0,14%: non c'e' sinistro. Unica cosa leggibile: 5ª firma di ridondanza col trend (il gate spegne 16 giorni in cui TP01 era gia' flat, 16/16).
- 📌 Q3 — LEAD, ed e' il risultato della sessione. Il f=0,73 di VRP01 scomposto (attribuzione
esatta in log, i fattori si sommano):
causa fattore quota del difetto struttura a termine x0,869 42,3% spread denaro-lettera x0,904 30,5% skew x0,920 25,0% fit (controllo) x0,992 2,3% La riga che conta: il sleeve prezza un'opzione a 7 GIORNI col DVOL a 30 GIORNI, che nel 90% delle ore sta ~3 punti di vol sopra l'ATM a 7 giorni -> sovrapprezza ENTRAMBE le gambe. Il "+0,8pp sulla gamba corta" pubblicato il 30/07 — che faceva sembrare corretta la gamba venduta — e' la cancellazione di due errori da ~3pp (−2,97 di termine, +2,79 di skew). ⚠️ E il progetto aveva gia' codificato la regola il 03/07 ("riprezzare term-structure-consistent prima di credere a un numero da struttura BS-flat") e non l'ha applicata alla misura del 30/07. 📌 Verso, e non e' quello che sembra: f_termpassa da 0,83 (IV-rank basso) a 0,93(alto) e supera 1,0 in backwardation, mentre f_skewresta piatto (0,91-0,93) -> **la partemaggiore del difetto si annulla proprio dove il gate IV-rank fa tradare il sleeve**, quindi f=0,73 e' plausibilmente CONSERVATIVO li'. Non misurato: 0/22 ingressi passano il gate, e l'unico episodio ad alta vol del campione e' un rally, non un crash. In un crash i due pezzi vanno in direzioni contrarie e il netto e' ignoto. VRP_CFG["f"]NON cambiato.Gate pre-registrato: rimisurare a >=6 ingressi settimanali per asset con IV-rank>0,30 (il collettore li accumula da solo), revisione comunque 2027-02-22. - ✅ Confound di modello ESCLUSO e misurato:
f_markfit= 0,992 (la mark IV di Deribit riprezza i propri mid entro l'1%) -> RR/BF sono un fatto di prezzo, non l'output del fit. - ✅ Controllo positivo cablato nello script: con l'ancora assunta a :30 invece del
ts_maxosservato compare un falso lead a +15m (0,102 contro 0,031) — "e' l'errore che avrei pubblicato senza quel controllo". - ✅ Smile vettorizzato (512s -> 2,0s) verificato bit-exact contro il ciclo lento su 21.244 celle.
- ✅ Convergenza indipendente con l'agente TERM-STRUCTURE: 75 giorni utili (l'altro trovava 74).
HL-EXEC (r0822_hl_exec.py, 132 simulazioni, 0 celle di segnale = 0 selezione)
✅ Identita' con la produzione prima di ogni delta: sim_libro == paper_xsr._step a
max|diff| 5,4e-20; XS01 == _xsec_returns() a max|diff| 0,0.
✅ Verifica MAINNET (il progetto e' nato da un feed testnet): 51/51 asset, deviazione mediana
2,21% su feed vecchio 17h contro un movimento tipico del 2,81%; cross-check su terzo venue
BTC Deribit $77.997 vs HL $77.339 = −0,84%.
Parametri assunti -> misurati: min order $5 -> $10 (docs + 3.827 livelli a un ordine:
minimo $10,63, p01 $12,02, 0,0% sotto $10); taker 5,0 -> 4,50 bps (due fonti indipendenti
coincidono); slippage non modellato -> 1/2 spread 0,7 bps (19 major) / 1,0 bps (coda), max 4,5;
tier VIP: a $600-20k sempre tier base.
📌 XS01: la soglia dei $20k non esiste. Origine del numero pubblicato: "rumore di
arrotondamento", stima a occhio del diario 19/06. Misurato: haircut ~0 gia' a $200-600 allocati;
a $600 lo Sharpe passa 1,33 -> 1,30. E il meccanismo spiega perche': gli ordini sono due
popolazioni — il ribilanciamento del segnale (ogni 10g) e' il 13% degli ordini ma il 75% del
nozionale, ticket mediano $13,65 -> passa sempre; la deriva del vol-target giornaliera e' l'87%
degli ordini ma il 25% del nozionale, ticket $0,64 -> il pavimento la taglia, ed e' gratis.
Contare gli ORDINI da' 16% e sembra un disastro; contare il NOZIONALE da' 75% e spiega perche' lo
Sharpe non si muove. (Convergenza indipendente con XS-LITE, che era arrivato allo stesso meccanismo
con numeri diversi.)
✅ Fortuna di fase girata anche qui (l'haircut e' un Δ): 10 fasi, mediana delle differenze
appaiate +0,007, banda [−0,060, +0,061], 0/10 fasi con danno > 0,10.
📌 XSR01: soglia vera ~$3.000 (non $5.000 — sbagliata nella direzione sicura). Banda sui
pavimenti $8/$10/$12: ROTTO <=$1.000, INDECIDIBILE $1.500-2.000, ok >=$3.000.
📌 Slippage refutato come rischio #1 al livello di liquidita' odierno: lo Sharpe scende sotto
1,0 a ~20 bps/gamba = ~16 bps di slippage = 21x quello misurato. ⚠️ L'agente dichiara il limite:
3 snapshot = 172 secondi di oggi, una fotografia, non tre osservazioni. E' il MARGINE (21x) che
regge la conclusione, non il livello.
🚨 Due conseguenze che l'operatore deve vedere:
- Il "$20k" di XS01 e il "$20k" della DECISIONE DI VENUE (26/07) sono due cose diverse che CLAUDE.md ha conflato. Quello di XS01 cade; quello di venue REGGE intatto — e' una decisione dell'operatore su un altro asse (la rovina da fallimento exchange), non sull'eseguibilita'. XS01 resta fuori dal live per la decisione di venue, non per taglia.
- La gamba di eseguibilita' del gate 2026-10-23 e' tarata su un vincolo che a $5.000 non morde
(haircut li' −7%...+2%): una condizione pre-registrata che non puo' fallire non e' una
condizione. L'agente non ha anticipato il gate: la soglia Sharpe>=1,0 resta al 23/10.
⚠️ Terza spiegazione dell'1,82, complementare alle altre due:
r0725_statarb_basket_gateaddebita "2 gambe per coppia" = 50 alt + 50 gambe BTC fantasma, ma il demeaning annulla algebricamente la gamba BTC (sum(w)=0) — che e' la ragione stessa per cui XSR01 esiste. L'intuizione del demeaning era stata applicata all'AMPIEZZA e non ai COSTI. 📌 Quadro conciliato delle tre lenti (i due agenti concordano sul fatto, non sull'attribuzione del singolo decimale): titolodemean_skeptic1,82 · gatebasket_gate1,75-1,79 (fee raddoppiate su una gamba inesistente) · monitorpaper_xsr2,21. La lente che ha girato i gate e' quella PESSIMISTICA -> il DSR 0,983 PASS e' stato calcolato su una serie conservativa.
SLIP-AUDIT (r0822_slip_audit.py, 18 fill reali, ~14 varianti dichiarate)
✅ Fee sul NASTRO: 5,00 bps/lato prima del 2026-08-01, 3,50 dopo (16/16 esatti). Il taglio
Deribit e' visibile nei fill reali -> conferma indipendente di fee_watch (che legge il tier
dichiarato, non le esecuzioni) e della regola pre-registrata del 26/07 (<=5 bps -> non si tocca
nulla). Il listino si e' mosso nel verso buono.
- Slippage d'esecuzione (riferimento 5m): mediana −4,65 bps, IC95 [−34,6; +20,6]; statistica normalizzata +1,54 bps [−1,30; +4,47]. Conversione con la curva pubblicata: dSharpe −0,026 / dCAGR −0,35 pp.
- ⚠️ Autocorrezione della propria potenza: il null empirico e' 1,43x piu' largo
dell'uniforme assunto -> MDE vera 7,2 bps, non 5,0. Con n=18 nessuna via statistica risolve
1,5 bps — dichiarato invece di spacciare l'IC per una risposta.
📌 Esperimento naturale, il caso peggiore del campione: il fill del sabato 18/07 (ETH $74) e'
stato il 21,9% del volume della sua barra 5m, e quella barra ha avuto un range di 1,08 bps,
col nostro print a meta' (q=0,48). Un ordine che prende un quinto del nastro e lascia il prezzo
entro 1 bps e' la prova diretta che a questa taglia il libro non cammina il book.
🚨 La misura ha una DATA DI SCADENZA, e va scritta accanto al numero: la partecipazione scala
lineare -> quel 22% diventa 172% di una barra 5m a $5.000 e 687% a $20.000. Non si
estrapola: va rifatta a ogni salto di taglia. E' il muro di eseguibilita' gia' noto ma sull'asse
dell'attrito invece che del min-order. ⚠️ E il caso peggiore cade di sabato, dove TP01 fa il
38% del proprio gross.
⚠️ Due difetti del dato, trovati PRIMA di misurare (e ciascuno avrebbe prodotto un numero
plausibile e falso):
(a)
ts_utcinbook_executions.jsonlnon e' l'ora del fill ma l'etichetta dell'ultima barra del feed (18/18 dicono00:00:00; il fill #1 e' etichettato 08/07 ed e' stato eseguito il 14/07 = impronta del feed-freeze gia' noto). L'ora vera esiste solo inlogs/cron_book.log: senza recuperarla, ogni confronto "al prezzo dell'ora del fill" misurerebbe la mezzanotte. (b) Il feed certificato e' il perpetual INVERSE, il libro trada il LINEARE USDC — 4ª occorrenza dello schemafee_watch: misurare lo slippage sul feed certificato avrebbe misurato la base, non lo slippage (base misurata: BTC −0,03 bps, ETH −0,27). ⚠️ Con n=18 la media in bps e' inservibile — un solo giorno (19/08, ETH +14% in 6h) la ribalta: si cita la mediana. EREF-A(−50 bps) non e' slippage: e' la differenza di FASE fra l'ora del cron e la chiusura giornaliera, gia' misurata bene il 26/07 su 24 ancore appaiate.
SCETTICO su GROWTH-POLICY (r0822_leverage_skeptic.py, ~175 celle, griglia ridotta a k<=5x e dichiarato)
✅ Replica superata TRE volte prima di ogni numero nuovo: marginali del gap 25/07 (p50 −0,16 /
p90 −1,03 / p99 −2,71 contro −0,17 / −1,03 / −2,70), meccanismo del decile (~3x, pubblicato ~3x),
e €500/mese -> 14,7a / P<=20a 99% al numero pubblicato.
✅ Controllo positivo superato: una lente indipendente (gap rimescolato) sovrastima il maxDD di
+0,13pp su +0,45 e i breach daily-loss di 1,5-2,4x — stesso verso e taglia del finding 25/07
("2,0-2,9x"). La macchineria ha potenza, quindi il suo "nessuna differenza" vale.
✅ Risoluzione MC dichiarata: 0,01%/a nella regione eseguibile, 0,05pp sul Δ appaiato di maxDD ->
le differenze riportate (0,45-0,76pp) sono 9-15x la risoluzione.
📌 RISPOSTA ALLA DOMANDA: NO, l'effetto e' SOTTO-proporzionale. Il rapporto fra le due maxDD e'
piatto a 1,025-1,037 su tutta la griglia e Δ/k cala (0,478% -> 0,217%). Meccanismo: il
maxDD e' una statistica MULTI-GIORNO, il wick e' un fatto di UN giorno. Tempo al bersaglio
identico fra le due lenti; guadagno appaiato 1,00x->1,50x = 2,88 anni in entrambe.
Nessuna liquidazione a nessun k<=5x sotto nessuna lente (servirebbe 12,3x sul peggior giorno vissuto).
🚨 IL RISULTATO TRASFERIBILE — la lezione del 25/07 e' vera e NON si trasferisce. Su una regola a
UN giorno l'accoppiamento cambia tutto: a soglia daily-loss 5% e k=1,00-1,25 close-only conta
0,00 breach/anno dove il vero ne conta 0,40 e 1,21 (acc./close = INF, cecita' esatta); a
soglia 3% e k=1, 0,40 contro 2,28 = 5,7x. Su una statistica multi-giorno lo stesso difetto
vale 3,5%. ⚠️ Non assolve close-only in generale: sul canale PROP/FUNDED, dove il vincolo
binding E' una regola di daily-loss per-conto, la lente accoppiata resta OBBLIGATORIA.
⚠️ CORREZIONE a una spiegazione pubblicata (il fatto regge, la spiegazione no): il 26,8% di
giorni con m == R non sono "il giorno brutto che chiude sul minimo" — stanno nei decili
CENTRALI (56-88%), i giorni in cui il libro e' flat. Nel decile peggiore chiude sul minimo
il 4%. E un giorno di crash chiude quasi sul proprio minimo (gap medio nel 5% peggiore
−0,62% contro −1,75% nel 5% migliore) -> la lente accoppiata non peggiora lo stress di coda.
📌 Il gradino 1,00->1,50 resta NON AUTORIZZATO — cade una delle tre riserve, non le tre.
Restano: drift stimato su 7,4 anni, e coda assente dal dataset (un giorno −10%/anno porta k* a 2x).
Unica colonna a favore della prudenza: P(sfondare una soglia FISSA) e' amplificata piu' del maxDD
(1,26x a k=1) perche' vicino alla soglia la densita' e' fitta — e' quella la colonna con cui si
costruisce una frontiera iso-rischio, non il maxDD mediano.
📌 ATTACCO 2 — il 12,14% di TP01 e' VERO, ma il meccanismo dichiarato e' META', e la strada
implicita e' REFUTATA. Scomposizione esatta, verificata sullo sleeve di produzione:
20,00% x 0,682 (dentro la gamba) x 0,890 (diversificazione BTC/ETH, corr 0,59) = 12,14%.
E il x0,682 sono due meta' quasi uguali: flat nel 44,3% delle barre (x0,746) e convinzione
parziale quando non e' flat (tsmom_blend = media di 3 segni: 1/3 o 2/3) (x0,789).
"TP01 e' long-flat" spiega circa META' — e la differenza non e' accademica: essendo
convinzione, alzare target_vol aumenta la size proprio nei giorni in cui il segnale e' piu'
debole. Il terzo fattore (x0,89) non e' un difetto d'etichetta: e' diversificazione, ed e'
cio' che si vuole.
⚠️ E TP01 e' un caso particolare, non la regola: XS01 dichiara lo stesso 20% e ne realizza 20,59%.
🚨 target_vol e k NON sono la stessa leva (e non per il leverage cap, che non morde: 0-1% di
barre al cap fino a tv=60%): target_vol scala il 75% del libro e lascia fermo il 25% -> a
tv=30% il libro non e' piu' 75/25 ma 82/18, a 60% 90/10. E' simultaneamente una leva e un
tilt di pesi, e il tilt FALLISCE weights_tilt_null (gate_pass=False, delta_insample −0,0815
a tv=30% / −0,2187 a tv=60%). A pari scala 1,50 il libro via target_vol fa Sharpe 1,72 contro
1,82 via k. -> la strada pulita per un puro cambio di SCALA e' il cap di config, non il target_vol.
✅ Cosa cambia dei numeri pubblicati: NIENTE di misurato — ogni Sharpe/maxDD/muro/traiettoria e'
calcolato sulla serie realizzata; target_vol non compare in nessuna formula di rischio a valle.
❌ Ipotesi dell'agente refutata dal suo stesso numero: i contributi di rischio sono 73/27
contro pesi 75/25. Cio' che resta: sbaglia chi legge l'etichetta, non chi legge i pesi —
un lettore che prendesse "20%" per buono attribuirebbe a TP01 l'89% del rischio invece del
73%, cioe' sbaglierebbe di 16 punti proprio la domanda "quale gamba mi fa male".
📌 Il test di guardia test_leva_massima_da_config_resta_sotto_o_uguale_a_1x non protegge "la leva
e' pericolosa": protegge la conclusione del 26/07 secondo cui la liquidation fee 1% di Deribit e'
irrilevante, che vale interamente perche' a <=1x servirebbe un movimento avverso ~100%. Chi alza il
cap deve rifare r0726_fee_sensitivity, non aggirare l'assert.
13 — BASIS-CALENDAR (r0822_basis_calendar.py, 108 celle dichiarate)
✅ HA COSTRUITO UN DATASET CHE IL PROGETTO NON AVEVA, e contiene la coda che mancava a CC01.
Deribit purga le liste di strumenti scaduti (get_instruments?expired=true ritorna 1 solo
strumento) -> la via ovvia e' chiusa. Ma i nomi dei trimestrali sono deterministici (ultimo venerdi'
di MAR/GIU/SET/DIC 08:00 UTC) e get_tradingview_chart_data serve la storia completa di un
contratto SCADUTO se il nome lo si costruisce a mano: 30/30 trimestrali 2019Q1-2026Q2 rispondono
ok. Risultato: BTC 34 contratti / 240.150 barre orarie (2018-09 -> oggi), ETH 34 / 233.334,
piu' 64.110 ore di funding e indice per asset. Include il deleveraging 2022 — esattamente la
coda che a CC01 mancava per costruzione.
Certificato: barre flat 0,7-1,0% per dte<180g; convergenza a scadenza |ln(F/indice)| mediana 33-47
bps; cross-check indipendente col forward implicito nella catena opzioni: mediana −0,6 bps.
Roll gestito in spazio contratto (nessuna serie incollata -> nessun salto sul giunto).
📌 Il risultato: il premio a termine e' REALE ma e' il PREZZO DELLA COPERTURA, non un edge.
Basis BTC mediana +6,33%/anno, contango 84,9% del tempo, slope positiva 97,4%. Ma implicito
+7,33%/anno contro funding realizzato sulle finestre appaiate +6,48% -> premio incassabile
+0,85%/anno, IC95 [−1,00, +2,92] che CONTIENE LO ZERO (ETH +2,55%). A 60-100 giorni (il bucket
meno rumoroso) +0,30% BTC / +1,70% ETH contro ~1,4%/anno di costo d'esecuzione.
Quindi i futures datati NON sono un quarto lato della domanda funding: sono lo stesso lato quotato
diversamente, e il filone funding resta chiuso su tre lati senza che ne esista un quarto.
📌 E questo filone NON e' CC01, misurato: implausible_sharpe False — barre in perdita
49,9%, maxDD 18,2% -> la coda e' PRESENTE. Li' il rischio era fuori dal campione; qui e'
dentro e l'edge semplicemente non c'e'. Distinzione che il gate del 26/07 e' stato scritto per fare.
- Cella scelta in-sample-only: Sharpe +0,13 / hold −2,44. Distribuzione dei 108 Sharpe: mediana −5,19. Con 7,4 anni e vol 4,9% la SE del rendimento annuo e' 1,79pp: sotto ~3,6pp/anno nulla e' distinguibile da zero. Null de-levering REFUTED (TP01 a k=0,05 fa DD 0,75% con Sharpe 1,31).
- Test decisivo del filone: ritardo d'esecuzione 1h/2h/24h -> Sharpe 0,13/0,13/0,10 -> non e' microstruttura da prezzo stantio; non c'e' edge da falsificare.
- ⚠️ 3ª volta in questa ondata che l'eseguibilita' NON e' il vincolo: lotti minimi $10 BTC inverse / $7,73 BTC USDC / $1 ETH / $2,42 ETH USDC; servono 4,1x per gamba (~$148 di margine iniziale a $600).
- ⚠️ Limite dichiarato e NON appianato: le due lenti sul premio (hold-to-expiry vs backtest rollato) discordano nel SEGNO restando entro ~1,5 SE l'una dall'altra e dallo zero. Non si puo' stabilire il segno di una grandezza da ~1%/anno con 7 anni di dati a vol 5% — ed e' proprio questo che rende il filone non deployabile.
- Riaprirebbe il filone: il premio a 60-100 giorni stabilmente sopra ~4%/anno (2 SE sopra
zero E sopra il costo), cioe' un regime in cui basis e funding si scollano (marzo 2020, giugno
2022 — ma per giorni, non per trimestri).
⚠️ Tre errori propri catturati prima di pubblicare: (a) il
volumediget_tradingview_chart_datae' in valuta base, non USD -> la prima stesura sbagliava la liquidita' di ~5 ordini di grandezza; (b) il primo test d'ancora azzerava i rendimenti fuori dall'ora scelta = un'altra strategia, non un'ancora; (c) un gate che stampaNoneva verificato prima di dichiararlo "non girato" — stampava le chiavi sbagliate. ✅ Disciplina di rete rispettata: <=2 req/s e sospensione automatica nella finestra :25-:29 dicron_chain(verificato: si e' sospeso da solo per 264s).
SCETTICO su VOL-SIZE (r0822_volsize_skeptic.py, 43 valutazioni x 23 ancore)
✅ Replica bit-exact prima di ogni attacco: gamba 50/50 vs sleeves._skyhook_returns()
max|diff| = 0,0; e il titolo riprodotto esattamente (+0,070 ISO dShFULL 23/23, +0,101 HOLD).
🚨 RITIRA UNA REGOLA PUBBLICATA POCHE ORE PRIMA — il difetto di contabilita' NON ESISTE.
backtest_signals fa equity[i_ent:i_ex+1] = capital: il P&L e' contabilizzato al giorno
d'INGRESSO in 291/293 (99,3%) dei trade multi-giorno, all'uscita in 4. Troncando i dati
alla barra d'ingresso e ricalcolando le size da zero: 50/50 identiche, max|diff| = 0,0. E la
"riparazione" e' un no-op bit-exact (max|diff| 6,7e-16, Sharpe identico a 4 decimali).
Il "+0,04 fantasma" era interamente [L sulla gamba COMBINATA] − [L PER ASSET] — due varianti
entrambe causali — e la variante scartata come "non causale" era la MIGLIORE sull'hold-out
(+0,039). Il costo di una regola derivata da un difetto inesistente e' gia' stato pagato.
📌 REGOLA CORRETTA (piu' debole e vera): "applicare un overlay alla data d'ingresso" resta un
buon consiglio generale, ma su questo motore le due date coincidono — e va verificato con un
troncamento bit-exact prima di scartare un ramo, non dedotto dalla forma dell'equity.
🚨 IL GATE PRE-REGISTRATO AL 22/12/2026 E' GIA' FALLITO OGGI, e nel modo piu' netto. L'agente
aveva scritto: "se l'effetto e' UGUALE su V1, la spiegazione e' sbagliata anche se il numero
regge". Misurato: |effetto| mediano di famiglia V1 0,067 contro V2-DD 0,032 — l'inverse-vol
funziona il DOPPIO dove lo stop e' gia' in ATR, cioe' esattamente al contrario della previsione,
in 8 celle su 8 con 23/23 ancore positive. E il test ha potenza (su V2-DD la famiglia
arriva a +0,067, quanto il LEAD).
📌 La spiegazione avversaria e' CONFERMATA e la sua forma minima e' un binario. BIN L>=med
(size 0/1 alla mediana espandente, nessuna magnitudine, 194/406 trade scartati) vale
+0,080 FULL (20/23) = 115% del LEAD. Controllo di segno superato: il binario INVERSO fa
−0,159 (0/23). Canali: FREQUENZA +0,051 (23/23) contro MAGNITUDINE +0,003 (17/23).
I trade tenuti hanno net medio 2,03% contro 0,36% degli scartati.
✅ Un attacco dello scettico e' FALLITO, e lo dichiara: l'asse della finestra non e' un picco
— l'argmax in-sample-only cade su w=90 = la cella pubblicata, corr(IS, HOLD) fra le 9 finestre
+0,63, plateau da 45 a 270. Sotto w=45 la finestra contiene 1-3 barre attive (colonna
misurata) e il segno si rovescia: non e' fragilita', e' campione vuoto.
-> quindi anche la mia nota "picco, non plateau" nel filone 8 va letta come SUPERATA.
Stima onesta se w e' scelto (mediana di famiglia): +0,025 FULL.
📌 CONSEGUENZA: il LEAD non ha piu' una condizione aperta da attendere — la sua gamba
esplicativa e' chiusa oggi. Se qualcuno vorra' portarlo avanti, il candidato giusto non e' la
formula ma il binario: meno gradi di liberta', dimezza gli ordini (migliora l'eseguibilita' a
$635), 115% sul FULL — ma paga in fragilita' d'ancora (20/23 contro 23/23, banda che include −0,061,
hold-out +0,072 contro +0,101). Resta un terzo della fortuna d'ancora del libro stesso (+0,196):
niente qui giustifica di toccare pesi, cron o config.
MONITOR-AUDIT (r0822_monitor_audit.py) — audit di PRODUZIONE, 6 monitor, 4,7 s
✅ Metodo che rende il risultato non contestabile: l'audit riesegue advance() di produzione
tale e quale, sostituendo solo _append con un raccoglitore in memoria -> nessuna
reimplementazione, quindi nessun drift fra audit e monitor. Sola lettura verificata (gli mtime
di data/paper_* sono rimasti quelli del cron delle 00:35).
| monitor | barra parziale | barre coincidenti | corr | min/giorno misurati | gate | ricostruibile |
|---|---|---|---|---|---|---|
paper_statarb |
SI' | 0/46 | +0,297 | 4 | STATARB 27/09 | SI', bit-exact |
paper_dvolspread |
SI' | 0/28 | +0,262 | 2 | DVOLSPREAD 24/10 | SI', bit-exact |
paper_xsr |
SI' | 1/28 | −0,045 | 41 | XSR01 23/10 | SI', bit-exact |
paper_portfolio |
SI' | 7/56 | +0,245 | 19 | — (dashboard) | si', non al bit |
paper_prevday |
si' (1 barra su 24) | 1259/1319 | +0,997 | 1.438 | — | si', bit-exact |
paper_combo |
NO | 7/37 | +0,991 | 1.402 | — | si', non al bit |
| 📌 La patologia e' la stessa, la TAGLIA varia di un fattore 20 — e dipende da quanto pesa la | ||||||
| barra piu' recente nel segnale, esattamente come la lezione del 26/07 su SKH01 contro TP01. | ||||||
| 🚨 Il gate STATARB del 27/09 si ribalta su DUE criteri su tre: Sharpe registrato +1,96 (sopra | ||||||
| la soglia 0,5) contro −2,02 ricostruito; maxDD 2,2% contro 15,3% (guardia <10%). *Fra 36 | ||||||
| giorni si sarebbe deciso su una serie che misura 4 minuti di mercato al giorno.* | ||||||
| ⚠️ XSR01 e DVOLSPREAD danno lo stesso verdetto oggi, ma su numeri implausibili (Sharpe −15,8 su | ||||||
28 barre = oltre 4 SE). **implausible_sharpe esiste dal 26/07 e non e' mai stato puntato sulle |
||||||
| serie forward.** | ||||||
| ✅ LA BUONA NOTIZIA, ed e' misurata: la finestra forward NON va persa. Il replay e' la serie | ||||||
| corretta sulla stessa finestra, con config congelata e codice di produzione. Le due condizioni sono | ||||||
provate due volte in modo indipendente: (a) paper_prevday ha **1427/1488 barre identiche al |
||||||
| bit** dopo 62 notti di riscrittura (il feed non tocca le barre chiuse); (b) le 6 barre di | ||||||
paper_statarb recuperate dopo un guasto coincidono al bit. |
||||||
-> **La decisione non e' "riparare e azzerare" ma "riparare advance() + RIGENERARE", e nessuna |
||||||
delle tre date di gate si sposta.** Anche nell'ipotesi pessimista (--reset) l'unico gate che |
||||||
| slitterebbe e' STATARB, di +18 giorni. | ||||||
📌 **Dettaglio che vale una regola: le uniche barre corrette di paper_statarb esistono perche' il |
||||||
feed si e' ROTTO.** rebuild_history e' abortito per 7 giri consecutivi (09-15/07, EPERM sul |
||||||
| backup, gia' riparato); al ripristino il monitor ha recuperato 7 barre in un colpo, **6 delle quali | ||||||
| gia' chiuse** -> coincidono col replay al bit. *Il guasto ha prodotto da solo il controllo che | ||||||
| serviva a diagnosticare l'altro guasto.* | ||||||
📌 paper_combo e' sano PER CASO: aspetta la chiusura di una borsa, non per progetto. |
||||||
| Nessuna riga di codice chiede la barra chiusa — **se la sua griglia cambiasse diventerebbe rotto in | ||||||
| silenzio.** | ||||||
| ✅ Guardia raccomandata (NON implementata), e ha il pregio di essere banale: | ||||||
ts_ultima_barra + cadenza <= mtime del file di serie, grazia 5 min. O(1), nessuna strategia da |
||||||
| rieseguire, usa solo cio' che il monitor gia' scrive; segnala 5/6 e tace sul sano; controllo | ||||||
| positivo sintetico 6/6 nei due versi. Il vol-ratio va dopo, non al posto: copre un guasto | ||||||
diverso (drift monitor-strategia) e non vede paper_prevday (rapporto 0,999). |
||||||
| ⚠️ Limiti dichiarati: i "minuti/giorno" sono una lettura del rapporto di varianza (assume random | ||||||
| walk sull'intervallo troncato), non un cronometro — il cronometro diretto e' 32-35 min; e per | ||||||
paper_portfolio/paper_combo la ricostruzione non sara' al bit perche' la gamba GTAA legge |
||||||
ADJUSTED_LAST di IB, ri-aggiustato all'indietro. |
1 — PROP-ALLOC (r0822_prop_alloc.py, ~3.300 valutazioni MC di cui 360 di selezione)
✅ Previsione REGISTRATA PRIMA e confermata: dal conto del gambler's ruin, alla leva minima che
porta a +T dentro l'orizzonte resta theta ~ 2*Sharpe^2/T -> la vol sparisce e l'argmax sui PESI
deve coincidere con l'argmax di Sharpe; il contenuto vero sta nella LEVA, che lo Sharpe non
determina. Misurato: e' cosi'.
| pesi TP/SKH/XS | leva | J | P(pass) | P(vivo 12m) | E[pay/anno] | |
|---|---|---|---|---|---|---|
| argmax J | 25/25/50 | 0,75 | 0,738 | 82,2% | 89,8% | $8.556 |
| argmax Sharpe | 38/25/38 | 0,75 | 0,721 | 77,3% | 93,3% | $7.796 |
| libro LIVE 75/25 | 75/25/0 | 0,50 | 0,335 | 38,6% | 86,8% | $4.109 |
| Differenze appaiate: argmaxJ − argmaxSharpe +0,0164 ± 0,0066; argmaxJ − LIVE **+0,3996 ± | ||||||
| 0,0114**. -> Riallocare per la barriera vale il 4% di cio' che vale diversificare. | ||||||
| ✅ Replica di controllo superata: la politica MISTO del 25/07, stessa macchina, de-luck 0,60 -> | ||||||
| P(>=50/g) 4,1% / P(zero) 53,7% contro il pubblicato 5,6-6,5% / 52%. | ||||||
| 📌 Null dei tilt casuali — e il risultato e' che il PUNTO non conta: argmax al 98,5° pctl contro | ||||||
| firma best-of-45 di 97,8° = indistinguibili, e **il massimo di 200 pesi casuali (0,739) EGUAGLIA | ||||||
| l'argmax (0,738)**. Conta stare nella regione diversificata, non il vettore. | ||||||
| 📌 La leva alta non compra probabilita', compra fretta: J massimo a 0,75x, E[payout] massimo | ||||||
| a 1,00x; P(pass) senza limite di tempo e' monotona decrescente (98,9% a 0,50x -> 65,9% a | ||||||
| 1,50x). E **la barriera piu' larga sposta l'ottimo verso l'alto: il vincolo e' la regola di DD, non | ||||||
| il libro.** | ||||||
| 📌 Il 75/25 del libro live NON e' la ripartizione giusta per un conto a barriera, e non e' | ||||||
| artefatto di finestra: sul campione 2019+ che contiene il 2022 l'ottimo della coppia crypto e' | ||||||
| 38/62 @0,50x (J 0,521 contro 0,443) — stesso verso del 2024+. | ||||||
| 🚨 LA BANDA, non il numero. P(>=50/g) da €600 in 36 mesi con la scala di conti: | ||||||
| 42% al drift pieno · 7,7% allo stress moderato (SKH ×0,50, XS ×0,50) · 0,7% allo stress severo | ||||||
| (SKH ×0,33, XS ×0,00) — e allo stress severo e' peggio del libro live. **Il numero da citare e' | ||||||
| la banda.** Tetto strutturale: cap $200k (HYRO) + $400k (FTMO) = max 6 conti, oltre servono altre | ||||||
| firm, ognuna col proprio rischio di controparte. | ||||||
| ⚠️ Onesta' dell'agente sulla distorsione che NON ha potuto rimuovere: la banda d'ancora **non e' | ||||||
| girata** sotto questa lente (fuori budget), quindi l'ottimo gira sull'ancora canonica e si | ||||||
| appoggia a **SKH01, che il progetto misura come lo sleeve con la fortuna d'ancora piu' grande da | ||||||
| restituire** -> la distorsione e' a suo favore e lo dichiara. | ||||||
| ⚠️ E la sotto-pesatura di TP01, lo sleeve difensivo, e' misurata su un campione **senza | ||||||
| sinistro** (2024-2026 non contiene un crash): **su una barriera assorbente quella scommessa si paga | ||||||
| una volta sola.** | ||||||
| ⚠️ Assunzione dichiarata e non verificata con le firm: che una firm crypto listi i 19 alt | ||||||
| Hyperliquid con short abilitato. Se non li lista, XS01 sparisce e con lui il risultato. | ||||||
⚠️ Errore proprio corretto in sessione: paired_delta ignorava lo stress e stampava un delta |
||||||
| non-stressato accanto a righe stressate -> *un confronto appaiato deve ereditare TUTTI i parametri | ||||||
| della riga in cui compare*; senza quella guardia avrebbe concluso che il risultato era robusto | ||||||
quando non lo e'. Ora c'e' un assert che lega il delta alle due colonne stampate. |
ONDATA 2 — 2026-08-22 sera (7 filoni)
Mirata su cio' che la prima ondata ha lasciato scoperto, inclusi i falsificatori che gli agenti stessi hanno nominato senza poterli eseguire. Stesso contratto di consegna, stessi gate.
| # | filone | domanda che decide | verdetto |
|---|---|---|---|
| 21 | XS01-OOS | il vantaggio del PROP-ALLOC poggia sul drift di XS01 misurato sulla sua finestra di scoperta: regge fuori? | LEAD — regge, ed e' PIU' GRANDE fuori |
| 28 | DEPEG | il falsificatore che l'autore di 21 ha nominato contro se stesso: il depeg USDT contamina il ranking? | SOPRAVVIVE — il venue sposta 0,01 di Sharpe |
| 29 | PROP-RECAL | J rifatto con XS01 dalla storia lunga: il canale funded si apre? | LEAD ridimensionato ~5x — 42% → 7,8% |
| 30 | LISTINO | GATE PROP-01 gamba (a): la firm lista >=10 delle 13 gambe con short? |
PASS 13/13 — verificato sul venue, non sul sito |
| 31 | GATE-RECON | cosa direbbero i 3 gate pre-registrati se le serie forward fossero riparate | 1 gate su 3 ribaltato — e la premessa e' CONFERMATA |
| 32 | SKH-ANCHOR-PROP | GATE PROP-01 gamba (b), datata 31/10: girata oggi |
PASS 23/23 — e il numero scende ancora, a 4,4% |
| 33 | WORST-DAY | il peggior giorno del libro, MISURATO: il gradino di leva e' autorizzabile? | LEAD — l'aritmetica passa, il knob non esiste |
| 34 | CC01-2022 | il carry riaperto sui dati che gli mancavano per costruzione | RESTA SCARTATO — per la ragione giusta, ma non quella pubblicata |
| 35 | FUNDING | il costo mai prezzato di TENERE una posizione aperta | LEAD — −2,16%/anno di drift, muri +17,5% |
| 36 | PIANO-VERO | la tabella congiunta fisco+funding, che non esisteva | 🚨 €250/m: P(20a) 92% → 14-26% |
| 37 | GATE-C | l'ultima gamba del gate funded + il biglietto come opzione | PASS 2/2 — gate senza date; P(≥50/g) 4,4% → 2,6% |
| 38 | SCALE-SPEC | specificare il knob di leva che non esiste | LEAD — specificata, 1 nodo irrisolto sul disaster-SL |
| 39 | FUNDING-AVOID | evitare il funding esprimendo il libro sui datati | SCARTATO sui datati · LEAD sullo spot |
| 40 | SL-ANCHOR | il nodo che bloccava il gradino di leva | SCIOLTO — rotolante, ma il timore e' refutato |
| 41 | TP01-SIZE | una size che risponde alla CONVINZIONE batte il vol-target uniforme, a pari vol realizzata? | SCARTATO — il meglio di 60 celle vale +0,30pp di CAGR iso-vol, e l'ottimo sta ai due estremi opposti nelle due meta' del campione (Spearman ShIS/ShHOLD −0,527: scegliere in-sample e' peggio di una moneta) |
| 42 | TP01-LS | la gamba short del trend a 1d paga il proprio costo, o e' il 2022? | SCARTATO — toglie −1,91%/anno di drift in 0/24 ancore, fallisce l'iso-vol, +8,80pp di maxDD in 24/24, e senza il 2022 il divario RADDOPPIA |
| 43 | DATA-UNUSED | quali dati il progetto possiede e nessuna strategia legge — e uno di essi sostiene un'ipotesi? | SCARTATO — la scorta di dati e' esaurita: un solo dato mai letto ha storia vera (flussi exchange CoinMetrics 2018-2026) e misurato sta SOTTO il massimo atteso dal puro rumore |
| 44 | DEPOSIT-TIMING | un calendario di versamento CONDIZIONALE batte il piatto, a pari soldi? | SCARTATO 0/12 in ogni lente — il buy-the-dip compra davvero il 51% piu' in basso e arriva al capitale-rendita nel 6,3% dei casi contro l'85,4% del piatto |
| 45 | SPOT-NETTING | separare TP01 e SKH01 su due strumenti: quanto vale, e il margine lo uccide? | LEAD REGGE, SEPARAZIONE SENZA VALORE — il margine non e' il vincolo (copertura 50x, invariante al capitale), ma T1 sbloccato e' un DECLASSAMENTO (−0,048 contro il path che gira) e il netting perso risparmia commissioni: il lead vale il funding e basta, [+1,55%, +1,66%]/anno; a bloccarlo e' il codice di sizing, non Deribit |
| 46 | TAIL-HEDGE | comprare put deep-OTM come assicurazione statica compra DD a prezzo migliore del de-levering? | REFUTATO — la premessa cade prima del prezzo: il maxDD SALE in 162/162 celle, a ogni lente di f (f=1,00 regalato compreso). Meccanismo: beta del libro al sottostante +0,076 |
| 47 | ANCHOR-ENSEMBLE | eseguire l'ensemble delle 24 ancore invece di sceglierne una e correggere il numero | ESEGUIBILE MA INUTILE SU TP01 — il drift non puo' cambiare (algebra: lordo_ens == media(lordi), 1,4e-17); il segnale sta su SKH01 (+0,312 di Sharpe mediano, maxDD 23,3%→16,6%), ma dentro il libro non si distingue da zero. E la premessa del 02/07 era sbagliata |
| 48 | VOLVOL | la volatilita' del DVOL (secondo momento, mai usato) contiene cio' che livello e spread non contengono? | SCARTATO — e' davvero una variabile NUOVA (ortogonalita' PASS, max |corr| 0,396) ma guarda INDIETRO: picco a lag −5/−10 e parziale con la vol futura NEGATIVA. Quinto lato del filone DVOL chiuso |
| 49 | TP01-TWIN | il 75% del libro dipende da UNA definizione di trend: un ensemble di meccanismi protegge meglio? | REFUTED — protegge PEGGIO nei 4 anni piu' recenti a 0/24 ancore (2022: 3,2x peggio) e costa −0,127 di Sharpe hold-out al libro. E i meccanismi non erano ridondanti: corr di posizione 0,61 |
| 50 | BOOK-3RD | qual e' il miglior TERZO sleeve realmente eseguibile sul libro live a $635 — e a quale capitale cambia? | NESSUNO AMMISSIBILE OGGI — sette candidati, sette muri diversi, e nessuno dei sette e' una soglia di capitale. 🚨 Il piu' forte misurato (PREVDAY) sta in monitor da giugno senza gate e senza deflated-Sharpe |
| 51 | NEWDATA-SCOUT | se la scorta e' esaurita: cosa iniziare a raccogliere OGGI, che fra 12-24 mesi apra una famiglia? | RACCOGLIERE 2 FONTI SU 10 — catena USDC (+18%, non +90%) e una campagna a termine di book depth; il criterio di ricostruibilita' ne uccide 4 da solo e refuta una raccomandazione del 22/08 |
| 52 | SKEPTIC-SPOT | il lead dello spot (+1,55-1,66%/anno) sopravvive a un attacco deliberato? | in corso |
| 53 | SKEPTIC-LEVA | il gradino di leva 1,25x sopravvive a un attacco deliberato, col funding dentro? | REGGE 5/6, INCRINA 1/6 — il 1,25x sopravvive, il 1,50x NO; k massimo difendibile 1,40. L'incrinatura e' il ramo eq_fallback, dove la scala non apre il buco: lo MOLTIPLICA |
| — | NOTIFIER (audit di fatto) | 🚨 PUNTO SINGOLO DI GUASTO nella rete di sicurezza | il send() di Telegram e' un solo tentativo da 10s, senza retry, con l'esito MAI registrato — e lo stato alerted=True viene scritto prima dell'invio: un 🚨 di venue_watch perso e' perso per l'intero episodio. Tasso di fallimento misurato 6,9% (2/29, IC95 [1,9%, 22,0%]) |
| 22 | MAKER | l'esecuzione passiva e' una fonte di ritorno, al netto del costo di non essere eseguiti? | SCARTATO — il segno dipende da < contro <= |
| 23 | BOCPD | un rilevatore di cambio di regime vero batte il miglior lookback COSTANTE? | SCARTATO — filone chiuso definitivamente |
| 24 | CRITICO | cosa NON e' stato misurato, e quale singola misura mancante vale di piu' | 3 correzioni all'ondata, 1 regola mia ritirata |
| 25 | BIN-FREQ | il binario di frequenza su SKH01 e' un candidato o un sottoprodotto? | LEAD — direzione reale, taglia = selezione |
| 26 | TP01-SINISTRO | quanto pesa TP01 se l'obiettivo include un crash che nel campione non c'e'? | allarme SCARTATO — il rischio e' XS01, non TP01 |
| 27 | SURFACE-RV | la superficie e' internamente incoerente, e l'incoerenza vale piu' del costo di attraversarla? | SCARTATO — l'incoerenza al mid e' la larghezza del mercato |
23 — BOCPD (orizzonte adattivo, il falsificatore eseguito)
scripts/research/r0822b_bocpd.py (123 s). 169 trial dichiarati, conteggio al rialzo, inclusi i
13 di taratura fatti guardando solo il numero di change-point, mai uno Sharpe.
Il falsificatore che il 22/08 restava aperto e' stato eseguito con i rilevatori che nominava:
BOCPD (Adams & MacKay, run-length posterior online, Normale-InverseGamma, hazard costante) e
optimal partitioning causale (l'obiettivo che PELT accelera, ricorsione in avanti, mai un
fit_predict retrospettivo), piu' L scelto per walk-forward sul PnL realizzato.
📌 E questa volta il test HA AVUTO POTENZA — e' il fatto che rende il "no" esaustivo.
Il vincitore del 22/08 aveva lookback costante (stava al bordo il 100% del tempo, corr 1,000):
si era chiusa una famiglia di proxy, non il meccanismo. Qui 68/96 celle sono davvero adattive
(BOCPD 24/24: L_t mediano 25-107 g, IQR 28-134 g, 0-4% al tetto, 7-44 reset/anno).
| Sh FULL | Sh HOLD | maxDD | CAGR | corr→TP01 | |
|---|---|---|---|---|---|
| (A) adattivo, cella in-sample | 1,618 | 0,627 | 14,48% | 22,05% | 0,757 |
| (B) miglior COSTANTE (L=15g triple 12h) | 1,639 | 0,657 | 12,68% | 22,31% | 0,737 |
| (C) walk-forward su PnL | 1,385 | 0,382 | 16,33% | 17,20% | 0,860 |
| TP01 30/90/180 | 1,314 | 0,489 | 14,31% | 16,44% | 1,000 |
📌 La decomposizione E' il risultato: adattivo − TP01 = +0,305; miglior costante − TP01 = +0,326; adattivo − miglior costante = −0,021 → l'adattivita' spiega il −7% del vantaggio su TP01. Il 100% e' "un orizzonte piu' corto", non "adattarlo".
Gate: earns_slot_honest=False; marginal_vs_tp01 NEUTRAL con corr→TP01 0,861;
appaiato per anno vs il null giusto (B) 3/8 anni (mediana −0,15); banda d'ancora 12 ancore,
mediana delle differenze appaiate −0,136, positiva in 0/12, e la canonica sta al 92° pctl =
fortuna d'ancora a suo favore. causality_ok ok, e troncamento manuale esplicito su 4
combinazioni: max|L(prefisso) − L(pieno)| = 0 → la trappola del change-point retrospettivo e'
esclusa per misura, non per fiducia. Null del de-levering non applicabile e dichiarato
(il candidato NON riduce il maxDD: 14,5% contro 12,7%).
Il criterio del falsificatore applicato a tutte le 68 celle adattive: 0/68, e nessuna delle due condizioni va vicina — corr→TP01 minimo 0,754 (soglia 0,60), nessuna batte il miglior costante sul FULL (la migliore e' −0,013), massimo 4/8 anni battuti (richiesti 6).
⚠️ Cosa l'agente NON propone, e perche': il miglior costante batte TP01 di +0,326 — ma il salto di Sharpe fra L adiacenti e' +0,190, cioe' il 58% dell'intero vantaggio: e' un max-of-24 su un crinale di rumore, non una curva. Nessun cambio a TP01, al libro, ai pesi.
🚨 Sottoprodotto che vale fuori dal filone: un deflated-Sharpe calcolato dentro una famiglia
OMOGENEA e' CIECO. Qui dice 0,998-1,000 PASS; ricalcolato con l'sr0 di screen misurato dal
filone ORTHO (1,572 su 168 trial) dice 0,555 / 0,580 / 0,237 FAIL — TP01 compreso. Il motivo e'
strutturale: deflated_sharpe stima il massimo-dal-rumore dalla varianza degli Sharpe della
griglia, e una griglia di varianti molto correlate ha varianza piccola → sr0 basso → DSR alto per
costruzione. Gonfiare N col padding alza N e non la varianza: non basta contare i trial di
screen, serve la VARIANZA di screen.
📌 Secondo sottoprodotto, un controllo da mettere in ogni famiglia con un parametro clippato: la PROVA DI IDENTITA' batte la diagnostica. Invece di dire "questa cella sta al bordo", l'agente mostra che la sua serie e quella del lookback costante coincidono a max|Δ| = 0,000e+00 su n=2719 — non somiglia a, lo e'.
VERDETTO: SCARTATO. IL FILONE ORIZZONTE-ADATTIVO E' CHIUSO DEFINITIVAMENTE.
22 — MAKER (esecuzione passiva come fonte di ritorno)
scripts/research/r0822b_maker.py (19 s, sola lettura). 42 celle dichiarate, nessuna riduzione.
📌 Osservazione strutturale che riapriva la domanda: il netting su strumento unico — il motivo per cui T1 resto' non implementata il 26/07 — non si applica qui. Quello uccide i bracket per-sleeve (un limit al livello di SKH chiuderebbe quota TP01); l'ordine netto di ribilanciamento e' uno solo, quindi passivizzarlo non ha conflitti fra sleeve. La domanda era davvero aperta.
(1) Il differenziale, limite superiore (tutto maker, zero non-fill): dSharpe +0,0333, dCAGR +0,466 pp → $2,96/anno a $635, $23,28 a $5.000, $1.203 al muro di $258k. ✅ Replica indipendente della curva del 26/07: +0,0167 Sh/bps e +0,233 pp/bps contro i pubblicati 0,017 / 0,23.
📌 (2) Il costo del non-fill, ed e' qui che muore: il parametro che decide non e' l'orizzonte, e' cosa si chiama "riempito".
| N (min) | TOCCO low <= P (limite superiore) |
ATTRAVERSAMENTO low < P (minimo difendibile) |
|---|---|---|
| 5 | fill 93,2% · resta +0,31 bps (15,5%) | fill 86,2% · resta −0,47 bps (−23,6%) |
| 60 | 98,6% · +0,34 (17,1%) | 95,9% · −0,45 (−22,4%) |
| 120 | 98,9% · +0,67 (33,7%) | 96,9% · −0,38 (−19,0%) |
Fra le due colonne cambia una sola disuguaglianza stretta: se la barra che apre esattamente al nostro prezzo, e da li' se ne va, conta come fill. Non conta — a quel prezzo non e' stato scambiato niente dopo l'arrivo dell'ordine, e un passivo sta dietro a tutta la coda. Griglia fine: il salto e' tutto al primo passo (3,16 → 3,95 bps a penetrazione sub-tick) e non esiste un q positivo di pareggio. Lente model-free: il fill richiesto per pareggiare e' 88-98%, quello ottenuto e' sotto in 25 celle su 25.
Gate: appaiato per ORDINE (ogni ordine compare una volta in entrambe le politiche, riempito o no — allineare sui riempiti avrebbe tenuto solo i casi in cui non e' successo niente); IC95 bootstrap contiene lo zero in 10 celle su 10 al tocco e a q=0, interamente negativo da q≥1; placebo a ore casuali girato → reale ≈ placebo e incoerente fra i due asset (BTC 6,8 vs 3,1 bps; ETH 4,1 vs 4,7) ⇒ la selezione avversa non e' "il libro trada nei momenti brutti", e' strutturale all'esecuzione passiva e non si aggira scegliendo momenti migliori. Null del de-levering non pertinente e dichiarato (nessun claim di DD; il maxDD cambia segno fra le lenti = non e' un effetto).
📌 La firma della troncatura, vista dall'altra parte. Il passivo vince sul 92-98% degli ordini e perde sulla media: mediana dell'avversa −2,0 bps (favorevole), media +4,3, peggiore +948, e i 5 ordini peggiori su 1535 fanno il 42% del danno. E' la forma speculare del profit-take di VRP01 (30/07). Una politica che vince quasi sempre e perde sulla media si giudica sulla media.
⚠️ Rischio operativo quantificato: a N=60 restano aperti al giro successivo il 4,6-7,8% degli
ordini = 9-15 volte l'anno in cui l'esecutore deve cancellare-e-rimpiazzare su un conto vero. Oggi
rebalance_signed manda market e finisce: nessun ordine sopravvive al giro → si comprerebbe un
modo nuovo di rompersi (il libro ha gia' pagato quel prezzo con fresh_5m) per un beneficio il cui
IC95 contiene lo zero.
⚠️ Numero del brief non riprodotto: l'agente ricostruisce 191 ordini/anno di libro a $635 contro i "35-44/anno per asset" del brief; il nastro vero da' 18 ordini in 45 giorni = 146/anno. La conclusione non dipende da questo (il punto 1 usa il turnover modellato, che replica la curva pubblicata al terzo decimale), ma il numero del brief va ri-verificato.
VERDETTO: SCARTATO. +0,033 Sharpe nel caso impossibile, contro ±0,20 di banda d'ancora del libro.
Smentitore dichiarato: una misura di profondita' del book sui perpetual USDC (che l'OHLC non
contiene e che il progetto non raccoglie — cb_chain e' opzioni). Se a taglie di $5-80 la coda al
miglior livello si consumasse senza che il prezzo debba attraversare, il segno si ribalta. E'
misurabile in avanti: registrare book_depth al momento di ogni ordine e poi il volume scambiato
al livello.
24 — CRITICO (critico di completezza dell'ondata)
scripts/research/r0822b_critic.md (48 KB, markdown — non uno script). Ha letto brief, registro,
diario e i sorgenti degli agenti.
📌 La tesi, e regge: il metodo dei singoli filoni non e' il problema dell'ondata, la CUCITURA lo e'. I difetti gravi stanno nei punti dove nessun agente era responsabile.
🚨 (a) dealer_net_gamma NON e' "il GEX col segno invertito" — la regola l'ho pubblicata io in
CLAUDE.md ed e' FALSA. ✅ Verificata da me aprendo la fonte, che gira su questa stessa VPS:
/opt/docker/cerbero-mcp/src/cerbero_mcp/common/options.py:11-14 dichiara la convenzione
("i dealer sono SHORT calls (le vendono al retail) e LONG puts") e dealer_gamma_profile:138-140
la implementa (call_dealer_gamma -= contrib / put_dealer_gamma += contrib). Non e' un segno
invertito per errore: e' un'assunzione di posizionamento dichiarata, diversa da quella del GEX
standard. Il default top_n_strikes=50 spiega anche il coefficiente −0,7 e l'offset che il filone
DEALER-GAMMA attribuiva a "non-portabilita'". Il verdetto SCARTATO regge; cade la regola, che le
prossime ondate avrebbero ereditato al contrario.
🚨 (b) Il deflated-Sharpe e' stato misurato ai suoi DUE estremi degeneri lo stesso giorno, da due
agenti che non si citano — e tre gate pre-registrati ci poggiano sopra (XSR01 23/10, DVOLSPREAD
24/10, 22/12). altlib.deflated_sharpe calcola sr0 = sd(Sharpe dei trial) × mult(N): dipende dalla
varianza della griglia, non solo da N. Da un lato VOL-SIZE dichiara il proprio DSR VACUO
(1,000 anche per il baseline); dall'altro ORTHO-SCREEN pubblica "sr0 = 1,572 ⇒ uno screen largo su
BTC/ETH non puo' passare il proprio gate per aritmetica" — ma quell'1,572 implica sd≈0,58, e le
stesse 168 celle dichiarate come 7 famiglie da 24 danno 1,15, sotto il soffitto ~1,3: il verdetto
"impossibile per aritmetica" si ribalta senza toccare un dato, e la cura che suggerisce
(dichiarare famiglie piu' piccole) e' esattamente la manovra che il progetto ha proibito il 30/07.
✅ Convergenza indipendente: il filone BOCPD, che non ha parlato col critico, ha misurato lo
stesso difetto dall'altro capo (DSR 0,998 PASS dentro la famiglia omogenea → 0,555 FAIL con
l'sr0 di screen). Due agenti, due strade, stessa conclusione: il gate non ha una regione utile in
mezzo.
🚨 (c) Il filone ALT-OPTIONS non e' nel registro — ✅ verificato: zero occorrenze, ne' riga ne'
sezione, benche' due altri filoni lo citino e il mio brief per SURFACE-RV mandasse a leggerlo. Il
diario lo liquida come "alt-options (alt)", ma la sua conclusione riguarda ETH_USDC, che non e'
un alt: f_venue 0,980 e max-loss $16,62/lotto. Se regge, e' la quarta soglia pubblicata
falsificata (il diario ne annuncia tre) e sposta VRP01 da "servirebbe il 61% di un conto da $3.000"
a "entra in un conto da ~$140". ⚠️ Cio' che NON cambia: la regola "niente short-vol da modello in
deploy" non era una regola di eseguibilita' — VRP01 resta fuori dal libro per il f modellato e
per il gate IV-rank, non per la taglia del lotto.
📌 (d) La misura di maggior valore mai fatta, secondo il critico: il peggior giorno che il libro puo' avere, MISURATO invece che assunto. Il gradino di leva 1,00→1,50x vale 14,7a → 11,6a al capitale-rendita (~€300/mese di versamenti equivalenti, a costo zero) ed e' bloccato da un unico parametro scelto a mano ("un giorno −10%/anno porta k* a 2x"). Controllo di cinque minuti: sui 10 peggiori giorni di BTC/ETH in 7,4 anni — incluso il −41,5%/−45,7% del 12 marzo 2020 — il libro ha fatto +0,97 · +0,72 · 0,00 · −1,98 · −2,24 · +0,23%, e il suo peggior giorno assoluto (−3,38%) non e' un giorno di crash. Il −10% e' plausibilmente una coda da buy&hold importata in un libro difensivo.
📌 (e) La risposta onesta al mandato, che gli era stato chiesto di dare se vera: nessuna misura di ricerca batte "versare". 3,1 anni di ricerca valgono meno dei 5 anni che vale €250/mese in piu'. E la verifica che costa meno di tutte non e' ricerca: leggere il listino di due prop firm. L'intero risultato di testa dell'ondata (+0,400 di J) poggia sull'assunto — scritto in un commento a riga 100 — che una firm crypto listi i 19 alt Hyperliquid con short abilitato. E' la ripetizione esatta dell'errore GTAA01/PRIIPs, per cui il progetto ha gia' scritto la regola: la negoziabilita' sul conto REALE va verificata quando lo sleeve entra in RICERCA.
Altre contraddizioni fra agenti segnalate: lo Sharpe di XSR01 compare con quattro lenti (non tre); il muro di XS01 con tre numeri; la leva riceve guida opposta da GROWTH-POLICY e PROP-ALLOC; il peso di SKH01 e' respinto da un agente e raddoppiato da un altro. Piu' 6 modalita' non esplorate e 6 punti di autocritica — incluso che i 20 MB del dataset futures 2018-2026 (l'unico con la coda 2022) vivono solo in uno scratchpad di sessione.
21 — XS01-OOS (XS01 fuori dalla sua finestra di scoperta) — il risultato di testa della serata
scripts/research/r0822b_xs01_oos.py (78-126 s, cache nello scratchpad, seconda corsa offline,
numeri identici su due corse). 140 trial dichiarati (contati al rialzo: le 6 varianti di config
sono contate come trial anche se sono la rivalidazione di una selezione passata), piu' 1.200
estrazioni di null che non sono trial.
L'idea: il gate del PROP-ALLOC diceva "non aprire un funded prima che XS01 abbia una finestra fuori dal 2024-2026" = un'attesa di anni. Quella finestra esiste gia' — gli stessi 19 ticker su Binance spot USDT 1d, 2021-01 → 2023-12, che contiene LUNA e FTX. Meccanismo congelato (blend [30,90], H=10, k=5, gate p30, vol-target 20%), nessuna griglia cercata.
⚠️ L'obiezione ovvia — "Binance non e' la verita'" — e' stata misurata, non aggirata: quella
regola del progetto riguarda l'ancoraggio di prezzo, non un ranking cross-sezionale, e lo scarto
USDT e' un fattore comune che sparisce nello z-score. Verificato: corr dei ritorni giornalieri per
asset ≥0,9992 (min NEAR), |differenza| mediana 5,1 bps, e soprattutto lo stesso sleeve
calcolato sui due venue da' corr 0,9991, dSharpe −0,025. Replica dello sleeve ufficiale
max|diff| = 0,0. Dato certificato: 0 gap, flat 0,00-0,71%, volumi zero 0,00%, nessun run
iniziale a volume 0 (il rivelatore del backfill sintetico, lezione AXS).
📌 IL RISULTATO, e va nel verso opposto a quello temuto:
| Sharpe (mediana di fase) | banda 10 fasi | fasi >0 | maxDD | CAGR | |
|---|---|---|---|---|---|
| fuori campione 2021-2023 (U13) | +1,12 | [+0,74, +1,54] | 10/10 | 22,0% | +26,1% |
| finestra di scoperta 2024+ (U13) | +0,37 | — | — | 20,5% | +8,9% |
| fuori campione (U19-EXP) | +1,17 | [+0,91, +1,78] | 10/10 | 20,9% | +30,0% |
| XS01 ufficiale (HL, 2024+) | +1,15 | [+0,46, +1,59] | — | 10,8% | +29,0% |
Differenza appaiata per fase (fuori campione − scoperta): +0,668, positiva in 10/10 fasi. Il fuori campione e' la finestra MIGLIORE, non peggiore. Per anno: 2021 +2,14 · 2022 +0,22 · 2023 +0,84 · 2024 −0,48 · 2025 +0,68 · 2026 +2,26.
Sul LIBRO, solo fuori campione (TP01+SKH01 75/25 + XS01, n=1076, dati che PROP-ALLOC non aveva mai visto): w=0 → Sh +1,17 / DD 9,4% · w=0,25 → +1,65 / 6,0% · w=0,33 → +1,67 / 6,6% · w=0,50 (l'argmax di PROP-ALLOC) → +1,56 / 8,9%. corr(XS01, libro) −0,019.
Gate: causality leak-free (randomizzando i prezzi dopo la decisione max|diff| = 0);
marginal_vs_tp01 ADDS su entrambi gli universi (corr +0,031 / −0,01, is_hedge False);
banda di fase gate_pass=True 4/4, e la fortuna d'ancora e' piccola (+0,05) contro il +0,18
dello sleeve ufficiale; null di permutazione a fee zero p=0,013 (cross-sez.) e 0,017 (pesi
casuali); sopravvive a 30 bps/lato (+1,01). deflated_sharpe FAIL 0,342 — e l'agente dichiara
che il DSR penalizza una mediana-di-fase come se fosse un max-di-k, "ma un gate fallito resta
fallito". Null del de-levering non pertinente e dichiarato. Haircut a $600: non e' il vincolo
(ticket mediano $76, 0,0% sotto il min-order).
🚨 Null "universo dove NON dovrebbe funzionare" (11 settoriali SPDR, 1998+, meccanismo congelato): −0,45, 0/10 fasi positive → terza conferma indipendente che il cross-sectional e' crypto-specifico (dopo XSR01-equity 26/07 e STATARB-EQ 25/07).
🚨 Il risultato che il progetto non si aspettava: i DUE AFFINAMENTI del 2026-06-19 NON si replicano. Fuori campione il blend [30,90] e' PEGGIO del solo L=30 (+1,12 vs +1,28) e il gate di dispersione p30 vale ZERO (+1,12 con e senza) — mentre dentro la finestra di scoperta il gate vale eccome (+0,37 contro −0,03). Cio' che sopravvive e' il meccanismo cross-sectional NUDO. ⚠️ Non e' un argomento per cambiarli — cambiarli guardando questo risultato sarebbe la stessa selezione spostata di finestra — e' un argomento per non attribuire loro il valore che la memoria del progetto gli attribuisce.
⚠️ Concentrazione misurata prima di crederci (lezione SOL, stesso giorno): togliendo il 2021 il fuori campione scende +1,17 → +0,57; leave-one-asset-out: togliendo LTC la mediana di fase crolla +1,12 → +0,20 (tutte e 13 restano >0) → ampiezza effettiva bassa, stessa diagnosi di STATARB-MULTI.
VERDETTO: LEAD. Non promuove niente; riscrive il gate del PROP-ALLOC.
📌 IL GATE DEL PROP-ALLOC SI PUO' CHIUDERE OGGI: PARZIALMENTE — e non si chiude, si SOSTITUISCE.
L'attesa di anni non serve. Ma tre cose che il gate non chiedeva sono ora misurate:
- il rendimento sopravvive, il RISCHIO no: maxDD standalone 10,8% → 20,9-22,0% — e su un conto funded il vincolo binding e' la regola di DD, quindi la correzione va nel verso sbagliato;
- il peso 0,50 dell'argmax-J non sopravvive: fuori campione a w=0,50 il maxDD di libro risale a 8,9% contro 6,0% a w=0,25, cioe' restituisce quasi tutta la protezione che e' l'unica ragione per metterlo su un conto a barriera → l'ottimo fuori campione e' w ≈ 0,25-0,33;
- 32% dell'universo non e' testabile (ARB/OP/SUI/APT/SEI/TIA non quotati nel 2021-23) e su di esso vive gran parte del numero di scoperta (19 gambe 1,31 vs 13 gambe 0,54, stessa finestra e stesso venue) → cio' che e' stato validato e' una versione piu' DEBOLE di quella che sta nel libro.
⚠️ Il punto fragile che l'agente dichiara e non ha testato: la validazione di venue gira solo sul 2024+, cioe' proprio il periodo senza depeg USDT, mentre il fuori campione contiene il depeg di maggio 2022. Se i close Binance/USDT 2021-23 divergessero da un venue USD in modo non comune fra gli asset, il ranking cambierebbe e il risultato con esso.
26 — TP01-SINISTRO (il peso di TP01 contro un crash che nel campione non c'e')
scripts/research/r0822b_tp01_sinistro.py (~200 s). 1.784 valutazioni Monte Carlo contate dal
codice, ognuna 2.500 percorsi eval + 2.500 funded, lente accoppiata, de-luck x0,89.
Replica di controllo: i numeri E-ter di PROP-ALLOC (argmax 38/62 @0,50x J 0,521, live 75/25
J 0,443) riprodotti al millesimo.
L'allarme da verificare era il caveat che PROP-ALLOC aveva dichiarato contro se stesso: "la sotto-pesatura di TP01 e' misurata su un campione SENZA SINISTRO: su una barriera assorbente quella scommessa si paga una volta sola". L'agente ha registrato nel docstring, prima di misurare, che si aspettava di confermarlo.
| lente | argmax w TP01 | J argmax | J a 0,75 (live) |
|---|---|---|---|
| 2019+ (contiene il 2022) | 0,375 | 0,521 | 0,443 |
| 2024+ (la finestra di PROP-ALLOC) | 0,375 | 0,423 | 0,317 |
| SOLO-SINISTRO | 0,000 | 0,771 | 0,000 |
L'allarme e' falsificato nel VERSO, non nella cautela: TP01 ~0,375 e' l'argmax sia sulla finestra che contiene il 2022 sia su quella che non lo contiene, e nel sinistro il libro con MENO TP01 fa MEGLIO — perche' TP01 va flat mentre SKH01 si gira short e guadagna. Conto dell'assicurazione: premio -4,01%/anno fuori dal sinistro, indennizzo -12,5% cumulato sui 120 giorni di sinistro (LIVE -2,8% contro OPT +9,7%). Test dei segni: OPT batte LIVE 12/12 sulle peggiori finestre 30g (p=0,0005) e 8/8 sul solo sotto-campione pre-2024 indipendente (p=0,0078).
Null del de-levering — 7a occorrenza, in veste nuova ("protezione dal crash" invece di "meno drawdown") e decisivo: a leva comune TP01 protegge davvero (sopravvivenza al crash 32,4% -> 76,4% da TP01 0 a 0,625), ma la stessa protezione si compra abbassando la leva, e a ISO-SOPRAVVIVENZA meno TP01 paga di piu' (payout $4.490 a TP01 0,125 -> $2.119 a TP01 1,00, monotono).
Tre risultati collaterali che valgono piu' dell'allarme rimosso:
- "2024-2026 non contiene un crash" e' FALSA nella forma: il 2024+ ha buy&hold a -60% di drawdown e -39,6% in 20 giorni. Manca la taglia (~2,3x sulla coda 1-10 giorni). La domanda giusta non e' "e se arriva un crash" ma "e se ne arriva uno due volte piu' grande".
- Alle leve funded il 2022 NON era una minaccia (min equity -1,4/-2,4% contro barriera -6%): cio' che uccide un conto a barriera e' la regola a un giorno su una giornata qualunque, non il crash del sottostante. E il vincolo che morde cambia col peso: sotto TP01 0,50 e' il daily-loss, sopra e' il max-loss cumulato.
- Il rischio vero dell'ottimo non e' TP01, e' XS01: uno shock di un giorno a ~-10% dimezza la sopravvivenza quando il crash arriva, e XS01 non ha nessun sinistro nel campione. Ipotesi dell'agente nata e refutata in sessione: aveva scritto che TP01 fa da zavorra contro quell'ignoto (-12,3% a XS01 25% contro -8,0% a XS01 50%); il controllo a XS01 fisso e leva comune lo smonta - lo shock di rottura e' -10,1/-10,2/-10,2% muovendo TP01 da 12% a 38% (invariante) e la sopravvivenza severa cala. Protegge meno XS01, non piu' TP01: il primo confronto attribuiva a TP01 il merito di un altro peso.
Libro live NON toccato (75/25 resta). Nota per la memoria: il 75/25 e' fuori dalla regione di compromesso del funded (0,375-0,50) - coerente col fatto gia' scritto il 25/07, canale funded e libro proprietario vogliono libri diversi.
Caveat principale, dichiarato: anchor_luck_band non ri-misurata sotto questa lente; gira
sull'ancora canonica e si appoggia a SKH01, lo sleeve con la fortuna d'ancora piu' grande da
restituire -> la distorsione e' A FAVORE della conclusione. Smentitore dichiarato: un crash
in cui SKH01 non si gira short in tempo (gap notturno oltre lo stop, venue fermo). Il campione ne
ha quattro episodi e in tutti e quattro SKH01 ha girato: l'ampiezza effettiva della coda e' 4, e
nessun bootstrap la aumenta.
27 — SURFACE-RV (la superficie come relative value fra i suoi punti)
scripts/research/r0822b_surface_rv.py (~85-130 s). ~112 valutazioni, e nessuna e' una
selezione: e' un censimento su 1,24 M quote a due lati, non una ricerca di celle.
L'ipotesi era di microstruttura, non di previsione: non chiede alla vol implicita di prevedere niente, chiede se la superficie sia internamente incoerente e si ricomponga. E' l'unico angolo della superficie che l'ondata non aveva coperto (livello, skew, struttura a termine e quote reali erano gia' chiusi).
| test model-free (nessun interpolatore) | esito |
|---|---|
| V — monotonia P(K) | 0 / 1.111.585 |
| B — convessita' P(K) | mid 6,213% · eseguibile 1 / 1.031.256 = 0,0001%, vale $0,00, sparita l'ora dopo |
| C — varianza totale nel tenore | strike condiviso 6/107.177 (0,006%) · con interpolazione 10/112.827 → l'interpolatore contribuisce +0,003 pp |
Ampiezza: |residuo| mediano 0,125 pt-vol (BTC) / 0,200 (ETH) contro mezzo spread 0,861 / 1,208 → rapporto su spread pieno 0,053 / 0,063; sotto il tick nel 96,5% / 95,3% dei casi — l'incoerenza non e' esprimibile nella griglia di prezzo del venue. Economia al lotto minimo: fee 3 gambe $7,54 (BTC) / $2,11 (ETH), miglior credito netto su 782 k farfalle equispaziate −$0,95 / −$0,33, positivi 0. Calendario: violazione mediana $0,09 contro $0,59 di costo, e la superficie sta 13,2 pt-vol dal bordo di non-arbitraggio → vincolo strutturalmente slack.
📌 IL MECCANISMO, che vale piu' del verdetto: |residuo| cresce MONOTONAMENTE col largo del mercato — BTC 0,080 pt a spread 2,6% → 0,255 pt a spread 50%. L'incoerenza al mid e' la larghezza del mercato guardata attraverso il mid, non un errore di prezzo.
⚠️ E questo uccide l'unica riga non-zero, che era un artefatto del CONTROFATTUALE dell'agente stesso: prendendo tutta la superficie, lo spread USDC del 2,6% aprirebbe 2.293 farfalle a credito su ETH (miglior caso $123); restringendo alla parte di superficie gia' quotata stretta quanto le USDC → 0/13.287 (ETH) e 0/145.431 (BTC), miglior caso −$0,58 / −$0,82. Prendeva il mid di un mercato larghissimo e fingeva di poterlo quotare al 2,6%.
Reversione MISURATA, non assunta: β −0,062/−0,056 per ora, corr(t,t+1) +0,94, mezza-vita 11-12 h → il residuo e' la forma dello smile, non un errore che si ricompone.
Gate: controlli positivi 3/3 in entrambi i versi (violazione costruita → rilevata; catena sana
→ zero) — un rilevatore che trova ~0 e non e' validato e' indistinguibile da uno rotto; causalita'
strutturale (ogni test e' contemporaneo dentro un solo snapshot); ancora oraria girata (incoerenza
mid 5,99-6,36% su 24 ore, eseguibile max 0,00222% → nessuna ora apre una finestra).
marginal_vs_tp01/deflated_sharpe/de-levering/implausible_sharpe non girati, e il perche' e' il
risultato: non esiste una serie di ritorni da valutare (1 opportunita' su 1,03 M, del valore di
$0,00). f_markfit 1,0010 — converge col 0,992 del filone SKEW, implementazione separata →
il difetto non e' il prezzatore.
VERDETTO: SCARTATO. Il lato relative-value della superficie e' chiuso.
Smentitore piu' forte, dichiarato: quote reali della famiglia USDC (tutta l'estrapolazione e'
un controfattuale sui mid inverse) — osservazione decisiva: puntare il collettore anche su
{"currency": "USDC"} e rifare TEST B sul suo bid/ask.
🚨 SOTTOPRODOTTO — buco di colonna nell'archivio ereditato, mai registrato: bite_archive ha
index_price e underlying_price 100% None (1.232.212/1.232.212). Il sottostante esiste solo
dal 2026-07-30 (raccolta propria, 18,2% delle righe); book_depth_top3 solo nel 67,2%. Chiunque
calcoli moneyness o riprezzi sull'archivio pre-30/07 sta usando una colonna che non c'e'.
✅ Ed e' chiudibile: il forward si ricostruisce con la parita' put-call dalla catena stessa —
verificato contro l'osservato su 6.578 coppie: |errore| mediano 0,023%, p95 0,147%, corr
1,000000 → rende la superficie utilizzabile su tutti i 75 giorni invece che 23.
✅ Terza convergenza indipendente sul muro del dato (75 giorni di superficie); e lo smile —
che i filoni SKEW/TERM non usavano — esiste invece su 113 giorni dal 2026-05-01.
28 — DEPEG (il falsificatore di XS01-OOS, eseguito)
scripts/research/r0822b_depeg.py (811 righe, 18 s, offline dalla cache, due corse
byte-identiche). 112 configurazioni, e nessuna e' una selezione: e' un confronto appaiato
dello stesso meccanismo congelato su due fonti di prezzo.
Perche': l'autore di §21 aveva dichiarato contro se stesso che la sua validazione di venue gira
solo sul 2024+, cioe' proprio il periodo senza depeg USDT, mentre il fuori campione contiene
il maggio 2022. La soglia — corr fra i due sleeve >= 0,99 — era dichiarata da lui, non
dall'esecutore del test.
Il dato, e il primo limite: su 13 asset 10 hanno un prezzo USD che copre la finestra (9 Coinbase + XRP da Bitstamp, perche' Coinbase l'aveva sospeso). BNB non esiste in USD prima del 2025-10 — e' il token nativo del venue sotto esame. AVAX parte 2021-09-30 → il test non copre il 2021, ma copre esattamente cio' che l'obiezione nomina: maggio 2022 e FTX.
📌 Divergenza SCOMPOSTA nelle due componenti che sono domande diverse (824 giorni, 8.240 osservazioni appaiate): (a) comune med 3,2 bps / max 76,7 — quella che lo z-score annulla; (b) idiosincratica med 2,1 bps / p95 11,2 / max 116,5 — quella che cambia il ranking. Nel depeg (07→20 maggio 2022) il comune arriva a −39 bps ma l'idiosincratico sale solo a med 3,6 / max 33,8 bps contro 2,0 / 10,9 fuori.
TEST 1 (meccanismo congelato, 10 asset, 10 fasi, 2021-09→2023-12): corr mediana 0,9992, minima 0,9921 → PASS; dSharpe appaiato −0,000 [−0,056, +0,036]; divario di equity cumulato su 2,25 anni +0,07%. Il canale del danno, guardato direttamente: 734 ribilanciamenti, 10 con gambe diverse (1,36%), tutti a sovrapposizione 4/5, ZERO dentro la finestra del depeg; Spearman dello score mediana 1,0000. TEST 2 (finestra intera di §21): il numero di testa +1,12 → +1,11, delta appaiato −0,003.
VERDETTO: IL RISULTATO XS01-OOS: SOPRAVVIVE — il venue sposta il titolo di §21 di 0,01 di
Sharpe e non cambia una sola gamba dentro il depeg.
Controllo positivo girato (obbligatorio, o "corr 0,99" potrebbe essere uno sfasamento): USD
ritardato di 1 giorno → corr mediana −0,011.
Tre cose trovate che vanno registrate:
- 📌 L'unica corr sotto soglia e' ATTRIBUITA, e non e' il prezzo. Col gate di dispersione
spento su entrambi i venue la minima passa 0,9674 → 0,9977. Il gate
disp >= percentilee' binario, quindi pochi bps cadono ai due lati → 4 intervalli da 10 giorni in cui uno sleeve e' pieno e l'altro flat, piu' una coda di ~30 giorni in cui larv30del vol-target resta diversa. Una scansione di ranking non lo vede. ✅ Converge con §21 ("il gate p30 fuori campione vale ZERO"): non porta edge e amplifica il rumore — ⚠️ non e' una proposta di cambiarlo, cambiarlo guardando questo numero sarebbe selezione. - 🚨 Il caso peggiore dell'intero campione NON e' il depeg: e' il 2025-10-10 (cascata di liquidazioni sulle coppie /USDT) — INJ 1.981 bps, ADA 315, LTC 201, AAVE 136 mentre BTC/ETH stanno a 21-22. Il meccanismo temuto dall'obiezione e' REALE; semplicemente non e' accaduto nel 2021-2023 ed e' caduto nella finestra di scoperta, non nel fuori campione. Nel depeg le peggiori divergenze sono AVAX subito dopo la quotazione = book sottile, non stablecoin.
- ⚠️ BNB resta non controllabile e toglierlo costa −0,75 di mediana di fase (+1,12 → +0,37) — ✅ replica esatta del leave-one-out di §21 con implementazione separata. Contesto onesto: nella LOO di §21 LTC (+0,20), BTC (+0,33) e XRP (+0,33) pesano di piu', e quelle tre sono coperte dal controllo USD.
Smentitore residuo dichiarato: la divergenza del 2025-10-10 e' di chiusura; un evento intra-giornaliero della stessa natura sposterebbe il ranking senza lasciare traccia sulle chiusure, e i close giornalieri non lo vedrebbero.
⚠️ Nota di attribuzione: il file risultava M in git perche' io (coordinatore) l'avevo incluso
in un commit mentre l'agente ci stava ancora lavorando — non un altro agente. Un git add -A durante
un'ondata cattura il lavoro in corso.
25 — BIN-FREQ (il binario di frequenza su SKH01, giudicato come candidato)
scripts/research/r0822b_bin_freq.py (~400 s, 23 ancore piene, due esecuzioni indipendenti con
output numericamente identici). 144 celle dichiarate nel docstring prima di guardare, piu'
i 71 trial gia' spesi sullo stesso oggetto (28 VOL-SIZE + 43 scettico) → conto onesto = 215:
riaprire un parametro riapre la sua famiglia.
Repliche bit-exact (max|dif| = 0) contro sleeves._skyhook_returns() e contro
r0702_anchor_skh01.run_asset; titolo dello scettico riprodotto esattamente chiamando la sua
funzione (BIN L>=med +0,080 in 20/23, inverso −0,159 in 0/23).
| ShFULL | ShHOLD | maxDD | CAGR | |
|---|---|---|---|---|
| BASE (libro live 75/25) | 1,626 | 1,037 | 10,4% | 18,6% |
| BIN, peso effettivo lasciato cadere | 1,690 | 1,031 | 10,3% | 17,8% |
| BIN, controllo ISO-PESO | 1,589 | 0,956 | 10,0% | 16,8% |
📌 La statistica che decide non e' l'argmax, e' la MEDIANA DI FAMIGLIA. Argmax
(q0,50 w60 h0,10 s+) ISO +0,112 in 23/23; stima onesta di famiglia +0,007, con 39/72
celle positive = 54% ≈ monetina. L'argmax vale 16× la mediana → punta, non plateau.
Controllo di segno: 0/72 celle positive sulla meta' inversa → la direzione e' solidissima.
Gate: marginal_vs_tp01 ADDS; selezione in-sample-only sceglie la stessa cella mentre
scegliendo sull'hold-out ne esce un'altra (−0,017) → il gate ha potenza;
weights_tilt_null FAIL (pctl 36-38) e per giunta inerte (il binario abbassa il peso
effettivo 0,250→0,19, e nella forma di deploy naturale il vettore proposto e' identico a quello
corrente); causalita' verificata con troncamento diretto su 52 decisioni, 0 divergenti;
trasferisce a SKH01_V1 (geometria d'uscita diversa): +0,087 in 20-21/23.
❌ Il deflated-Sharpe NON e' vacuo — refuta l'ipotesi a-priori che l'agente aveva registrato: 0,976 (N=144) / 0,977 (N=215, conto onesto) / 0,948 (N=500), baseline 0,828/0,834. E il motivo e' riusabile: il DSR e' vacuo quando i trial si somigliano (var→0 ⇒ sr0→0 ⇒ DSR≈1 per chiunque); una famiglia binaria contiene celle che scartano insiemi di trade molto diversi, quindi riacquista potenza. Non e' il binario a essere piu' solido: e' la famiglia a essere piu' larga. ✅ Terza misura convergente della stessa giornata sul difetto del DSR (con BOCPD e CRITICO).
⚠️ Il null "con potenza" ha una mediana che NON e' zero, ed e' un fatto di misura: scartare a caso il 40% dei trade danneggia, perche' lo Sharpe annualizzato va con √(scommesse/anno) — misurato: gamba 1,107 → 0,883 permutata contro 0,861 previsti da √0,60. Il null resta valido e piu' severo (reale +0,112 vs massimo del null −0,031, p<0,01), ma risponde a "batte una selezione casuale?", non a "batte il non filtrare?".
🚨 Due premesse del MIO briefing misurate e REFUTATE: (i) "il binario dimezza gli ordini → migliora l'eseguibilita' e riduce le fee" — gli ordini nettati calano del 17%, non del 50%; i sotto-min-order non si muovono perche' sono di TP01; e l'haircut a $635 e' 0,001 in entrambe le braccia: non c'era niente da guadagnare. (ii) "converti il risparmio di fee in Sharpe con la curva del 26/07" — a fee ZERO l'effetto resta l'87-110% → non e' risparmio di costo, e' informazione sul rendimento lordo, e convertirlo sarebbe stata un'attribuzione sbagliata.
VERDETTO: LEAD (non candidato, non scartato). La direzione e' reale e sopravvive a tutto; la
taglia di una singola cella e' selezione.
📌 E la domanda che avevo posto — "+0,080 contro ±0,196 di banda d'ancora, merita?" — era il
confronto SBAGLIATO (la banda del livello si cancella in un disegno appaiato), ma la risposta
corretta e' PEGGIORE per il candidato. Criterio dichiarato, 4 gambe: (1) mediana di famiglia ≥ meta'
della cella e >65% celle positive → FAIL (6%, 54%); (2) weights_tilt_null → FAIL/vacuo;
(3) marginale + null con potenza → PASS; (4) taglia ≥ €0,10/giorno per pagare un modo di fallire in
piu' → FAIL: €0,0113/giorno ($4,79/anno a $635).
Due prove ausiliarie che chiudono il caso: due implementazioni difendibili della stessa regola
(d'accordo sul 97,6% dei trade) danno +0,066 contro +0,080 — il 21% dell'effetto sta nel come si
riempie il warm-up; e versare €500/mese vale ~1456× l'effetto misurato.
Libro, pesi, cron, config INVARIATI.
📌 Riapertura pre-registrata: non una data, una SOGLIA DI CAPITALE — cio' che fallisce e' il rapporto fra un costo operativo fisso e un beneficio proporzionale, e nessun dato in piu' lo cambia (con SE(Sharpe)≈1,4 su 6 mesi nessun forward misura 0,07). €0,10/giorno richiede ~$5.600 alla stima della cella e ~$53.000 a quella onesta di famiglia → si rivaluta alla revisione dei $20k gia' in calendario, e solo se la cella e' giustificata da un MECCANISMO invece che dall'argmax di una griglia.
29 — PROP-RECAL (J rifatto con XS01 dalla storia lunga) — la decisione
scripts/research/r0822b_prop_recal.py (891 righe, 309 s, nessuna rete). 5.212 valutazioni MC
contate al rialzo; risoluzione dichiarata ±0,010 sui livelli di J, ±0,007 sulle differenze
appaiate. ✅ Riproduzione ESATTA cifra per cifra dei numeri di PROP-ALLOC (J 0,738/0,721/0,335;
P(pass) 82,2/77,3/38,6%; scala 39,28 €/g e 41,7%) piu' tre controlli bit-exact a 0,0.
📌 IL RISULTATO: J non regge alla taglia pubblicata, e il colpevole NON e' la finestra. Decomposizione a un grado di liberta' per volta, stesso pannello:
| passo | J | Δ |
|---|---|---|
| XS01 = HL 19 gambe, finestra di scoperta (il pubblicato) | 0,739 | — |
| → Binance 19 gambe, date allineate (VENUE) | 0,732 | −0,006 |
| → Binance 13 gambe (UNIVERSO) | 0,426 | −0,307 |
| → pannello lungo (FASE) | 0,459 | +0,034 |
| → fuori campione 2021-2023 (FINESTRA) | 0,520 | +0,061 |
🚨 Il 42% del numero pubblicato sta nelle 6 gambe che fuori campione non esistono (ARB OP SUI APT SEI TIA) — e quelle 6 furono messe nell'universo nel 2026-06 guardando la liquidita' HL del 2024+, cioe' dentro la finestra di scoperta. La finestra fuori campione, da sola, migliora. ✅ Allargare l'universo man mano che le gambe nascono (10→19 espandente) da' J identico a U13: i 0,307 non si recuperano.
⚠️ Errore di metodo catturato prima di pubblicare: la prima stesura dava al passo venue −0,254
e avrebbe pubblicato "Binance costa un quarto di J". Era FASE, non venue — xsec_engine
ribilancia sulla parita' dell'indice di pannello, e due pannelli che iniziano a date diverse
ribilanciano in giorni di calendario diversi. Allineati i pannelli, il venue vale −0,006 =
✅ replica indipendente della validazione di XS01-OOS, sulla funzione obiettivo invece che sullo
Sharpe.
J onesto (mediana delle 10 fasi, peso 38/38/25):
| finestra | mediana J | banda p10-p90 | LIVE 75/25 | delta appaiato |
|---|---|---|---|---|
| W-LONG 2021+ | 0,453 | [0,431 – 0,488] | 0,281 | +0,175 (10/10 fasi) |
| W-OOS 2021-23 | 0,504 | [0,455 – 0,608] | 0,364 | +0,146 (10/10) |
| W-DISC 2024+ | 0,442 | [0,404 – 0,464] | 0,331 | +0,112 (9/10) |
XS01 standalone fuori campione: Sharpe 1,04, drift 22,7%, maxDD −19,2% contro −11,2% dello sleeve ufficiale → il rendimento regge, la coda no, e la barriera guarda la coda.
📌 Il peso 0,50 non sopravvive; la REGIONE robusta si': w_XS ∈ [25%, 38%] e' entro il 3% dell'ottimo su TUTTE E TRE le finestre, discovery inclusa. A 50% J scende a 0,438/0,477/0,408 e il maxDD di libro risale a −12,6%/−11,6%/−9,1% (contro −9,6%/−9,6%/−7,3% a 25%) = replica indipendente del punto (ii) di XS01-OOS.
🚨 IL NUMERO OPERATIVO, con banda di fase: P(≥50 €/g) da €600 in 36 mesi = 7,8% [7,2–9,1%], con P(zero) 25,5% — contro il 41,7% pubblicato stamattina. 6,6% se la firm non lista gli alt; 4,3% per il libro live. ⚠️ J e P(≥50/g) hanno argmax diversi: si cita il centro della regione robusta, non l'argmax di finestra.
Stress ora ancorati al MISURATO (delta appaiato argmax−LIVE): drift pieno +0,193 · SKH ×0,50
+0,124 · SKH ×0,33 +0,113 · XS ×0,00 +0,041 · SKH ×0,33 + XS ×0,00 −0,024 (peggio del libro
live). Lo scenario severo cambia stato: non e' piu' "non sappiamo se il drift esiste" ma un
contro-fattuale a rendimento nullo, e dice che XS01 come pura decorrelazione vale +0,04 — tutto il
resto e' il suo drift, che ora e' misurato per 13 gambe su 19.
Gate: lente accoppiata obbligatoria ovunque (close-only girata solo come controllo: regala +0,020 di J); banda di fase di XS01 girata — prima volta sotto la lente prop (fortuna della fase canonica solo +0,019, delta positivo 10/10); null del de-levering strutturale (ogni configurazione valutata a 8 leve). ⚠️ Banda d'ancora di SKH01 (23 offset) NON girata, surrogata col taglio del drift — e' la distorsione dichiarata due volte e mai rimossa, ed e' diventata la gamba (b) del gate.
VERDETTO: LEAD — ridimensionato di un fattore ~5 sul numero operativo, non falsificato. L'edge sopravvive alla storia lunga (+0,175 di J, 10/10 fasi, col 2022 dentro); crollano il peso 50% e il contributo delle 6 gambe non testabili, non la finestra.
📌 GATE PROP-01 — sostituisce l'attesa di anni, che e' CHIUSA:
(a) LISTINO — verifica, €0, BLOCCANTE prima di ogni spesa: ≥10 delle 13 gambe negoziabili con
short; sotto 10 il meccanismo congelato non ribilancia affatto. FAIL → si decide sulla riga
senza XS01. E' la stessa classe dell'errore GTAA01/PRIIPs.
(b) BANDA D'ANCORA DI SKH01 SOTTO LA LENTE PROP — misura, data 2026-10-31: mediana delle
differenze appaiate sui 23 offset, PASS se > +0,05 (l'agente dichiara prima di aspettarsi un
PASS; il surrogato dice +0,11/+0,12).
(c) CAPITALE: un'eval HYRO $100k costa $579 su un conto di $635 — la prima eval consuma il
91% del conto.
IL CANALE FUNDED: SI APRE A CONDIZIONE DI leggere il listino della firm — e di citarlo come
P(≥50 €/g) 7,8% [7,2–9,1%] con P(zero) 25,5%, non 42%.
30 — LISTINO (GATE PROP-01 gamba (a)) — la verifica da €0, fatta
Non un agente: eseguita dal coordinatore, perche' e' una verifica esterna, non un backtest — ed e' la gamba bloccante prima di ogni spesa. La regola del progetto la impone da luglio: la negoziabilita' sul conto REALE va verificata quando lo sleeve entra in RICERCA (lezione GTAA01/PRIIPs).
📌 Metodo: NON leggere il sito della firm, interrogare il VENUE su cui la firm esegue. HyroTrader
esegue su Bybit via API (o su Cleo, con dati Binance). Interrogato
api.bybit.com/v5/market/instruments-info?category=linear (pubblico, tokenless, 833 strumenti),
lo stesso percorso che il progetto usa per certificare i feed.
| esito | risultato |
|---|---|
| U13 (le 13 gambe testabili fuori campione) | 13/13 Trading, LinearPerpetual |
| le 6 gambe che fuori campione non esistono | 6/6 Trading |
| min notional | $5 su tutte e 13 |
| leva max | 50x-150x |
GATE PROP-01 (a): PASS 13/13 (soglia era ≥10). E sono perpetual lineari: lo short e'
strutturale, non un permesso — non esiste un divieto di vendita allo scoperto su un perp.
⚠️ Cio' che questo NON prova: che HyroTrader non abbia una propria lista ristretta distinta da
quella di Bybit. La sua pagina dichiara "700+ USDT perpetual pairs" su un venue che ne ha 833 →
coerente con nessuna restrizione significativa, ma e' la sua dichiarazione. Il residuo si chiude
con una domanda al supporto, non con un dataset.
✅ VALIDAZIONE del modello del progetto (non correzione): la pagina della firm dichiara
daily drawdown 4% · max loss 6%, e scripts/research/r0725_hyro.py:48-49 usa gia'
EV_TARGET, EV_DD, EV_DL = 0.10, 0.06, 0.04 e FU_ML, FU_DL = 0.06, 0.04 → le regole modellate dal
25/07 sono quelle vere.
🚨 UNA CORREZIONE ECONOMICA, invece, c'e': la quota d'ingresso non e' un COSTO AFFONDATO. La firm
la dichiara "Refundable Challenge Deposit, returned in full alongside your first funded payout"
(pagina della firm + fonti secondarie concordi). Il progetto l'ha sempre modellata come spesa
persa — e la gamba (c) di GATE PROP-01 dice "un'eval $100k costa $579 su un conto di $635 = il
91%". Resta vero che immobilizza il 91% del conto, ma non e' vero che lo brucia: si perde
solo nel ramo in cui non si arriva mai a un payout (P(zero) 25,5%), e torna in quello in cui si
arriva. E' una struttura a opzione, non una fee → l'EV del biglietto va rifatto.
⚠️ Qualita' delle fonti dichiarata: il listino degli strumenti e' primario e misurato (API del
venue); le regole di DD sono primarie ma dichiarative (pagina della firm); la rimborsabilita' e il
prezzo esatto del taglio $100k sono primari-dichiarativi + secondari concordi, non misurati.
📌 Conseguenza sul gate: la gamba (a) e' CHIUSA con un PASS. Restano la (b) — banda
d'ancora di SKH01 sotto la lente prop, che un agente sta girando ora invece di aspettare il 31/10 — e
la (c), che va ricalcolata con la quota come deposito rimborsabile invece che come spesa.
31 — GATE-RECON (cosa direbbero i gate con le serie riparate) — sola lettura, verificata
scripts/research/r0822c_gate_recon.py (719 righe, ~25 s). Zero celle di selezione: e' un audit,
tutte le soglie lette dai file pre-registrati, nessun parametro scelto dall'agente.
✅ Sola lettura provata: md5 + mtime di ogni file data/paper_* invariati dopo la corsa.
| gate | serie | n | Sharpe | maxDD | vol ann. |
|---|---|---|---|---|---|
| STATARB | attuale | 54 | +1,96 | 2,24% | 7,88% |
| STATARB | riparata | 53 | −2,02 | 15,19% | 31,42% |
| XSR01 | attuale | 28 | −6,55 | 0,28% | 0,46% |
| XSR01 | riparata | 27 | −0,99 | 0,82% | 2,78% |
| DVOLSPREAD | attuale | 28 | −15,82 | 0,93% | 0,79% |
| DVOLSPREAD | riparata | 27 | −5,21 | 7,11% | 19,36% |
Minuti di mercato registrati al giorno: 3,9 / 41,2 / 2,5 = ✅ replica indipendente dei 4/41/2 pubblicati stamattina.
STATARB 27/09 — riparata: RITIRO · attuale: CANDIDATO AL DEPLOY
XSR01 23/10 — riparata: RITIRO · attuale: RITIRO
DVOLSPREAD 24/10 — riparata: KILL · attuale: KILL
(Non sono i verdetti dei gate: sono i criteri letti oggi, su finestre incomplete — 54/90, 28/90,
28/91 barre. Anticipare un gate pre-registrato e' selezione sull'hold-out, e l'agente lo dichiara.)
✅ LA PREMESSA SU CUI POGGIA TUTTO E' ORA CONFERMATA PER VIA DIRETTA, non piu' di traverso:
data/_feed_backup/*.prebuild.bak conserva il vintage pre-riscrittura di stanotte →
0 barre chiuse cambiate su 1.761.259 (BTC/ETH 1h+5m). L'unica riga cambiata per file e' l'ultima
del vintage, che era aperta (BTC 21/08: close 73732,5→73690, volume 342→492 = il difetto stesso,
in chiaro). Su 62 cicli paper_prevday fa 1427/1488 identiche, con tasso di divergenza piatto
nell'eta' (2,2-5,1%, nessuna crescita) e concentrato all'ora del cron.
⚠️ Limite dichiarato: hl_*_1d e dvol_* non hanno vintage su disco → per XSR01 e
DVOLSPREAD l'evidenza resta indiretta.
Prove d'identita' obbligatorie prima di ogni confronto: I1 pannello letto ora == quello del
cron di stanotte (max|d| = 0, 3/3, contro lo state.json scritto alle 00:35); I2 barre gia'
chiuse identiche al bit (statarb 6/54, xsr 1/28, dvolspread 0/28 → per quel monitor la prova I2 NON
ESISTE, dichiarato); I3 troncare l'INPUT == affettare l'output (max|d| = 0, 3/3).
🚨 (1) IL VETO D'INTEGRITA' DI DVOLSPREAD NON SCATTA: 28 attive / 28 = 100% in ENTRAMBE le lenti. Una serie che misura 2 minuti di mercato al giorno passa al 100% un veto progettato apposta per non far decidere su dati mancanti. Non e' un problema di taratura: il veto conta se il DVOL c'era, non quanto dura la barra su cui c'era — assi ortogonali. La stessa soglia 0,80 applicata alla quota di barre chiuse leggerebbe 0% e vieterebbe. Variante nuova di una regola vecchia: una barra presente non e' una giornata presente. 🚨 (2) Il caso peggiore NON e' quello coi numeri piu' assurdi. XSR01 (|Sh| ×6,6) e DVOLSPREAD (×3,0) dicono lo stesso verdetto in entrambe le lenti; STATARB ha |Sharpe| quasi identico (1,96 contro 2,02) e cambia SEGNO — ed e' il monitor del gate piu' vicino. Un controllo che cercasse "numeri troppo belli" lo lascerebbe passare. 📌 La firma da cercare non e' il |Sharpe| ma la vol forward molto sotto quella del backtest (7,88% contro 31,42%). 📌 (3) L'asimmetria del 25/07 su STATARB: la diagnostica pre-registrata (statica sempre-short) non e' affetta — si ricalcola dal pannello, non dalla serie registrata (varia di −0,01 fra le due finestre contro −3,97 della strategia). Al gate si confronterebbe un benchmark GIUSTO con un numero di strategia SBAGLIATO, e il margine sembrerebbe +5,83 invece di +1,87. Il segno del margine sopravvive: il difetto ribalta il gate, non questa diagnostica.
📌 QUANTO COSTA ASPETTARE — l'unico argomento quantitativo su quando riparare. Con rigenerazione: zero barre perse a qualunque data; si paga solo il rischio che la riparazione non arrivi. Senza: riparare oggi lascia 36/90 barre vere a STATARB (62/90 a XSR01, 63/91 a DVOLSPREAD); alla vigilia, 1. E la riparazione parziale non contamina la finestra, la accorcia — una barra troncata porta ~1/370 della varianza e del rendimento di una vera, quindi non pesa: riparando oggi, il 27/09 si leggerebbe una finestra piu' corta ma VERA (SE(Sharpe) ~3,2 invece di ~2,0). Riparare alla vigilia no.
⚠️ implausible_sharpe girato per la prima volta sulle serie forward: chiede n≥30, quindi 2
serie su 3 non sono giudicabili, e su statarb dice "ok" in entrambe le lenti — il gate non
vede un segno ribaltato.
32 — SKH-ANCHOR-PROP (GATE PROP-01 gamba (b), chiusa oggi invece che il 31/10)
scripts/research/r0822c_skh_anchor_prop.py (391 s, nessuna rete). 5.127 celle, contate al
rialzo, con griglia congiunta PIENA 23 offset × 10 fasi = 230 configurazioni × 8 leve — non un
campionamento e non una somma di marginali (lezione r0726_loo_deluck: la somma delle fortune
marginali non e' la mediana congiunta).
📌 La data non aspettava un dato: aspettava che qualcuno misurasse il costo. Il gate descriveva il
lavoro come "rifare pc._hourly_legs ai 23 offset", che costa 0,6 s per offset. I "~9 min per
asset×offset" sono il costo di r0726_skh_sigcache — una computazione che questa misura non usa.
Secondo gate d'attesa eliminato oggi dopo quello di XS01-OOS, e per la stessa ragione: la stima del
costo non era stata fatta.
GATE PROP-01 GAMBA (b): PASS — delta appaiato mediano sui 23 offset +0,1162, banda p10-p90
[+0,087, +0,152], 23/23 offset positivi, 230/230 celle congiunte positive (soglia
pre-registrata +0,05). Regione: 38/38/25 +0,116 · 38/25/38 +0,120 · 25/38/38 +0,109.
✅ Riproduzione 7/7 esatta dei numeri di PROP-RECAL all'ancora canonica; bit-exact 3/3 a 0,0
(gambe orarie contro pc._hourly_legs() su 65.219 ore; costruttore di libro contro PR.rg a due
pesi), piu' la guardia "confini HTF ⊂ LTF" a ogni offset e l'assert che l'indice giornaliero e'
invariante all'offset — senza il quale il bootstrap non sarebbe appaiato.
🚨 MA il numero operativo scende di nuovo: l'offset canonico 0 e' al 91° pctl dei 23 e regala +0,059 sul delta e +0,112 sul livello J. J del candidato: canonico 0,453 → mediana d'ancora ~0,347; maxDD mediano −10,8% contro −9,6% pubblicato. P(≥50 €/g) da €600 in 36 mesi = mediana 4,4% [banda d'ancora 2,5%–8,2%], P(zero) 35,3% — contro 7,8% / 25,5% di stamattina. ✅ All'ancora canonica la macchina ridice 7,7%: il crollo e' fortuna d'ancora, non disaccordo fra implementazioni.
📌 IL RISULTATO INTERPRETATIVO, piu' importante del PASS: la distorsione dichiarata due volte —
"l'ottimo si appoggia a SKH01, lo sleeve con la fortuna d'ancora piu' grande da restituire" — e'
MISURATA E REFUTATA nella sua forma forte. A 38/25/38 SKH01 sta al medesimo peso del LIVE
(25%), la sua ancora si cancella quasi esattamente nella differenza appaiata, e li' il delta e' il
piu' alto dei tre (+0,120) con la banda piu' stretta (ampiezza 0,032 contro 0,065 e 0,057 delle
due che portano SKH a 38%). L'ampiezza della banda scala col differenziale di peso su SKH01 — come
l'agente aveva previsto prima di misurare. Cio' che paga e' XS01, non un sovrappeso dello sleeve
fragile.
⚠️ Due cose che il PASS non deve nascondere.
- 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 in modo diverso (delta −33%, P(≥50/g) −44%). Un gate superato non e' un numero confermato.
- Il surrogato del 22/08 e' finito vicino al vero per la CANCELLAZIONE DI DUE ASIMMETRIE: ricalcolato a peso fisso il taglio del drift da' +0,076/+0,045 (sottostima il vero +0,116), ma PROP-RECAL lo calcolava ri-cercando l'argmax sui 10 pesi migliori mentre il LIVE resta inchiodato a 75/25 — sotto stress il candidato puo' scappare da SKH01 e il LIVE no → si gonfia a +0,124/+0,113. Il numero era giusto, il metodo no.
⚠️ Sensibilita' dichiarata: il de-luck ×0,89 su questa dimensione e' un doppio conteggio (fu misurato proprio come mediana-ancore/canonica del drift). A ×1,00 il delta sale a +0,148, 23/23 → tenerlo e' conservativo. Smentitore residuo, fuori dal perimetro della gamba (b): l'ancora giornaliera di TP01 (24 ore), che questa misura non tocca e che resta canonica 00:00 UTC = la piu' fortunata delle 24 per l'hold-out di TP01. E' la terza dimensione, e l'agente la dichiara.
33 — WORST-DAY (il peggior giorno del libro, misurato invece che assunto)
scripts/research/r0822c_worst_day.py (1.112 righe, 12 s). 847 valutazioni, soglia EVT
dichiarata a priori (95° pctl) e criterio congelato prima delle sezioni decisive → non c'e' un
massimo scelto su cui barare, quindi non c'e' un DSR da calcolare.
Il filone che il critico dell'ondata aveva indicato come la misura di maggior valore mai fatta:
il gradino di leva vale 14,7a → 12,9a a 1,25x e → 11,6a a 1,50x al capitale-rendita (⚠️ correzione 23/08: la prima stesura scriveva "1,25-1,50x vale 14,7 → 11,6a, ~€300/mese" fondendo due gradini — il €300/mese e' del 1,50x; a 1,25x l'equivalente e' +€164/mese, ricalcolato sulla tabella netta) (€282/mese a 1,50x di
versamenti equivalenti, a costo zero) ed era bloccato da un solo parametro scelto a mano:
"un giorno a −10% ogni anno".
📌 Il peggior giorno ha DUE risposte e differiscono di ~2×: −3,94% in chiusura (2020-03-13) e −7,33% al minimo intra-giorno (mediana del rapporto sui giorni in perdita 1,89×).
⚠️ E il critico va CORRETTO nel meccanismo, non solo confermato. Sui 10 giorni peggiori del sottostante il libro fa −2,34% contro −182,1% del mercato (guadagna in 4/10; il 12 marzo 2020, −43,6%, fa +3,80%) — ma sui 160 giorni di crash perde in media −0,505%, e l'esposizione di TP01 scende monotona col crollo (0,096 nella fascia −5/−2% → 0,042 sotto il −20%). Il libro non e' immune ai crash: e' immune ai crash GROSSI, perche' li' il trend si e' gia' girato. E 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 (secondo peggiore −6,67% → la coda di SKH01 e' un giorno solo).
La coda stimata (GPD, IC95 bootstrap a blocchi): chiusura −2,90% a 1/1.000 giorni, −4,55% a 1/10.000 [−6,34 / −3,08%]. ⚠️ Hill dice −7,34% (ξ 0,34 contro 0,09): i due stimatori non concordano → si cita la banda, non il numero. Il conto ARITMETICO (cap + vol-target, che converte un crash nel suo z-score rendendo il bound invariante alla vol, + gap-through di SKH01): peggior giorno possibile a k=1,00x = −14,32% in chiusura. 📌 Quindi il −10% sta al 70% del massimo strutturale: la TAGLIA e' plausibile, la FREQUENZA no (1 ogni 67-6.075 anni contro "ogni anno"). La riserva e' ridimensionata di 2-4 ordini di grandezza, non falsificata. 📌 E la forma della coda non e' la leva: muove k* di 1-2 unita', il drift di 6,7. Anche prendendo lo stress a mano alla lettera: k* 2,95x → mezzo-Kelly 1,48x → lo stress bocciava il gradino DOPPIO, non quello singolo. C1-C5 passano tutti (margine strutturale 2,8×, liquidazione 4×, guadagno a drift −2SE +2,01%/anno).
🚨 IL RISULTATO CHE NESSUNO CERCAVA, ed e' quello che decide: 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 lascia il libro a k=1,00x in 5.647 giorni-asset su 5.650. ✅ Verificato dal coordinatore:
le chiavi di live.json 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 del progetto — "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.
🚨 SOTTOPRODOTTO CHE TOCCA OGNI NUMERO DEL PROGETTO: il funding dei perpetual non e' modellato in
NESSUN backtest. ✅ Verificato dal coordinatore: zero occorrenze di funding in
src/backtest/harness.py, src/strategies/trend_portfolio.py, src/portfolio/{sleeves,portfolio}.py
e in tutto src/live/. Proxy Hyperliquid 14,8%/anno × esposizione long media di TP01 0,103·E =
~1,53%/anno che il libro paga davvero = il 9% del drift de-luckato, cioe' lo stesso ordine
della correzione d'ancora ×0,89 che il progetto ha misurato con cura.
📌 Sottoprodotto forense: la lente del critico si IDENTIFICA dai valori che ha pubblicato (+0,97 e
+0,72 compaiono solo nella riga canonica) → aveva usato book_series('canonical'), e su quella
lente il peggior giorno E' un giorno di ribasso (−3,47%, 2025-10-10). Aveva ragione, con la lente
sbagliata.
VERDETTO: LEAD (misura di politica, non strategia).
IL GRADINO DI LEVA A 1,25x: AUTORIZZABILE A CONDIZIONE DI costruire prima una chiave di scala
esplicita in config, e di 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 dell'agente, dovuta: se si credono entrambe le riserve insieme (drift −2SE e −10%
annuo) il drift atteso e' −0,61%/anno → a quel punto non e' il gradino a essere sbagliato, e' il
libro, e chi usa quella combinazione sta chiedendo di spegnere anche il conto di oggi.
34 — CC01-2022 (il cash-and-carry riaperto sul dato che gli mancava)
scripts/research/r0822d_cc01_2022.py (~8 s, zero rete). 47 celle contate al rialzo.
Perche' si poteva riaprire: il verdetto del 26/06 poggiava su una ragione falsificabile e strutturale — "lo storico funding parte dal 2023-05 → manca il 2022, i rischi di coda sono fuori dal dataset". Stamattina BASIS-CALENDAR ha ricostruito 30/30 futures trimestrali scaduti dal 2018-09, col deleveraging 2022 dentro. E' l'unica base su cui questo progetto riapre un filone: dati nuovi.
✅ PRIMA della ricerca, la persistenza (il critico aveva segnalato che i 20 MB vivevano solo in
uno scratchpad di sessione): copiati in data/raw/fut_deribit/ — 72 file, 20,3 MB, 601.704 righe
(BTC 240.150 barre orarie / ETH 233.334, 34 contratti per asset, 2018-09→2026-08) + 64.110 ore di
funding e indice per asset dal 2019-04. Sottocartella con prefisso, mai il namespace nudo
(lezione SOL: il guardrail "solo dati certi" vive nell'assenza di un file).
✅ Guardrail verificato dal coordinatore, non assunto: load_data('BTC-30SEP22') e
load_data('SOL') → FileNotFoundError; load_data('BTC','1h') → 70.311 barre; namespace nudo
pulito. Il cron NON li rinfresca (istantanea al 22/08, contratto in corso troncato) e restano
fuori dal backup perche' ricostruibili con ~2.700 chiamate pubbliche.
📌 Q1 — nel 2022 il carry si INVERTE, e resta invertito per mesi. Funding annuo BTC −2,26% / ETH −6,08% (contro +16,5/+17,3% nel 2021); giorni a funding negativo 53,2%/58,9%; basis mediano del front 12,64% → 1,26% (BTC) e 12,95% → −0,61% (ETH). Peggior episodio: ETH −6,70% di funding cumulato in 170 giorni; BTC −3,98% in 71 giorni nel marzo-maggio 2020 = un secondo buco che CC01 non aveva.
Q2 — la scala, netta fee:
| lente | Sharpe | maxDD |
|---|---|---|
| CC01 come pubblicato (funding HL, 2023-05+) | +12,93 | 0,78% |
| stesso modello, funding Deribit, stessa finestra | +7,88 | 0,87% |
| stesso modello, Deribit, finestra piena (col 2022) | +3,72 | 6,43% |
| + base MTM, premio liscio 24h (la lente di HL) | +1,33 | 6,99% |
| + base MTM, premio grezzo | +0,22 | 25,54% |
| carry ESEGUIBILE a 2 gambe, direzione CC01 | −0,42 | 21,80% |
📌 E il salto piu' grande NON e' il 2022: e' il VENUE (+5,04 passando da HL a Deribit, stessa
finestra e stesso modello).
⚠️ Correzione che l'agente ha fatto a se stesso sulla propria tabella: aveva scritto "il buco piu'
grande non era il 2022" — falso, e' il pezzo singolo maggiore (+4,16). Il punto vero e' piu' forte:
da solo non basta (7,88→3,72 fa ancora scattare implausible_sharpe), e i due pezzi mai
dichiarati il 26/06 valgono insieme altrettanto.
Gate: 🚨 implausible_sharpe 5/5 sulle varianti r=funding — compresa quella col 2022
dentro; pulito su tutte le varianti con la base o la seconda gamba. 📌 Il gate NATO da CC01
continua a segnalare CC01, e smette esattamente quando il rischio entra nel campione — e li' l'edge
non c'e'. marginal_vs_tp01: DILUTES (sign +1) / HEDGE (sign −1). deflated_sharpe 0,363
FAIL su 47 trial (massimo atteso dal solo rumore +0,24 > +0,11 del candidato). Null del
de-levering REFUTED sulla versione a 2 gambe. Controllo positivo di causalita': togliendo lo
.shift(1) il numero sale (6,85→7,39) → il test ha potenza. Ancora: fortuna +0,005 = nessuna.
Q3-Q4 — i muri non strutturali, riprezzati. Lotto minimo BTC $10 / ETH $1 → l'eseguibilita' non
e' il vincolo (5ª volta in questa ondata); margine iniziale $13. ⚠️ Ma tutti i futures datati
Deribit sono INVERSE: non esiste una linea USDC datata — stesso muro delle opzioni, e il
collaterale in BTC e' esso stesso esposizione direzionale. Non risolto, serve una verifica sul
conto reale.
🚨 CORREZIONE 2026-08-23 (§39): QUESTO MURO E' FALSO. Esistono 16 futures datati con settlement
USDC su BTC/ETH (il piu' vecchio BTC_USDC-25SEP26, creato 2026-05-07), taker identico al
perpetual (0,00035) e min-order 0,0001 BTC / 0,001 ETH. ✅ Verificato dal coordinatore con una GET
pubblica. La svista e' di NAMESPACE, non di fatto: get_instruments?currency=BTC non li
ritorna — i lineari stanno sotto currency=USDC (48 datati in totale). Il coordinatore ha
commesso la stessa svista al primo controllo e ha ottenuto 0. Il muro vero e' un altro: quella
linea ha 3,5 mesi di vita e ZERO roll trimestrali mai eseguiti. MAE per trade: −11,68% sulla storia piena → leva max 7,8x/gamba, contro −3,64% →
20,9x nella sola finestra di CC01 = 2,7× di leva di troppo; sul carry puro con base MTM, MAE 90g
−16,57% → 5,6-6,4x contro le ~80x che un maxDD dello 0,8% farebbe credere sostenibili.
⚠️ Correzione a BASIS-CALENDAR: il costo di roll e' 0,44%/anno, non ~1,4% — quello contava il
roll su entrambe le gambe, ma il perpetuo non si rolla. Correggerlo non crea un edge.
🚨 IL SOTTOPRODOTTO CHE VALE PIU' DEL VERDETTO: la liscezza era una proprieta' della COLONNA, non del
rischio. sd del Δ-premio giornaliero: 4,2 bps (premium di Hyperliquid) contro 106,2 bps
(Deribit grezzo) = 25-31×. Quindi la frase del 26/06 — "il mark-to-market della base sgonfia lo
Sharpe solo 13→11, il basis-from-data NON e' il rischio vero" — era un artefatto della fonte:
su Deribit lo stesso esperimento fa 10,87 → 1,65 (liscio) / 0,37 (grezzo) sulla stessa finestra.
📌 Secondo sottoprodotto: convenzione inverse ≠ lineare vale −0,54 di Sharpe e −2,6pp di CAGR
(BTC), concentrati nel 2020-21 — su una coppia inverse con nozionali pareggiati in USD resta un delta
residuo ≈ −basis, che vale piu' dell'intero premio.
⚠️ Ipotesi dell'agente smentita in sessione: il gate causale di CC01 dodgia il 2022 (−0,9%
contro −6,0%, l'85% della perdita) perche' il funding negativo e' persistente.
VERDETTO: CC01 COL 2022 DENTRO: RESTA SCARTATO — e per la ragione giusta, ma quella pubblicata era necessaria e non sufficiente.
35 — FUNDING (il costo che il progetto non aveva mai prezzato)
scripts/research/r0822d_funding.py (1.212 righe, 32 s, --no-net usa la cache). Nessuna cella e'
una selezione → niente DSR da calcolare. Ridotto per budget: muri a 2.000 path (risoluzione ~1%,
dichiarata).
Il progetto ha prezzato fee, slippage, min-order, pavimento IB, haircut, fortuna d'ancora, degrado d'esecuzione, look-ahead, backfill, split, contaminazione EUR/USD, rischio di venue e fisco — e mai il costo di TENERE APERTA una posizione su un perpetual.
| serie | ShFULL | ShHOLD | maxDD | CAGR | drift |
|---|---|---|---|---|---|
| LIBRO 75/25 path live | 1,692 | 1,214 | 11,2% | 20,43% | 19,24% |
| + funding | 1,513 | 1,154 | 11,5% | 17,87% | 17,08% |
| Δ | −0,179 | −0,060 | +0,3pp | −2,56% | −2,16% |
| TP01 canonico | 1,314 → 1,146 | 0,489 → 0,420 | 14,3 → 15,2% | 16,43 → 14,02% | −2,10% |
| SKH01 50/50 path live | 1,247 → 1,154 | 1,456 → 1,439 | 24,6 → 24,8% | 30,56 → 27,59% | −2,32% |
📌 Il costo va citato CON LA FINESTRA: −2,16%/anno (2019-2026, proxy inverse sul 40% del campione) · −1,39% sulla sola finestra dello strumento vero (≥2022-03) · −0,55% sul 2025+ — e il 2022 e il 2026 costano ~0 perche' il libro era FLAT (esposizione 0,008 / 0,018), non perche' il funding sia sparito.
🚨 IL MECCANISMO, ed e' il risultato trasferibile: esposizione e funding sono POSITIVAMENTE CORRELATI. Il tasso che il libro paga davvero e' 1,86-2,55× l'incondizionato per TP01 e 2,41-3,44× per SKH01. Il prodotto ingenuo "esposizione media × tasso medio" sottostima di ~2× — ed e' esattamente la forma della stima grezza da cui e' nato il filone. ❌ L'ipotesi da cui il filone e' partito — "SKH01 paga meno perche' sta a mercato il 12% del tempo" — e' FALSA: 2,24%/anno di sleeve contro 2,02% di TP01. Quando e' a mercato SKH01 sta a nozionale 1,0× (TP01 vol-targeted sta a 0,14×) ed entra sui breakout, cioe' quando il funding e' caro. Il peso ottimale resta 0,25 con e senza funding, e il delta e' negativo a 23/23 offset per ogni w. ⚠️ Il proxy Hyperliquid era 2,1-2,2× il venue vero sulle stesse ore (14,8% contro 6,8-7,1%): due errori opposti — tasso troppo alto, esposizione condizionale troppo bassa — che quasi si compensavano. Compensarsi non e' misurare.
🚨 COSA CAMBIA NEI NUMERI PUBBLICATI: rendita perpetua 10,73% → 9,14%; muro $276,6k → $325,0k (+17,5%); traiettoria da $600 a €250/mese 16,4a con P(20a) 90% → 18,7a con P(20a) 64%; soffitto direzionale ~1,31 → ~1,15. 📌 E il maxDD NON si muove (+0,3pp): e' una tassa sul DRIFT, non sulla coda — per questo colpisce i muri molto piu' dello Sharpe. Il gradino di leva regge (k* 13,7 → 12,3, guadagno del passo 1,00→1,25× −12%). NON cambia: il peso 75/25, il gradino di leva, il maxDD, ne' l'ordine delle leve del piano.
⚠️ AVVERTENZA DEL COORDINATORE, non dell'agente: 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 (oggi) — le due lenti sono state applicate separatamente allo stesso numero lordo. La tabella con entrambe non esiste ancora, e il risultato congiunto sara' peggiore di 52%.
✅ Validato contro il CONTO VERO, e per ELIMINAZIONE invece che per grandezza: modello contro
realized_pnl di sessione ETH −0,2% / BTC −7,7%, mentre le finestre sbagliate sbagliano di 2-4×.
L'identificazione regge perche' nella sessione ci sono stati 0 ordini (letti dal log) → il P&L di
trading realizzato e' esattamente zero, quindi quel campo non puo' essere P&L di trading; e il
segno e' negativo su due gambe entrambe long. Funding realmente pagato da quando il libro esegue:
$0,22. Convenzione temporale verificata sui dati (interest_8h = somma delle 8 ore trailing
incluso T: mediana |dif| 2,2e-08 contro 1,1e-06 dell'alternativa). Replica bit-exact 5/5.
⚠️ BUG CATTURATO DAL CONTROLLO POSITIVO, non a occhio, e in famiglia gia' nota:
DatetimeIndex.astype("int64") su tre serie dello stesso progetto con risoluzioni diverse
([ms] il funding, [us] al.get, [s] il log) dava funding 0,000%/anno su SKH01 e
+1,229%/GIORNO su TP01. Nessuna eccezione, nessun NaN: due numeri plausibili in due punti
diversi. E' la stessa famiglia codificata in CLAUDE.md il 01/07 (DatetimeIndex.view("int64")
su indici tz-aware non-ns → look-ahead che causality_ok non vede). Ora c'e' un controllo che
confronta searchsorted con un groupby di pandas e verifica di avere potenza.
⚠️ Secondo errore corretto in sessione: contava diff(pos) < 0 come vendite — su un perpetuale
lineare il nozionale scende da solo quando scende il mark.
Smentitore principale dichiarato: sul pre-2022 l'agente usa l'inverse come proxy e i due strumenti correlano solo 0,27-0,40 orario → se il funding dei lineari nel 2019-2021 fosse stato molto piu' basso, il −2,16% scenderebbe verso il −1,39% della finestra pulita.
VERDETTO: LEAD (misura di politica, non strategia).
IL FUNDING COSTA 2,16%/ANNO NETTO AL LIBRO — quanto la fortuna d'ancora ×0,89 che il progetto ha
misurato con enorme cura, e sposta i muri di capitale del +17,5%.
36 — PIANO-VERO (la tabella congiunta) — la risposta alla domanda del progetto
scripts/research/r0822d_piano_vero.py (145 s). Nessuna selezione → niente DSR. Muri a 4.000
path (la taglia dei pubblicati), traiettorie a 3.000; risoluzione MC misurata su 3 semi: 0,7% sul
muro, 1,5 €/m sul versamento — dichiarata.
Il buco: le due correzioni misurate al piano — fisco d'accumulo (07/08) e funding (22/08) — erano state applicate separatamente allo stesso numero lordo, e la tabella con entrambe non esisteva. L'agente ha dichiarato prima di misurare di aspettarsi un congiunto meno severo della somma (meno drift → meno plusvalenza → meno imposta).
✅ Replica 6/6 prima di pubblicare, due esatte AL DOLLARO: sul vintage 2026-08-07 lo stesso
codice rida' $272.061 (lordo) e $258.338 (netto fisco); riproduce anche funding
−2,1597/−1,3931/−0,5508 %/anno, perpetua 10,73→9,14%, muro +17,5%, traiettoria 16,4a/90% → 18,7a/64%.
⚠️ Sulla serie di OGGI la stessa riga da' $278.033 (+2,2%) — 15 giorni di dati in piu', data/raw/
gitignored: stessa lezione GTAA del 07/08 → ogni confronto fra lenti e' fatto sullo stesso
vintage.
| lente (de-luck ×0,89) | drift | perpetua | muro | €250/m da $635: P(20a) |
|---|---|---|---|---|
| L0 LORDO (26/07) | 17,11% | 10,68% | $278k | 90% (pubbl. 92%) |
| L1 +FISCO (07/08) | 17,11% | 7,52% | $264k | 49% (pubbl. 52%) |
| L2 +FUNDING (22/08) | 15,19% | 9,06% | $328k | 63% (pubbl. 64%) |
| 🚨 L3 CONGIUNTA | 15,19% | 6,35% | $313k | 14% ← il numero che mancava |
| L3b congiunta, funding "strumento vero" −1,39%/a | 15,87% | 6,72% | $296k | 26% |
🚨 LE DUE CORREZIONI NON SI COMPENSANO: SI SOMMANO — e nel versamento necessario il congiunto e' +10% PEGGIORE della loro somma. 📌 L'attesa dell'agente era sbagliata dove conta, e il perche' e' il risultato trasferibile: il meccanismo "meno drift → meno imposta" esiste (+9,97% di capitale recuperato; il fisco toglie il 50,9% a funding OFF e il 46,0% a funding ON), ma la funzione versamento→probabilita' e' CONVESSA e ne ribalta il segno. Interazione misurata in tre monete: +9,97% sul capitale, −$815 sul muro (0,26%, sotto la risoluzione MC), +26 €/mese sul versamento (+10%, segno stabile su 3 semi: +26/+29/+22). REGOLA: non contare su una compensazione fra correzioni misurate separatamente — la si misura, e in piu' di una MONETA, perche' un'interazione piccola cambia segno con la moneta.
Quanto versare (L3, da $635, nessun lump):
| orizzonte | P=50% | P=75% | P=90% | totale versato @P=90% | quota del bersaglio |
|---|---|---|---|---|---|
| 10 anni | €1.323 | €1.534 | €1.733 | $229.189 | 73% |
| 15 anni | €656 | €784 | €920 | $183.129 | 58% |
| 20 anni | €360 | €445 | €541 | $143.804 | 46% |
| Il solo funding aggiunge 1,27× / 1,33× / 1,40× sopra la richiesta della lente fisco-only. |
Rendita €/g mediana a 20 anni (L3): €250/m → 31,85 €/g, P(≥50/g) 8,8% · €500/m → 63,05, P 77,1% · €800/m → 100,50, P 99,2%. 📌 Il LUMP, che nelle tabelle nette non era mai entrato: €10.000 oggi + €250/m porta P(20a) da 14% a 45%; €5.000 la porta a 30%.
Trappole evitate per costruzione (tutte gia' pagate da questo progetto): non-arrivo = +∞, mai −1; mediana condizionata mai stampata senza la sua P accanto; risoluzione MC misurata e dichiarata. Rischio di venue NON incluso di proposito: e' rovina, non costo (a p=5% il mediano e' zero comunque) — dichiarato.
VERDETTO: LEAD (misura di politica).
CON TUTTE LE CORREZIONI, €250/MESE DA $635: 23,4 anni (mediana incondizionata;
22,1 condizionata all'arrivo), P(20a) 14% [banda funding "strumento vero": 22,2 anni, P 26%]
PER €50/GIORNO IN 10 ANNI SERVONO: €1.733/mese (P=90%), totale versato $229.189
📌 A 10 anni si versano $229k per arrivare a ~$313k: il rendimento fa il 27%, i bonifici il 73%. E' la forma piu' netta finora della lezione gia' scritta: a orizzonte corto non fai lavorare la strategia, COMPRI il capitale coi bonifici.
37 — GATE-C (l'ultima gamba del gate funded, e il biglietto riprezzato)
scripts/research/r0822d_gate_c.py (356 s, nessuna rete). 1.347 celle, zero di selezione
(pesi, meccanismo, lente, de-luck e soglie tutti ereditati e congelati) → niente DSR da calcolare.
Ridotto e dichiarato: 23 offset × 3 fasi (lo stesso sottocampione a priori di §32).
✅ Riproduzioni prima di ogni numero nuovo: §32 (4,4% [2,5-8,2%], P(zero) 35,3%) esatta; §35
(−2,16/−2,10/−2,32%) esatta; ladder contro pc.simulate bit-exact, max|diff| = 0,0 percorso
per percorso. ⚠️ r0725_hyro da' −11% rispetto al pubblicato ($6.018 contro $6.789) perche' il
file ri-deriva le serie dal feed corrente, +4 settimane — stessa lezione del vintage.
Il biglietto a due stadi (cella d'ancora mediana, non la canonica che sta al 91° pctl; funding dentro; lente accoppiata; 6.000 percorsi): P(pass) 35,5-52,5%, P(payout | pass) 72,3-89,2%, E[payout] 1 anno funded $1.016-2.194. EV del biglietto $100k in tre convenzioni: spesa persa $+1.615 · rimborso al pass $+1.919 · rimborso al primo payout (la regola vera) $+1.835. Positivo in tutte e tre. 📌 Ma la correzione economica che aveva motivato il filone vale +13,6% di EV e +0,60pp su P(≥50/g): reale, misurata, e NON cambia nessuna decisione.
🚨 Il funding costa anche qui, appaiato cella per cella (69 celle): dJ −0,0491 (69/69 negative), dP(≥50/g) −1,60pp (66/69) → P(≥50 €/g) 2,6% [1,5%, 4,7%], P(zero) 40,3%. Catena completa del ridimensionamento in una giornata: 42% → 7,8% → 4,4% → 2,6%.
🚨 XS01 PAGA il funding, non lo incassa — e il meccanismo e' DIMOSTRATO, non congetturato:
max|ΣW| = 2,8e-17 (dollar-neutral esatto) ⇒ il livello del funding non entra, entra solo la
dispersione cross-sezionale; e il momentum cross-sezionale compra i perp col funding piu' caro e
vende quelli col piu' basso → +1,45%/anno (IC95 [+1,18, +1,72]; banda onesta [+0,69, +1,45] se
HL e' ~2,1× il venue eseguibile). L'ipotesi opposta era nel mio briefing.
📌 Il progetto conteneva GIA' due modelli contraddittori della quota: r0725_hyro:200 la rimborsa
al PASS (ottimista), pc.simulate non la rimborsa mai (pessimista) — e il numero operativo
usciva dal secondo. Le due convenzioni sbagliate distano $84 = prezzo × (P(pass) − P(payout)).
📌 Piu' leva sul funded ALZA E[payout] e ABBASSA P(payout): chi vuole il rimborso non vuole la leva
massima. Sono due obiettivi diversi.
⚠️ Un numero netto catturato PRIMA di pubblicarlo: il "capitale d'incrocio €1.000-2.000" NON e'
un meccanismo. La ricchezza terminale della strada-biglietto e' bimodale, e
P(cassa finale < $249) si muove liscia (56,3 → 50,8 → 28,3 → 16,9 → 3,9 → 0,0%) mentre la
mediana salta di un ordine di grandezza appena quella massa passa il 50%. La mediana non e' una
statistica robusta qui — ed e' esattamente il tipo di numero netto che si sarebbe finito per citare
come soglia di progetto.
IL CONFRONTO CHE DECIDE (36 mesi, $654 iniziali, stesso bootstrap appaiato, funding in entrambe le strade, fisco 33%):
| versamento | strada | mediana | media | P(<versato) | P(≥50/g) |
|---|---|---|---|---|---|
| €0 | BIGLIETTO | $132 | $9.592 | 58,3% | 4,2% |
| €0 | LIBRO | $787 | $803 | 11,8% | 0,0% |
| €500/m | BIGLIETTO | $39.820 | $46.298 | 21,8% | 13,7% |
| €500/m | LIBRO | $22.444 | $22.694 | 15,7% | 0,0% |
GATE PROP-01 GAMBA (c) RIFORMULATA: PASS 2/2 — due condizioni CONGIUNTE, entrambe verificabili
OGGI, nessuna data d'attesa.
(c1) ECONOMICA — EV del biglietto > 0 con la quota trattata come SPESA PERSA, alla cella
d'ancora mediana, col funding dentro, sotto lente accoppiata. Oggi: $+1.615 → PASS.
(c2) DI SOPRAVVIVENZA — prezzo del biglietto ≤ 2 versamenti mensili del piano in corso,
perche' il piano d'accumulo e' la leva dominante misurata e zero e' assorbente. Oggi (piano
€500/mese): $579 contro $1.090 → PASS.
📌 La FORMA del gate e' imposta dal costo della misura: l'EV costa una corsa di script (zero
dollari), la rimborsabilita' costa $579 e si puo' misurare solo comprando → un gate d'attesa su
quella sarebbe superabile solo dopo averlo violato. Percio' (c1) e' scritta perche' la
rimborsabilita' NON decida, e il rimborso diventa un regalo invece di un'ipotesi su cui si e'
scommesso.
IL BIGLIETTO CONTRO IL VERSARE: MEGLIO — ma solo perche' il piano di versamento c'e', e la ragione non e' il rendimento, e' il NUMERO DI VOLTE CHE SI PUO' GIOCARE. Senza versamenti la stessa
scommessa perde la mediana 6× ($132 contro $787) e vince la media 12×: e' una lotteria a valore
atteso positivo che un conto da $654 puo' permettersi di giocare una volta sola.
⚠️ E il vantaggio poggia interamente sul drift di XS01 misurato su 13 gambe su 19.
Smentitore che azzera tutto senza che il modello lo segnali: una morte-firm ≫10%/anno.
38 — SCALE-SPEC (la chiave di scala che non esiste, specificata)
docs/research/SPEC-scale-key.md (38 KB) + scripts/research/r0822e_scale_proto.py (1,0 s, zero
rete, zero scritture). ~630 valutazioni, nessuna cella scelta → niente DSR.
✅ Produzione non toccata (git status vuoto su src/, config/, scripts/live/, tests/), e
la sez. 0 del prototipo verifica l'isolamento a runtime — ed e' fallita su se stessa alla prima
stesura, che e' il modo giusto per un controllo di scoprire che funziona.
✅ Replica a k=1,00 superata 6/6 contro WORST-DAY (peggior giorno −3,95% il 2020-03-13, bound
strutturale −14,32%, morso del clamp 3/5.648 contro 3/5.650, drift e vol al centesimo).
| k=1,00 | k=1,25 | |
|---|---|---|
| Sharpe FULL | 1,5051 | 1,5051 (invariante) |
| drift / vol | 17,11% / 11,37% | 21,39% / 14,21% |
| g(k) esatto (CAGR geom.) | 17,90% | 22,61% |
| maxDD storico | −12,17% | −15,01% |
| peggior giorno possibile | −14,32% | −17,90% |
| costo di un disaster-SL | 30,0% | 37,5% ← la guardia che morde |
| margine di liquidazione | 15,8x | 10,1x |
⚠️ CORREZIONE A UN NUMERO CHE AVEVO SCRITTO IO (nel briefing e in CLAUDE.md): "il gradino 1,00x→1,25-1,50x vale 14,7 → 11,6 anni, ~€300/mese" fondeva due gradini. §2 da' 1,25x → 12,9a e 1,50x → 11,6a; il ~€300/mese e' del 1,50x. Ricalcolato sulla tabella netta: 1,25x = +€164/mese equivalenti (l'interpolazione riproduce €282 per 1,50x = controllo superato).
Tre risultati che il mandato non prevedeva:
- 🚨
test_leva_massima_da_config_resta_sotto_o_uguale_a_1xNON si rompe — ed e' PEGGIO che rompersi. Misurafrac · n_assetmentre la grandezza vera diventerebbefrac · 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" (dopofee_watchsugli inverse, la taratura divenue_watchcon bitfinex, i test dibook_livesenza potenza a libro flat). Va cancellato con nota, non aggiustato. - 🚨 La guardia che morde per prima e' il DISASTER-SL, non il peggior giorno: dal bound
strutturale k ≤ 3,49x, dal 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. - 🚨 Il tetto va sul PRODOTTO, non sulla chiave:
frac=0,625+scala=1,25fa leva 1,562x e passerebbe un tetto "scala ≤ 1,25". Ed e' concreto: WORST-DAY ha appena pubblicato che alzarefracda solo "non produce k=1,25" — combinato con la scala lo produce eccome.
Gate proposto GATE SCALA-01 — 9 condizioni, fra cui A2 (180 giorni sul gradino precedente),
A5 (tetto sul prodotto), A6 anti-recency (k_ammesso calcolato togliendo gli ultimi 90
giorni dev'essere ≥ k richiesto) e A9 (11 test verdi), piu' un sorvegliante giornaliero a tre
stati. Nasce dal fatto misurato che la scala e' invisibile a tutti i gate esistenti: Sharpe
1,5051 identico a tutte e 5 le celle di k → deflated_sharpe e marginal_vs_tp01 non
falliscono, non vedono la variabile. ✅ weights_tilt_null invece passa e con potenza: peso
implicito TP01 0,750000 a ogni k, max|target(k) − k·target(1)| = 0,00e+00, e il controllo
positivo (scala sulla sola gamba TP01 = cio' che farebbe target_vol) lo porta a 0,789 e viene
smascherato.
VERDETTO: LEAD (specifica di processo).
LA CHIAVE DI SCALA: SPECIFICATA MA CON UN NODO IRRISOLTO — execution.py:196-223 ri-ancora
il disaster-SL al mark a ogni giro (tolleranza 5%): il −30% e' ROTOLANTE, non un pavimento.
Se e' cosi', il 37,5% e' il costo di un episodio e un ribasso lento ne produce piu' d'uno, e
il margine 1,33x del gradino non e' quello vero. ⚠️ Letto nel codice, NON misurato — e il log non
lo permette (servirebbe pos_prima): non ricostruibile a posteriori.
Secondo smentitore, con soglia dichiarata: il ramo di fallback dell'equity oggi scatta
0 volte su 1.442 giri; se superasse il 2% dei giri in 90 giorni il libro girerebbe a leva
mista e g(k) smetterebbe di descriverlo.
39 — FUNDING-AVOID (evitare il funding: datati e spot)
scripts/research/r0822e_funding_avoid.py (1.141 righe, ~45-56 s). 48 + 138 valutazioni, nessuna
selezione (segnale e pesi congelati) → niente DSR. ✅ Replica: −2,161%/anno riprodotto e
protetto da assert prima di ogni delta; muri A/F identici ai pubblicati.
L'unico filone della giornata che poteva RESTITUIRE drift.
| variante | ShFULL | ShHOLD | drift | Δdrift | muro |
|---|---|---|---|---|---|
| A) perp (oggi) | 1,513 | 1,154 | 17,08% | — | $325,0k |
| B) tutto sui datati | 1,495 | 1,129 | 17,43% | +0,35% | — |
| 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 |
📌 La tesi condizionale REGGE ma non basta. Funding condizionale 1,94×/2,59× l'incondizionato (✅ replica indipendente del 1,86-2,55× di ieri), basis solo 1,47×/1,66×: in livello i due carry sono identici (~6,4-7,4%), il datato vince solo perche' si riprezza meno. Ma il vantaggio e' tutto 2019-2023 e vale ~0 o e' avverso dal 2024 → ShHOLD −0,034, negativo a 0/23 offset, e il gate iso-volatilita' FALLISCE (1,507 contro 1,513).
🚨 L'ESTIMATORE ARITMETICO INVENTA META' DELL'EFFETTO. La media delle differenze di rendimento fra
due strumenti sullo stesso sottostante contiene (var A − var B)/2: qui vale 1,48% (BTC) / 2,60%
(ETH) l'anno, cioe' 2-4× l'effetto cercato. Controllo che lo rende visibile: il perpetual
"sovra-rende" l'indice di +0,4/+0,5%/anno con l'aritmetico e ~0 col log. REGOLA: il carry si
misura sul LOG del rapporto dei prezzi — stessa forma della regola UCITS del 26/07 ("la deviazione
fra due veicoli sullo stesso indice si misura sul rapporto cumulato, mai sulla media delle
differenze"), ripassata in veste nuova.
⚠️ Bug catturato in sessione, stessa famiglia di quello di ieri sera, e NON visto dal numero:
fund_*.parquet etichetta l'indice all'istante T, al.get(a,'1h') etichetta 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 — che era plausibile e nel verso
che l'agente si aspettava. Riparato con controllo positivo che fallisce se lo si sbaglia; il pezzo
vero vale +0,07%/anno.
📌 Il cambio si giudica per SLEEVE: SKH01 sui datati peggiora — turnover 48-57×/anno contro 6,6-8,4× di TP01, quindi lo stesso mezzo spread gli costa 7 volte tanto, e paga anche piu' carry. Il netting TP01/SKH01 vale 1-2%: separarli non e' un argomento contro.
🚨 IL SOTTOPRODOTTO: 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, muro −10,9%, e supera il gate iso-vol.
⚠️ NON e' un candidato, per tre ragioni dichiarate: (a) SKH01 non e' esprimibile sullo spot
(e' 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% fanno ~1,25%/anno, cioe' piu' di quello che lo spot porta.
VERDETTO: ESPRIMERE IL LIBRO SUI DATATI: COSTA 1,69%/ANNO CONTRO 2,16% DEL PERP → NON CONVIENE
(i 0,47 punti risparmiati si pagano con −0,034 di ShHOLD, negativo a 0/23 offset, e il gate iso-vol
fallisce). SCARTATO sui datati, LEAD sullo spot per la sola gamba TP01 — subordinato alla
domanda fiscale, che va posta al commercialista prima di qualunque prova.
40 — SL-ANCHOR (il nodo del disaster-SL, sciolto)
scripts/research/r0823_sl_anchor.py (2,0 s, sola lettura). 42 celle, nessuna riduzione per
budget. ✅ Sola lettura provata: git status mostra solo questo file; il ramo venue fa 2 sole
get_open_orders e si astiene nei minuti :05-:10 e :24-:30.
🚨 La dichiarazione di non-misurabilita' della SPEC era FALSA: il log bastava. Ieri notte
SPEC-scale-key.md scriveva "letto nel codice, NON misurato — il log non lo permette (servirebbe
pos_prima): non ricostruibile a posteriori". Terza conferma della regola del 26/07: un blocco
dichiarato e' un'IPOTESI, non un fatto.
📌 L'agente ha scritto l'attesa PRIMA di guardare, derivandola dal codice — e ha predetto le soglie
esatte: rotolante e simmetrico, con innesco a +5,263% (salita) / −4,762% (discesa),
perche' il fattore 0,70 si semplifica e la condizione |stp−want|/want ≥ 0,05 diventa una condizione
sul mark, non sullo stop.
Misura sul log di produzione (1443 giri, 60,1 giorni, 2840 righe-asset): i 15 placed si
scompongono in 5 prime aperture + 7 ribilanci + 3 A POSIZIONE FERMA. Le tre — 21/08 00:07 BTC,
06:07 ETH, 22:07 BTC — hanno azione HOLD (a target), 0 ordini, e trigger spostato: salti
+5,74% / +5,81% / +5,38%, tutti appena sopra il +5,263% predetto.
Conferma dal venue: la posizione BTC e' aperta dal 19/08 15:07, l'ordine di stop sul book e'
stato creato il 22/08 01:07 → l'ordine e' 2,5 giorni piu' giovane della posizione che protegge.
🚨 MA LA CONSEGUENZA CHE BLOCCAVA IL GRADINO E' REFUTATA, e va nel verso OPPOSTO al timore: uno
stop che segue il prezzo si allontana dal mercato, quindi scatta meno. Episodi su storia reale
(caso peggiore: sempre long, rientro immediato): a 1h — la cadenza che gira — BTC roll 0
contro floor 1; ETH roll 1 contro 1; mai piu' di 1 in 30 giorni. Caduta massima storica
dentro un giro: BTC 1h −23,17%, ETH −30,35%, contro i ~26,5-30% che servirebbero.
📌 E nell'outage — l'unico scenario per cui il bracket esiste — il ri-ancoraggio e' SPENTO per
costruzione: nessun giro di cron, nessun ri-piazzamento ⇒ un episodio solo.
⇒ Il 37,5% resta il costo di un episodio singolo, il margine 1,33× di WORST-DAY e' quello vero, e la
sua gamba REGGE.
Due cose da registrare, entrambe INDIPENDENTI da k:
- ⚠️ 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% (24h) / 0,96-2,84% (7g) / 7,22-13,33% (30g) dei cicli, e il peggior DD dall'ingresso e' −60,6% BTC / −61,5% ETH contro −38,3%/−45,4% del pavimento.
- 🚨 L'accumulo e' funzione della CADENZA DEL CRON, non della leva — e c'e' una trappola viva in
produzione: il docstring di
book_execute.pyprescrive "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 (roll2 contro 1). A 24h ETH arriva a 5, con 2 in 30 giorni.
⚠️ Trappola n.10 del brief catturata in sessione: la colonna "perdita dall'ingresso" della prima
stesura era un artefatto (posizione aperta dal 2018 ⇒ era il DD di un buy&hold pluriennale) →
dichiarata e rifatta con cicli a ingresso proprio. E una prima versione della simulazione e' stata
scartata perche' il rientro avveniva fuori dal giro di cron (irrealistico).
✅ Controllo positivo superato (obbligatorio): lo stesso esercizio applicato a un'implementazione
a pavimento risponde ok → l'esercizio distingue le due implementazioni, non passa e basta.
✅ Guardia anti-rete superata: la sottoclasse che esercita il vero ensure_disaster_sl ha _post
che solleva, e l'esercizio e' riuscito ⇒ nessuna chiamata di rete e' partita da quel percorso.
⚠️ Limite dichiarato: 0 ri-ancoraggi verso il BASSO osservati su 3 — i 2 mesi di vita del libro
sono un solo regime (BTC da ~$66,5k a ~$78,6k) e non c'e' mai stato 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.
📌 Nota di metodo: la storia degli ordini non e' raggiungibile dal percorso del conto — il
gateway cerbero-mcp espone 32 tool Deribit e nessuno e' get_order_history_by_currency. Le
chiavi dirette appartengono a un altro progetto e non sono state usate: sarebbe stato inventare un
percorso, e la domanda non ne aveva bisogno.
VERDETTO: IL DISASTER-SL E' ROTOLANTE (costo vero 37,5% contro 37,5% — un episodio solo alla cadenza di produzione; sale a ~75% solo con cron a 24h, che non e' la configurazione che gira).
— NOTIFIER (audit di fatto, coordinatore) — l'allarme puo' non arrivare, e nessuno lo sa
Non e' un filone di ricerca: e' un difetto di produzione trovato leggendo i log mentre l'ondata 7 girava. Nessun file di produzione toccato.
Come e' venuto fuori. Il giro cron_daily di stanotte finisce con
NON inviato (config Telegram assente o rete KO). La nota conflaziona due cause; la prima e'
falsa — TELEGRAM_BOT_TOKEN e TELEGRAM_CHAT_ID sono presenti in .env, e
src/live/notifier._cfg() lo legge (verificato). Quindi la causa e' la rete, e il messaggio manda
a controllare la configurazione. E' la stessa forma del difetto codificato il 29/07 sul
venue_watch ("una nota di diagnosi cablata e' peggio di nessuna nota"), su un percorso diverso.
Il difetto vero, che e' piu' grande della nota. src/live/notifier.send():
urllib.request.urlopen(url, data, timeout=10) # UN tentativo
except Exception: return False # esito ingoiato
- nessun retry — un singolo blip di rete perde il messaggio;
- l'esito non viene registrato da nessuna parte:
notify()ritornaboolescripts/live/venue_watch.py:80non lo guarda;logs/cron_book.logcontiene 0 occorrenze di un qualsiasi esito d'invio (verificato con grep). Quando serve sapere se l'allarme e' arrivato, l'informazione non e' stata scritta. - 🚨 e lo stato viene marcato PRIMA dell'invio. In
src/live/venue_watch.lock_step/streak la riganew.alerted = Truesta dentro la logica pura, e viene persistita comunque; alle ore successivealready = st.alerted and st.sign == signfa tornare"WATCH"invece di"ALERT"→notifynon viene piu' chiamata per quell'episodio. Un 🚨 perso e' perso per l'episodio intero, e gli episodi storici (Mt.Gox, FTX, Bitfinex 2018-19) durano da 200 a 2.324 ore con segno costante: e' esattamente il caso in cui la ri-notifica non arriva mai.
Quanto vale, misurato. Sullo stesso send(), il digest giornaliero ha tentato 29 invii e
ne ha falliti 2 → 6,9%, IC95 Wilson [1,9%, 22,0%].
⚠️ Fonte del numero, dichiarata: e' il percorso del digest (messaggio lungo, una volta al
giorno), usato come proxy del percorso d'allarme (messaggio corto, orario) — che non ha
nessun dato proprio, ed e' questo il punto. Stessi endpoint, stesso timeout, stessa funzione.
Perche' conta piu' del suo numero. L'economia del venue_watch (26/07) e' calcolata assumendo
che il vero positivo arrivi: costo atteso di un falso allarme 0,248% di equity contro il
100% che un vero positivo evita, break-even p > 0,031%. Una perdita del ~7% degli allarmi
non ribalta quel conto — ma sorveglia l'unico rischio che il progetto ha prezzato come capace di
portare il conto a zero (P(perso tutto) 10/18/34/64% a p=0,5/1/2/5%), e la sorveglianza e'
l'unica mitigazione rimasta dopo la decisione del 26/07 di stare 100% su Deribit fino a $20k.
Su una perdita totale, un allarme su quattordici che non arriva non e' un arrotondamento.
Cosa NON e' stato fatto, e perche'. Nessuna riparazione: src/live/notifier.py e
scripts/live/venue_watch.py sono produzione, il cron esegue dalla working tree, e un ramo di
ricerca non manda codice live. La riparazione e' piccola e ha tre pezzi indipendenti — (a) retry
con backoff su send(); (b) registrare l'esito nel punto in cui l'eccezione viene ingoiata
(la regola del 29/07, mai applicata al notifier); (c) marcare alerted=True solo a invio
riuscito, cosi' che un allarme non consegnato si ripresenti l'ora dopo. Il pezzo (c) e'
quello che cambia il comportamento e va deciso dall'operatore: rende l'allarme ripetitivo finche'
non passa, che e' il verso giusto per un 🚨 e il verso sbagliato per un ⚠️.
⚠️ Cio' che questo audit NON dice: che il venue_watch non funzioni. Il rilevatore e' tarato,
validato su un controllo positivo (22 episodi Bitfinex) e ha 1 solo falso allarme in 8 anni. Il
difetto e' a valle del rilevatore, nel trasporto — la parte che nessuno aveva guardato perche'
non produce numeri.
VERDETTO: LA RETE DI SICUREZZA HA UN TRASPORTO SENZA RETRY, SENZA REGISTRO E CON LO STATO MARCATO PRIMA DELL'INVIO — ~7% DEGLI ALLARMI PUO' NON ARRIVARE, PER L'EPISODIO INTERO
42 — TP01-LS (la gamba short del trend a 1d)
scripts/research/r0823_tp01_ls.py (4,4 s). 4 trial dichiarati (floor ∈ {0, −1/3, −2/3, −1}
sul solo TF di deploy); le 24 ancore non sono trial e sono giudicate con anchor_luck_band /
anchor_luck_delta. Nessun file di produzione toccato.
Meccanismo congelato, UN grado di liberta'. TrendPortfolio di produzione importata e
sottoclassata: l'unica riga diversa e' np.clip(direction, floor, None) al posto di
np.clip(direction, 0, None). net_returns (shift causale + fee) ereditata.
✅ Replica bit-exact a 4 vie, max|diff| = 0.0: floor=0 == CANONICAL(long_only=True);
floor=−1 == CANONICAL(long_only=False) — cioe' la riga nuova coincide con la produzione a
entrambi gli estremi, e il codice davvero nuovo sono i soli due floor intermedi; sleeve 50/50 ==
sleeves._tp01_returns(); candidate_daily(floor=0) == tp01_baseline_daily().
✅ Controlli positivi 4/4, fra cui il piu' importante: gate iso-vol puntato sulla leva pura
(canonico ×1,3) → dCAGR grezzo +5,05% che diventa +0,000000 iso-vol — il gate riconosce la
leva travestita.
Attesa a priori del coordinatore, dichiarata prima di misurare: "il guadagno sara' un anno solo, il 2022". Confermata e superata.
| floor | ShFULL | ShHOLD | CAGR | drift | vol | maxDD | turn/a |
|---|---|---|---|---|---|---|---|
| 0 (canonico LF) | 1,305 | 0,441 | 16,32% | 15,12% | 12,14% | 14,31% | 7,99 |
| −1/3 | 1,199 | 0,674 | 15,53% | 14,44% | 12,71% | 16,49% | 10,61 |
| −2/3 | 1,030 | 0,546 | 13,99% | 13,09% | 13,61% | 18,12% | 12,75 |
| −1 (LS pieno) | 0,855 | 0,433 | 12,37% | 11,66% | 14,94% | 20,61% | 15,02 |
Drift: NO, monotono decrescente. Gate iso-vol: FAIL 3/3 (k = 0,955/0,892/0,813 → dCAGR −1,49% / −3,83% / −6,19%). Non e' leva travestita, e' peggio: alza la vol e abbassa il ritorno.
Banda d'ancora (24 ore, mediana delle differenze APPAIATE):
| floor | dShFULL | dShHOLD | dDRIFT | dMAXDD |
|---|---|---|---|---|
| −1/3 | −0,114 [−0,149,−0,076] 0/24 | +0,219 24/24 | −0,78% 0/24 | +3,33pp 24/24 |
| −2/3 | −0,224 0/24 | +0,258 24/24 | −1,29% 0/24 | +5,12pp 24/24 |
| −1 | −0,354 [−0,450,−0,251] 0/24 | +0,292 23/24 | −1,91% 0/24 | +8,80pp 24/24 |
📌 Il 2022, e la risposta e' piu' netta dell'attesa. dSharpe per anno a floor=−1: 2019 −0,10 · 2020 −0,85 · 2021 −0,07 · 2022 +1,84 · 2023 −1,01 · 2024 −0,61 · 2025 +0,27 · 2026 −0,68 → 2/8 anni positivi. Senza il 2022 il divario RADDOPPIA (dShFULL −0,406 in 0/24, dDRIFT −3,71%, iso-vol dCAGR −7,44%). Il 2022 non e' l'anno che regge la tesi: e' l'unico che la tiene a galla a meta' — nemmeno con lui dentro la short arriva in pari.
Marginale NEUTRAL 3/3 (corr→TP01 0,93/0,87/0,79, alpha −0,21 / −1,40 / −2,60%/anno,
multicut_persistent=False, robust_oos=False). Diagnostica: e' un hedge debole
(corr(Sharpe-TP01 annuo, uplift) −0,83…−0,87), non alpha.
📌 Il gate che chiude la faccenda: selection-on-holdout. Sharpe in-sample (<2025) 1,488 /
1,322 / 1,151 / 0,972 → la cella scelta al buio da select_cell_insample e' il canonico;
quella scelta sull'hold-out e' floor=−1/3. Il guadagno hold-out non e' selezionabile.
⚠️ L'unica cosa che va nel verso della short, riportata per intero: dShHOLD +0,292 in 23/24 ancore — ma all'ancora canonica vale −0,008 (p10 +0,094, p90 +0,541). E' il caso speculare della lezione del 26/07: li' l'ancora canonica inventava un danno, qui ne nasconde un vantaggio. Resta un hold-out di 1,6 anni, non selezionabile, con multicut negativo in 6 anni su 7.
Protezione — la short erode proprio cio' per cui TP01 esiste. Criterio (B) di edge_watch
(DD sleeve < 75% del DD buy&hold negli anni di sinistro): canonico 0/8 violazioni,
floor=−1 viola 1/8 (2023, 0,80); maxDD full 14,31% → 20,61%.
E non e' morte-per-fee: a fee ZERO 1,338 contro 0,904. L'edge lordo non c'e'; il turnover raddoppiato e' un'aggravante, non la causa.
Libro 75/25: ShFULL 1,814 → 1,347, maxDD 9,42% → 14,44%, banda dSh −0,356 in 0/24. Ridondanza con SKH01: no, e non aiuta — la gamba short isolata ha corr +0,10 con SKH01 ma Sharpe −0,335: non e' ridondante, e' perdente.
Eseguibilita' a $635: haircut ±0,002 (5ª volta nell'ondata che l'eseguibilita' non e' il
vincolo). 📌 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.
DSR 0,997/0,988/0,962 con sr0 nullo 0,208 su N=4 — e non e' il gate che decide: con 4 celle quasi identiche sr0 e' piccolo per costruzione (è la lezione §10 del 22/08 vista dal lato buono).
⚠️ Errori catturati dall'agente su se stesso: (i) il trial set del DSR era costruito a mano
invece che preso da select_cell_insample — due percorsi per lo stesso numero e' esattamente cio'
che il gate codificato evita; ora sono confrontati e coincidono; (ii) un :+.2f su una frazione
stampava +0,09pp invece di +8,80pp.
Cosa NON e' misurato, dichiarato: il funding (nessun backtest del progetto lo modella, §35)
— e' l'unica voce che potrebbe spingere verso la short, ma l'agente ne da' un argomento, non una
misura (ordine ~1-2%/anno contro 1,91% di drift perso): si chiude con r0822d_funding.py.
Inoltre: nessun TF diverso dal 1d (riaprirlo riapre la famiglia), banda del libro con SKH01 alla
sola ancora canonica, tutto close-only.
VERDETTO: LA SHORT DEL TREND A 1d NON PAGA IL PROPRIO COSTO SU NESSUN ASSE CHE DECIDE —
SCARTATO. Libro, pesi, cron, config INVARIATI.
41 — TP01-SIZE (una size che risponde alla convinzione)
scripts/research/r0823_tp01_size.py (8,4 s, nessuna rete). 60 celle dichiarate prima di
guardare (rho = g(1/3)/g(1), 10 valori × q = esponente del vol-targeting, 6 valori) × 24
ancore = 1.440 valutazioni di sleeve + 3 controlli positivi. Segnale CONGELATO (TSMOM 30/90/180,
long-flat): cambia solo la mappa convinzione → size.
✅ Replica bit-exact: target_series vs TrendPortfolio.target_series max|diff| = 0;
rendimenti vs sleeves._tp01_returns() max|diff| = 0 (n=2720).
⚠️ Sottoprodotto sull'harness: altlib.tp01_baseline_daily() NON e' bit-exact col sleeve —
1 ulp (1,11e-16) su 1863/2720 giorni (68,5%), perche' _to_daily fa
(1+r).resample("1D").prod()-1, che e' un no-op algebrico ma non in virgola mobile su una serie
gia' giornaliera. Innocuo, ma "bit-exact vs altlib" non e' un controllo ottenibile: chi lo pretende
insegue un fantasma.
🚨 CORREZIONE ALLA PREMESSA DEL MANDATO (mia), verificata al sorgente. Il briefing diceva che
la convinzione e' "spesso 1/3 o 2/3". Il bucket 2/3 e' aritmeticamente impossibile:
tsmom_blend media tre np.sign(...) → la direzione vive in {−1, −1/3, +1/3, +1}, e dopo il
clip long-flat in {0, 1/3, 1} (misurato BTC: 44,2% / 24,7% / 31,1%). ✅ Confermato da due
agenti indipendenti e ri-verificato dal coordinatore leggendo src/strategies/trend_portfolio.py.
Conseguenza: potenza c^p, floor affine e soglia sono la stessa cella riparametrizzata — la
famiglia della convinzione ha UN grado di liberta', non tre.
Attesa a priori dell'agente, scritta nel docstring prima di misurare: "il canonico e' gia' dentro il suo plateau; qualunque rimodellamento dara' un delta indistinguibile da zero a iso-vol… VERDETTO ATTESO: SCARTATO", col corollario che il null del de-levering sarebbe apparso in forma speculare (re-levering). Entrambi confermati.
| ShFULL | ShIS | ShHOLD | vol | CAGR grezzo | CAGR iso-vol | |
|---|---|---|---|---|---|---|
| canonico rho=1/3 q=1 | 1,305 | 1,488 | 0,441 | 12,14% | 16,32% | 16,32% |
| binario rho=1 q=1 | 1,265 | 1,398 | 0,674 | 15,30% | 19,95% | 15,87% (−0,45pp) |
| soglia rho=0 q=1 | 1,229 | 1,429 | 0,236 | 11,46% | 14,38% | 15,16% (−1,16pp) |
| niente vol-target q=0 | 1,166 | 1,298 | 0,479 | 39,65% | 46,75% | 13,92% (−2,40pp) |
| miglior cella iso-vol | 1,312 | 1,498 | 0,480 | 9,82% | 13,20% | 16,61% (+0,30pp) |
| cella scelta al buio | 1,306 | 1,508 | 0,382 | 9,26% | 12,38% | 16,48% (+0,16pp) |
Rango del canonico: 5/60 in-sample, 6/60 full, 41/60 hold-out.
📌 NULL DEL RE-LEVERING nella forma piu' pura mai misurata nel progetto (6ª occorrenza, prima
col segno rovesciato): togliere il vol-targeting porta il CAGR 16,32% → 46,75% (+186%) e a
iso-vol fa −2,40pp. Era tutta leva. Il gate e' esatto per costruzione (net omogeneo di
grado 1 → lo Sharpe e' invariante, verificato a 4,4e-16) quindi morde sul drift, non sullo
Sharpe; k calibrato in-sample per non introdurre look-ahead nella normalizzazione.
Banda d'ancora (24, mediana delle differenze APPAIATE):
| cella | dShFULL | >0 | dShHOLD | >0 | dCAGRiso | >0 |
|---|---|---|---|---|---|---|
| scelta al buio 0,25/1,25 | +0,0074 | 17/24 | −0,0580 | 0/24 | +0,242pp | 22/24 |
| de-luckata 0,15/1,25 | +0,0002 | 12/24 | −0,1108 | 0/24 | +0,090pp | 16/24 |
| binario 1,00/1,00 | −0,0932 | 2/24 | +0,2429 | 24/24 | −1,029pp | 3/24 |
⚠️ Le due selezioni oneste non coincidono (ancora 0 → rho=0,25; mediana su 24 ancore → rho=0,15): la superficie e' piatta. ✅ Replica indipendente, su dati odierni, del finding d'ancora del 02/07: hold-out canonico +0,441 = 96° pctl delle 24, mediana onesta +0,219, banda [+0,014, +0,441]; FULL canonico al 29° pctl.
Per anno (mediana appaiata su 24 ancore): 2019 +0,006 · 2020 +0,085 (24/24) · 2021 −0,077 (0/24) · 2022 −0,080 (0/24) · 2023 +0,020 · 2024 +0,057 (23/24) · 2025 −0,051 · 2026 −0,003 → 4/8 positivi = moneta: non "un anno solo", ma nemmeno persistenza.
Impatto sul LIBRO (canonico ShFULL 1,814 · ShHOLD 1,437 · CAGR 21,22% · maxDD 9,42%): la cella scelta fa dShFULL +0,0006 (12/24 = moneta), dShHOLD −0,0878 (0/24), dCAGR +0,188pp (22/24) e 📌 dmaxDD +0,493pp PEGGIORE a 24 ancore su 24 — e il valore dichiarato di TP01 e' il taglio del DD.
🚨 IL RISULTATO CHE DECIDE, e nessuno lo cercava: Spearman(ShIS, ShHOLD) = −0,527 (p<0,001)
sulle 60 celle — in questa famiglia scegliere in-sample e' PEGGIO DI UNA MONETA. Ed e' un
meccanismo misurato, non rumore: Spearman(rho, ShHOLD) = +1,000 a tutti e sei i q (in hold-out
l'ottimo e' al bordo rho≥1) mentre in-sample la curva e' a gobba con ottimo interno ~0,45-0,60.
La convinzione e' informativa in-sample e ANTI-informativa in hold-out — visibile anche nei
bucket (BTC hold-out: convinzione debole Sharpe +2,20 contro piena −0,06). Quindi l'unica
cella con guadagno hold-out robusto (binario rho=1, 24/24) e' esattamente quella che si potrebbe
scegliere solo guardando l'hold-out = il gate del 29/06. Non esiste una cella proponibile,
nemmeno diversa da quella scelta.
Gate e controlli. causality_ok True (max_tail_diff 0,0); select_cell_insample importato
sceglie la stessa cella (identita' verificata); deflated_sharpe 0,9990 PASS ma quasi vacuo
(famiglia omogenea, sd(Sharpe) 0,084 → sr0 0,197; FAIL a sr0 ≥0,9, 0,229 all'sr0 di screen
1,572) = terza conferma indipendente del §10; marginal_vs_tp01 REDUNDANT per costruzione
(giudica un'aggiunta, non la SOSTITUZIONE della size di uno sleeve gia' nel libro) → riportato, non
usato come gate. Controlli positivi 3/3: de-levering ×0,5 → dSharpe esattamente 0 e dCAGR
iso esattamente 0; oracolo look-ahead → Sharpe 10,97 con causality_ok=False; anti (rho=3)
→ −3,55pp. Eseguibilita' a $635: haircut 0,001 (8ª volta nell'ondata).
Cosa NON e' misurato: altri TF (il deploy e' a 1d, e sotto le 12h e' vietato dal 19/06); ancora
di SKH01 (si cancella nella differenza appaiata); una convinzione da un segnale diverso
(magnitudine invece di segno) — sarebbe un'altra famiglia, da dichiarare e deflazionare a parte;
weights_tilt_null non applicabile (il 75/25 non si muove).
VERDETTO: NON ESISTE UNA CELLA PROPONIBILE — E IL MOTIVO E' CHE IN QUESTA FAMIGLIA LA SELEZIONE IN-SAMPLE E' ANTI-CORRELATA COL FUTURO — SCARTATO. Libro, pesi, cron, config INVARIATI.
44 — DEPOSIT-TIMING (il timing dei bonifici)
scripts/research/r0823_deposit_timing.py (81 s, nessuna rete). 3.000 percorsi, block
bootstrap a 20 giorni, 25 anni, lente L3 CONGIUNTA (funding + fisco d'accumulo + ancora ×0,89),
bersaglio $313k. Risoluzione MC misurata su 3 semi: 1,13 pp sui LIVELLI, 1,97 pp sulle
differenze APPAIATE (i confronti girano sugli stessi percorsi) → si cita al punto percentuale.
✅ Replica 4/4 prima di ogni delta: muro $313.143 contro $313k; €250/m 23,4a / 14,4%;
€500/m 17,3a / 85,4%; e soprattutto P0 del motore nuovo vs PN.accumula: max|dif| = 0.0
sul capitale e 0 sul giorno d'arrivo; boot_idx bit-exact contro CC._boot_paths.
Attesa a priori, dichiarata prima di misurare: "non funziona, perche' entrare piu' tardi domina il comprare piu' in basso". Confermata — ma il meccanismo vale piu' del verdetto.
€500/mese, stesso flusso di cassa disponibile per tutte le politiche:
| politica | P(20a) | dP20 appaiato | attesa (g) | prezzo d'ingresso vs P0 |
|---|---|---|---|---|
| P0 piatto | 85,4% | — | 0 | 1,000 |
| P1 dip 5% | 84,0% | −1,4% | 95 | 1,009 |
| P1 dip 10% | 69,7% | −15,7% | 713 | 0,959 |
| P1 dip 15% | 27,7% | −57,7% | 2.254 | 0,718 |
| P1 dip 20% | 6,3% | −79,1% | 3.682 | 0,494 |
| P2 risk-off (TP01 a 0x) | 84,8% | −0,6% | 22 | 1,002 |
| P3 valore-medio g=0 / 8 / 15% | 48,2 / 83,5 / 85,3% | −37,2 / −1,9 / −0,1% | 2.489 / 789 / 32 | 0,220 / 0,560 / 0,997 |
| P4 anti-dip 5-20% | 85,4 → 84,7% | −0,0 → −0,7% | 1 → 16 | ~1,000 |
0/12 celle in OGNI lente (€500/m, €250/m, IID, drift dimezzato). Il migliore in assoluto vale −0,03% ed e' P4 anti-5%, che aspetta 1 giorno = P0 travestito. Niente da deflazionare: il conteggio dei trial non e' il vincolo, il segno e' negativo e monotono nella profondita' della condizione.
📌 IL MECCANISMO — il segnale FA quello che promette, e perde lo stesso. Dip 20% compra al 0,494 del livello medio del piatto, cioe' il 51% piu' in basso, e arriva nel 6,3% dei casi: 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. P4 anti-dip non da' lo stesso segno di taglia di P1 (−0,3% medio contro −38,5%) → non stiamo misurando rumore. Ma non e' simmetrico, e il perche' e' il risultato: 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 (convenzione dichiarata: al fallimento il libro va a zero,
la cassa sopravvive, si riparte). Il meccanismo esiste — tenere i soldi fuori riduce la penalita'
di +2,4 pp a p=1% e +3,8 pp a p=2% su dip 10% — ma contro una penalita' di timing di
−15,7 pp, ed e' un ordine di grandezza troppo piccolo. E P(libro azzerato) e' identica
per tutte le politiche (21,6% a p=1%): il conto salta comunque, cambia quanto c'e' sopra. La
protezione si compra con un secondo conto, non ritardando i bonifici — coerente col 27/07.
⚠️ Due errori catturati dall'agente su se stesso, entrambi da un controllo e non a occhio. (i) Il ritardo-gemello (stessa attesa media, deterministica, nessun segnale) dava "informazione" +11,5% a dip 15% sul mercato vero: leggendo solo quella riga avrebbe scritto che il buy-the-dip contiene previsione. Sotto IID, dove per costruzione non c'e' nulla da prevedere, la stessa colonna vale +14,9% — non piu' piccola, piu' grande → il divario e' meccanico, non previsione. (ii) Senza la colonna attesa avrebbe letto P4 come "stesso segno di P1 ⇒ rumore" (la regola del mandato): falso, P4 e' piatto perche' la sua condizione e' quasi sempre gia' vera. Lo specchio si legge sulla colonna dell'attesa, non su quella del segno.
Sensibilita': cassa al 2% invece che 0% riduce la penalita' di ~4 pp e non cambia segno; traguardo su solo-libro (severo) peggiora ancora le condizionali → la convenzione usata e' quella favorevole alle politiche condizionali, scelta apposta. Non misurato: politiche che cambiano il flusso disponibile (altra domanda, fuori dal controllo del libro); orizzonti diversi da 25 anni; e la finestra resta 7,4 anni con due tori.
📌 ORDINE DI GRANDEZZA, che e' come va usato il risultato: la migliore politica di timing vale −0,1 pp di P(20a), dentro il rumore MC di 2,0 pp; passare da €250 a €500 al mese vale +71 pp (14% → 85%).
VERDETTO: IL TIMING DEI BONIFICI NON PAGA IN NESSUNA LENTE — E IL SEGNALE FUNZIONA, E' LA CONDIZIONE RARA A COSTARE — SCARTATO. Chiude una domanda che l'operatore potrebbe altrimenti
riporsi ogni mese per vent'anni. Libro, pesi, cron, config INVARIATI.
43 — DATA-UNUSED (i dati che nessuno legge)
scripts/research/r0823_data_unused.py. Indice su 647 file .py in src/ scripts/ tests/
(Old/ escluso = archivio). "MAI LETTA" = zero occorrenze a confini di parola — misura
generosa verso "letta", quindi forte quando dice mai.
FASE 1 — l'inventario (e' il risultato principale, non un preambolo)
| dataset | righe | intervallo | letto da | colonne MAI LETTE |
|---|---|---|---|---|
btc/eth_{5m,15m,1h} |
70.335 (1h) | 2018-08→oggi | tutto il progetto | — |
hl_*_1d (51 alt) |
966 | 2024-01→oggi | 17 script | — |
hlfund_*_1h (19) |
26.739 | 2023-05→2026-06 | 9 (famiglia chiusa 4 lati) | — |
eq_*_1d (29 ETF) |
7.539 | 1996-08→oggi | 11 | — |
eqx_*_1d (12 UCITS) |
1.770 | 2019-05→2026-07 | 7 | — |
fut_*_1h (7 indici) |
15.070 | 2023-06→2026-06 | 4 | — |
fut_deribit/ + fund_* |
8.739 / 64.110 | 2018-09→oggi | 2 (entrambi del 22/08) | — |
dvol_* |
1.979 | 2021-03→oggi | 17 | — |
vol_term_* |
59 | 2026-06-26→oggi | 3 | iv_90d |
cb_chain/ |
1.232.212 | 2026-05-01→oggi | 14 | volume_24h (in 4 file, tutti collettori/certificatori, nessuno analitico) |
cb_market_snapshots |
17.406 | 2026-03-26→2026-07-30, morto | 3 | fetch_errors_json |
fundnews_short_screen |
19 | 2026-06-26 | 3 | — |
alt_sol_* |
38.898 | 2022-03→ | 2 (escluso dall'operatore 22/08) | — |
🚨 external/coinmetrics/cm_{btc,eth}.csv |
6.351 / 3.952 | 2009 / 2015→2026-05 | 1 | 🚨 26 colonne su 31 |
external/{fng,stables}.json, premium/ |
— | 2015-2018→ | 1 ciascuno | — (chiusi 24/07) |
options_daily/snapshots.jsonl |
60 snapshot | 30 giorni | 2 | letto solo per le specifiche, mai come serie |
instruments_registry.json |
— | — | NESSUNO | (reference, non segnale) |
📌 Il quadro: 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 eccezione.
⚠️ Due difetti dell'inventario stesso, corretti in sessione: la ricerca a sottostringa dava
iv in 571 file (e' dentro drive, receive); e le chiavi derivate dall'etichetta producevano due
falsi "NESSUNO" su eqx_ e fut_deribit/fund_ — cioe' avrebbero fabbricato un dato mai
usato che non esiste.
FASE 2 — FlowInExNtv/FlowOutExNtv, e perche' proprio quelle
Sceltе per: storia (100% coperte 2018→2026 su entrambi gli asset, contro mesi per tutto il
resto), meccanismo (il turnover lordo misura quanta parte del flottante viene
ri-posizionata), eseguibilita' (1d → long-flat/LS su BTC+ETH perp, l'impianto di TP01),
famiglia non chiusa. La famiglia exchange-flow e' chiusa (24/07, su SplyExNtv) → il
meccanismo nuovo e' stato misurato prima di usarlo:
| BTC | ETH | |
|---|---|---|
| corr( d(SplyEx) , In−Out ) | +0,9993 | +0,7516 |
| corr( d(SplyEx) , In+Out ) | +0,0349 | +0,0801 |
| |In−Out| / (In+Out) mediano | 0,060 | 0,062 |
📌 Il netto E' la derivata dello stock gia' testato; il lordo e' ortogonale — e il 94% del flusso si cancella, quindi lo stock vede 6 monete su 100 fra quelle che si muovono. Il dato nuovo era davvero nuovo.
Griglia dichiarata prima e contata al rialzo: 3 variabili (GROSS nuova · IMB mista ·
NETCTL = controllo negativo, l'informazione gia' uccisa) × W {30,90,180} × mode {LF,LS} ×
sign {±1} = 36 celle, +4 gia' spese su EXS il 24/07 = 40 trial.
✅ Controllo positivo: la famiglia uccisa ri-girata con la sua factory (ow.exs_factory
importata) → earns_slot_honest=False, DSR 0,903 = riproduce il 24/07.
Esito (study_family_honest, cella scelta solo in-sample): la cella al buio e'
NETCTL W=90 LF +1, cioe' il CONTROLLO NEGATIVO — IS 1,273 · FULL 0,951 · HOLD −0,094.
🚨 Massimo atteso dal PURO RUMORE su 36 trial = Sharpe 1,009: il candidato sta SOTTO.
DSR 0,437 (N=36) / 0,411 (N=40); marginale NEUTRAL, corr→TP01 0,653, multi-cut
negativo 7/7 anni. Per variabile: GROSS DILUTES (HOLD −0,415), IMB DILUTES, NETCTL
NEUTRAL → la parte algebricamente nuova non e' selezionabile. Direzione: |t|<1 su 2 asset × 2
variabili. Volatilita': ETH da' t +2,70 su Pearson ma in rango +0,015 p=0,46, cambia
segno per anno e su BTC e' "significativo" nel verso sbagliato → termometro contemporaneo, come
TERM-STRUCTURE (§7) e SKEW (§5). causality_ok True; implausible_sharpe False (48,1% di barre
attive in perdita); haircut a $635 = 0,000. Finestra in barre ATTIVE: FULL 2.214 (6,06 a) →
SE(Sharpe) 0,41; HOLD-OUT 511 (1,40 a) → MDE 1,66 di Sharpe.
⚠️ Due errori dell'agente su se stesso, catturati prima di pubblicare. (a) Il pool "N=12" del
deflated-Sharpe erano le 12 celle MIGLIORI (rows e' ordinata) e faceva PASSARE il candidato
a 0,975; con la partizione legittima fa 0,678 → conferma diretta della lezione §10: la
stessa griglia da' verdetti opposti secondo come la si partiziona. (b) Il residuo di vol calcolato
a mano invece che per OLS ribaltava il segno su ETH.
Escluso e perche': volume_24h/book_depth_top3 e 0DTE (113 e 30 giorni, e ogni loro
espressione eseguibile e' short-vol = chiuso); fut_deribit (il basis e' il funding, §13);
funding_cross_annualized/oi_delta_pct_4h (famiglia chiusa / dataset morto dal 30/07);
Amihud-turnover HL (gia' testato in xsec_v3_lowrisk); kimchi, HLP, F&G, MVRV, hash-ribbons,
stablecoin (24/07); liquidation_*_risk (una sola categoria in 17.229/17.229); iv_90d (59 righe).
📌 IL PEZZO DI 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, che e' l'unica forma in cui un inventario puo' concludere qualcosa di positivo su un'assenza. Sottoprodotto: corr→TP01 0,50-0,65 = replica indipendente del "l'on-chain tradabile e' prezzo travestito" del 24/07, su colonne che quell'ondata non aveva mai aperto.
VERDETTO: NESSUN DATO INUTILIZZATO SOSTIENE OGGI UN'IPOTESI NUOVA — LA SCORTA DI DATI DEL PROGETTO E' ESAURITA, E CIO' CHE RESTA NON LETTO E' TELEMETRIA A FINESTRA CORTA, NON STORIA —
SCARTATO. Libro, pesi, cron, config INVARIATI.
45 — SPOT-NETTING (separare le gambe su due strumenti)
scripts/research/r0823_spot_netting.py. Sola lettura provata: git status mostra solo questo
file, git status -- src/ config/ scripts/live/ scripts/cron_*.sh tests/ data/ vuoto; ~17 GET
pubbliche + ~13 letture del conto via DeribitRead (nessun metodo di trading esiste in quella
classe, by design); ordini inviati: 0; finestre :05-:10 e :24-:30 rispettate da una guardia
nello script.
Q1 — il margine non uccide il lead; il codice si'
[VENUE] get_currencies: BTC ed ETH hanno in_cross_collateral_pool: true (11 valute su 51
→ elenco ristretto, non un default). get_instruments?kind=spot: BTC_USDC/ETH_USDC hanno
max_leverage: 10, taker 0,00 bps, min lotto 0,0001 → [DEDOTTO] lo spot vive dentro il
conto marginato, non in un portafoglio segregato.
[CONTO] equity USDC $636,01, nozionale lordo $327,52, margine impegnato $6,55 = 2,000% del
nozionale (limite superiore: contiene eventuali riserve d'ordine → l'aritmetica che segue e'
conservativa).
[CALC] caso peggiore (TP01 al massimo su entrambi gli asset): spot $477, USDC libero $159,
nozionale perp di SKH01 $159, margine richiesto $3,18 → copertura 50,0x. Entrambi i termini sono
proporzionali a E → il rapporto non dipende dal capitale. Anche con lo spot valutato zero
come collaterale, SKH01 resta marginato 50 volte. L'haircut — non leggibile — non e' binding.
🚨 [CODICE, verificato con inspect.getsource] src/live/shadow.py::_equity legge solo
account_summary("USDC") e ripiega sulle valute-moneta solo se quell'equity e' ≤1; position_usd
matcha per instrument_name. → comprando $477 di spot il libro leggerebbe $159 invece di $636
(25%) e non vedrebbe la gamba, che il riconciliatore ricomprerebbe. Non e' un cambio di
strumento: e' un cambio del percorso di SIZING del live.
❌ Ipotesi dell'agente, nata e refutata nello stesso filone. get_currencies dichiara USDC
apr 3,40 (USDT/BTC/ETH 0,0): se accreditato, tenere il 75% in spot costerebbe fino a
2,55%/anno = meta' del vantaggio. [LOG] 6 run col conto flat (il piu' lungo 257 giri
orari = 10,7 giorni): equity invariata al centesimo contro i +$0,59 attesi → limite superiore
su qualunque interesse < 0,029%/anno, e un accredito mensile e' escluso (un run attraversa il
31/07-01/08 con Δ=0,00). L'obiezione e' morta e il lead non deve pagarla.
Q2 — il valore della separazione: nullo
🚨 (i) T1 sbloccato e' un DECLASSAMENTO. Con la macchineria originale (r0726_skh_onbook, 23
offset, differenze appaiate): onbook_tp − hourly = +0,051 FULL (19/23) / +0,057 HOLD → il
pubblicato (+0,054/+0,061) e' riprodotto. Ma il 26/07 stesso stabili' che il live fa rilevazione
intra-barra, e fastdetect − hourly = +0,082 in 23/23 (pubblicato +0,081). Contro il path
che il live gia' percorre: onbook_tp − fastdetect = −0,048 FULL (6/23). Sbloccare T1
comprerebbe un path peggiore di quello che gira — conferma indipendente della conclusione del 26/07,
raggiunta per una strada diversa.
(ii) Funding risparmiato [riprodotto da §35/§39]: TP01 su perp drift 13,66% → senza carry 15,77% (+2,11%/anno di sleeve, vol invariata 12,17→12,22%); a peso di libro ×0,75 → +1,58%/anno.
📌 (iii) Il costo del netting perso: §39 lo stimava "1-2%", ed e' ALTO DI UN ORDINE DI GRANDEZZA. Simulazione della riconciliazione oraria su 8 anni, percorso SKH01 validato contro l'harness (trade 194/194 BTC, 213/213 ETH):
| percorso | ordini/anno | turnover perp | turnover spot | lordo medio |
|---|---|---|---|---|
| NETTA | 289,1 | $12.412 | $0 | $84,52 |
| SEPARATA | 282,8 | $8.493 | $3.893 | $85,52 |
Commissioni: NETTA $4,34/anno (0,683% di equity) contro SEPARATA $2,97 — un RISPARMIO di 0,216%. Il netting non risparmia commissioni. Ordini −6,3/anno, ma ⚠️ meno ordini non e' meglio: il tracking peggiora del +12% ($1,61 → $1,81 di scarto medio dal target) — 5ª occorrenza della lezione "banda in valuta assoluta". Margine: irrilevante (IM 0,266% di equity). Segni opposti — cioe' le ore in cui il netting serve davvero — 0,61% della storia. [VENUE] Il costo vero e' lo SPREAD: il perp e' un mercato a un tick (0,01-0,02 bps di mezzo spread), lo spot no (1,5-3,1 bps) → sovracosto [0,139%, 0,250%]/anno. ⚠️ Due istantanee a 4 minuti danno 2,27 e 4,08 bps (+79%) e il contributo netto dell'esecuzione CAMBIA SEGNO fra le due → si cita come banda [−0,034%, +0,077%]/anno, ampiezza = 7% del lead: l'esecuzione non decide questo lead. ✅ Controllo positivo: ordini simulati sulla finestra live 132/anno contro 114/anno osservati. ⚠️ [LOG] In 2 mesi SKH01 non e' MAI stato short → il campione live non puo' misurare il netting, e l'agente lo dichiara invece di estrapolarlo. Fee reale sul nastro 3,70 bps/lato.
Il numero da citare: lordo +1,58% → netto oggi [+1,55%, +1,66%] → con spot a 3,50 bps [+1,33%, +1,44%] → nello scenario fiscale sfavorevole +0,50%.
Q3 — la sorveglianza
[CODICE] fee_watch deriva INSTRUMENTS da BOOK_INSTRUMENT → una gamba spot non
comparirebbe: e' esattamente il difetto corretto il 21/08. Riga dichiarata e non scritta:
SPOT_INSTRUMENT in src/live/book.py + concatenazione in fee_watch. ⚠️ Non basta:
convenzione('BTC_USDC') ritorna 'ignota' → il cross-check sui fill tornerebbe None
(onesto ma cieco): servirebbe una terza famiglia 'spot'. Se la fee tornasse a 3,50 bps il lead
perderebbe 0,216%/anno = 14% del guadagno → sopravviverebbe; la ragione per sorvegliarlo non e'
che lo ucciderebbe, e' che oggi nessuno se ne accorgerebbe.
Q4 — il rischio
Venue: invariato (era gia' totale). Fisco: 7 punti di aliquota sulla gamba TP01 = 0,83%/anno
= oltre meta' del guadagno — e 🚨 un costo nuovo mai contato: se i derivati sono c-quater i
comparti si SEPARANO, quindi le minusvalenze del perp (SKH01) smetterebbero di compensare le
plusvalenze spot (TP01) [DEDOTTO, per il commercialista]. Liquidazione — qui la separazione
MIGLIORA: lo spot non si liquida, esce dal perimetro il 75% del libro ($85 → ~$21 di nozionale
liquidabile); contropartita: 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.
Haircut: non leggibile e non binding — unico caso in cui "non lo so" e "non conta"
coincidono, e va detto in quest'ordine.
Non determinabile senza un conto reale
(i) l'haircut del collaterale (get_collateral_info → Method not found); (ii) se
account_summary('USDC').equity includa i saldi BTC/ETH (il conto ne tiene $0,19: troppo poco
per discriminare); (iii) se get_positions restituisca lo spot. Tutte e tre si risolvono con un
acquisto di prova da $7,73 leggendo equity/available/positions prima e dopo — e' un ordine,
quindi decisione dell'operatore.
VERDETTO: IL LEAD REGGE E VALE [+1,55%, +1,66%]/ANNO NETTO, MA LA SEPARAZIONE DELLE GAMBE — LA RAGIONE PER CUI IL FILONE E' STATO APERTO — NON AGGIUNGE NULLA: T1 sbloccato e' un declassamento,
il netting perso risparmia commissioni invece di costarle, il margine non era il vincolo. Il valore
e' il funding e basta, e in cambio si prendono due costi nuovi mai contati (comparti fiscali
separati, gamba TP01 senza disaster-SL) piu' un cambio al percorso di sizing del live.
📌 Il prossimo passo non e' un backtest: e' la domanda al commercialista e un acquisto di prova da
$7,73. Libro, pesi, cron, config INVARIATI.
51 — NEWDATA-SCOUT (cosa iniziare a raccogliere)
scripts/research/r0823_newdata_scout.py. Conseguenza diretta di §43: se la scorta e' esaurita, la
domanda utile non e' piu' "cosa abbiamo e non guardiamo" ma "cosa NON abbiamo, che varrebbe la
pena iniziare a raccogliere oggi" — perche' una catena opzioni non e' ricostruibile a posteriori
e un'ora non raccolta e' persa per sempre.
| fonte | apre | ricostruibile? | costo | tempo utile | verdetto |
|---|---|---|---|---|---|
| catena opzioni USDC-lineare | nessuna famiglia nuova: rende onesti i numeri di uno sleeve VIVO (VRP01, 12%) | NO | +117 chiam./giro = +18% | episodi (1 regime IV-rank>0,30) | RACCOGLIERE |
| book depth L2 perpetual | la curva haircut-vs-taglia (oggi 18 fill) | NO | 2.880/g a 1/min×2 | giorni per la mediana, anni per la coda | CAMPAGNA A TERMINE |
| trade tape / flusso aggressore | flusso d'ordine (mai aperto) | NO — muro −24h/−26h | ~6/ora | 6,0 anni | NON RACCOGLIERE |
| liquidazioni Deribit | coda/stress | NO (vive nel tape) | — | non calcolabile | NON RACCOGLIERE |
| OI per strike nel tempo | — | irrilevante | zero | in corso | GIA' FATTO |
| OI perpetual (il collettore raccomandato da §10) | affollamento — famiglia CHIUSA 4 lati | 🚨 SI', >=800 giorni | 1/ora | testabile oggi | NON RACCOGLIERE — TESTARE PRIMA |
| telemetria Binance (taker, long/short) | posizionamento retail | NO — muro 30g | ~24/g | 6,0 anni | NON RACCOGLIERE |
| funding/basis altri venue · DVOL · macro | famiglie chiuse / gia' posseduto | SI' | — | — | NON RACCOGLIERE |
📌 Il criterio 1 (ricostruibilita') ne uccide 4 da solo, ed e' stato applicato PROVANDO
l'endpoint, non deducendolo — ogni verdetto e' una GET con controllo positivo, perche' uno
zero non e' una risposta finche' non si prova che la stessa chiamata funziona altrove:
tape Deribit −24h → 100 trade, −26h → 0 (muro verificato coi timestamp restituiti); Binance
−20g risponde, −40g rifiuta esplicitamente (parameter 'startTime' is invalid); funding e DVOL
serviti storici su richiesta.
🚨 E ribalta una raccomandazione del 22/08: §10 proponeva di accendere un collettore di OI
perpetual "perche' oggi ripartirebbe da zero". Non riparte da zero: Bybit risponde a −800
giorni coi timestamp dentro la finestra (2024-06-14). L'ipotesi e' testabile oggi a costo zero, e
solo se sopravvive vale pagare la specificita' di venue.
🚨 Correzione a un numero che avevo pubblicato io (+90%). Con gli stessi filtri del
collettore vivo (≤95 giorni, OI≥100) la catena USDC BTC+ETH e' di 113 strumenti, non ~587 →
+18%, non +90%. ✅ Verificato indipendentemente dal coordinatore sul venue: inverse
(BTC 270 + ETH 379) = 649, USDC = 113 → +17,4%. L'origine del 587 era il conteggio
grezzo senza il filtro OI (1.140 strumenti USDC ≤95g, cioe' +81% — vicino al 90% pubblicato):
il filtro che il collettore applica davvero taglia il 90% della famiglia USDC, ed e' la replica
esatta di §8 (OI e negoziabilita' sono anti-correlati su Deribit USDC; BTC_USDC ha 5
strumenti sopra soglia). Il giro passerebbe da 652 chiamate / 163 s a 769 / 192 s, che
finisce prima del :30 e non tocca cron_book al :07. ⚠️ E' un numero di oggi: cresce con la
liquidita' USDC e va ri-misurato prima di accendere.
Tempo perche' sia utile, dal MDE (≈ 1,96/√anni): Sharpe 0,8 → 6,0 anni; 1,0 → 3,8; 1,3 →
2,3. Il soffitto direzionale del progetto e' ~1,15-1,3 ⇒ qualunque fonte che alimenti un SEGNALE
non e' una decisione di oggi. 📌 Le due sopravvissute sfuggono al MDE perche' non producono uno
Sharpe: sono misure di COSTO (depth) e di PREZZO REALE (catena USDC).
⚠️ Onesta' dell'agente su cio' che le due fonti NON fanno: la catena USDC non apre una famiglia
chiusa — vale perche' il f=0,73 di VRP01 e' misurato sulla famiglia inverse, che un conto USDC
non puo' marginare: ripara il numero di uno sleeve vivo, non apre alpha. Il depth: la domanda
binding (quanto costa eseguire a $5k/$20k) si risponde in due settimane; solo la coda di stress
richiede l'archivio — da cui "campagna", non "collettore".
⚠️ Bug catturato in sessione: urlopen solleva su HTTP 400, quindi il rifiuto di Binance
veniva ingoiato come guasto di rete e il muro si ribaltava in silenzio in "RICOSTRUIBILE" — la
stessa conflazione errore / assenza-di-dato gia' codificata in collect_chain con quote_status.
VERDETTO: RACCOGLIERE DUE FONTI SU DIECI, E NESSUNA DELLE DUE PER FARNE UN SEGNALE — catena
USDC (+18%) e una campagna a termine di book depth. Nessuna azione presa: e' materiale per una
decisione dell'operatore.
48 — VOLVOL (il secondo momento del DVOL)
scripts/research/r0823_volvol.py (20 s, nessuna rete, nessuna scrittura). 36 celle
dichiarate prima (3 finestre × 3 soglie × 4 usi), tenute poche di proposito data l'aritmetica dei
168 trial.
✅ L'ortogonalita' — che era il gate — la PASSA, e questa e' meta' dell'attesa a priori refutata: misurata prima di costruire qualsiasi strategia, Pearson e rango, 6 celle × 6 referenze, max |corr| = 0,396 (soglia 0,80): contro il livello DVOL 0,13-0,21, contro l'IV-rank di VRP01 0,01-0,24, contro RV30 0,09-0,38, contro |esposizione TP01| 0,03-0,30. E' una quinta variabile, non una quarta riscritta.
⚠️ Correzione a una mia riga del briefing, fatta leggendo il codice in produzione: il
DVOLSPREAD in forward-monitor NON e' implicita−realizzata — r0726_dvolspread_gate.make_book
calcola log(dvol_btc) − log(dvol_eth), un relative-value cross-asset (✅ verificato dal
coordinatore al sorgente, riga 67). L'agente ha misurato contro entrambe: correlare contro
quella sbagliata avrebbe dato un "ortogonale" gratuito contro una variabile che nessuno trada.
📌 DOVE MUORE: guarda INDIETRO. corr(VoV_t, |r|_{t+k}) su BTC: −10: +0,164 · −5: +0,169
· −1: +0,132 · 0: +0,113 · +1: +0,057 · +10: +0,018 — picco a lag −5/−10, curva monotona
decrescente. Non e' il termometro contemporaneo di TERM-STRUCTURE e SKEW: insegue con una
settimana di ritardo. Correlazione parziale con la vol realizzata futura a 10g, al netto di
RV_t e DVOL_t: −0,069 (BTC) / −0,090 (ETH). ✅ Controllo positivo del rilevatore 2/2 nei
due versi (lead sintetico → +3, lag sintetico → −3).
Gate: cella in-sample-only SIZE w=10 p=0,50, marginal NEUTRAL, DSR 0,448 FAIL
(0,441/0,381/0,228 a N=36/72/168) → earns_slot_honest=False. La trappola del trend in chiaro:
la cella scelta ha corr→TP01 0,995 sull'hold-out; e per uso, RISKOFF/SIZE ereditano lo Sharpe
del trend (mediana IS 0,40/0,66) mentre DIR — l'unico uso in cui la variabile decide da sola — ha
mediana IS −0,24 e 5/9 celle con FULL negativo.
Arm VRP01 (replica del sleeve bit-exact 2/2 prima di ogni delta): 5/9 battono il canonico =
moneta, maxDD giu' in 9/9 = de-levering, e contro gate casuali che saltano lo stesso numero
di settimane la mediana e' 0,71/0,72 con 0/9 al 95° pctl → quinto fallimento consecutivo di un
gate nuovo su VRP01.
📌 IL NUMERO CHE DECIDE, e non e' un gate. Barre attive: FULL 985 → MDE 1,51; hold-out 303 → MDE 2,73. Il candidato migliore batte TP01 nudo di +0,034 di Sharpe — un fattore 44 sotto l'MDE: su questo dato la domanda non e' rispondibile in positivo nemmeno in linea di principio. A chiudere sono le due misure che hanno potenza e non dipendono da nessuna cella scelta: la parziale negativa, e il controllo NON CAUSALE — la stessa cella con la vol-of-vol che sbircia fa −0,292 sotto TP01. Non e' che la si stima male: la variabile non contiene l'informazione.
⚠️ Errori dell'agente su se stesso: (i) la lettura dell'ortogonalita' era cablata e diceva "il legame piu' forte e' con la vol realizzata" mentre la tabella diceva SPREAD → ora e' calcolata dalla tabella; (ii) il null del gate casuale estraeva le settimane indipendentemente per gamba mentre il gate vero e' guidato da due DVOL correlati — differenza risultata immateriale (0,71 contro 0,72) ma andava misurata, non assunta (nel 25/07 lo stesso errore valeva 2-3×); (iii) un off-by-one nel conteggio.
Non misurato, dichiarato: vol-of-vol intra-giornaliera (il DVOL su disco e' 1d, e un secondo momento e' proprio dove la frequenza puo' contare); vol-of-vol implicita dalla curvatura dello smile; un modello congiunto RV+livello+VoV invece di un gate binario. "Un uso non provato non e' un uso refutato."
VERDETTO: E' UNA VARIABILE NUOVA E GUARDA INDIETRO — SCARTATO, quinto lato del filone DVOL
chiuso. Libro, pesi, cron, config INVARIATI.
49 — TP01-TWIN (il 75% del libro dipende da una sola definizione di trend)
scripts/research/r0823_tp01_twin.py (8 s). ✅ Replica bit-exact vs sleeves._tp01_returns():
max|diff| = 0.0. 53 trial contati al rialzo (22 celle + 31 composizioni).
❌ L'ATTESA A PRIORI DEL COORDINATORE E' REFUTATA, ed e' il motivo per cui il filone valeva. Avevo scritto "i meccanismi di trend a 1d correlano 0,85-0,95, l'ensemble sara' TP01 con piu' fee". Misurato — rendimenti netti / posizioni-bersaglio (dove vive davvero la ridondanza):
| TSMOM | DON | EWMA | KEL | KAU | |
|---|---|---|---|---|---|
| TSMOM | 1.000 | 0.852 / 0.700 | 0.929 / 0.859 | 0.714 / 0.510 | 0.767 / 0.527 |
| DON | 1.000 | 0.892 / 0.775 | 0.696 / 0.464 | 0.759 / 0.517 | |
| EWMA | 1.000 | 0.696 / 0.440 | 0.791 / 0.528 | ||
| KEL | 1.000 | 0.855 / 0.758 |
Media fuori diagonale 0,795 (rendimenti) / 0,608 (posizioni). Keltner e Kaufman stanno a 0,51-0,53 di posizione da TSMOM: meccanismi genuinamente diversi, non TP01 travestito → il filone non si chiudeva sulla matrice ed e' stato misurato fino in fondo.
🚨 LA PROTEZIONE — il criterio (B) di edge_watch.py, importato dal sorgente di produzione.
La colonna che decide non e' l'ancora canonica ma la frazione di ancore:
| anno | DD b&h | rapp. TSMOM | rapp. ENS | ancore in cui ENS e' meglio |
|---|---|---|---|---|
| 2019 | 56,4% | 0,170 | 0,172 | 14/24 |
| 2020 | 59,2% | 0,124 | 0,114 | 18/24 |
| 2021 | 52,0% | 0,130 | 0,121 | 18/24 |
| 2022 | 68,4% | 0,039 | 0,129 | 0/24 |
| 2023 | 22,0% | 0,531 | 0,486 | 23/24 |
| 2024 | 35,6% | 0,222 | 0,345 | 0/24 |
| 2025 | 45,1% | 0,166 | 0,209 | 0/24 |
| 2026 | 46,6% | 0,025 | 0,108 | 0/24 |
Dove l'ensemble perde, perde a TUTTE le ancore — degradazione unanime, non fortuna d'ancora — e i quattro anni in cui perde sono i quattro piu' recenti. Nel 2022, il sinistro maggiore, e' 3,2x peggiore. Rapporto medio 0,18 → 0,21 (0/24 favorevoli); celle ancora×anno a favore 73/192 = 38%.
⚠️ Errore dell'agente catturato in sessione, e del tipo che avrebbe cambiato il verdetto: la prima stesura decideva sul caso peggiore (max degli 8 rapporti), che migliora 0,56 → 0,49, e avrebbe stampato "PROMOSSO A LEAD". Il massimo di 8 numeri non e' una statistica: si era mosso perche' era migliorato un anno (il 2023, che deteneva il massimo) mentre 4 su 8 peggioravano.
📌 Il null del de-levering non e' "superato": e' SENZA POTENZA, e va detto cosi'.
k_isovol = 0,9896 ≈ 1 — non c'e' niente da de-levere: vol 12,14% contro 12,02%, esposizione
media ENS 0,152 > 0,141, tempo a mercato 70% > 55%. ✅ E il rilevatore ha potenza: su un
de-levering vero (target_vol=10%) segnala Sharpe invariato 1,305 e maxDD 14,3% → 7,3%.
Aggiunto un gate su 31 sottoinsiemi: 0/30 composizioni alternative batte TSMOM da solo su
protezione E hold-out insieme.
Banda d'ancora (24, differenze APPAIATE): Sharpe FULL +0,0177 (14/24) · Sharpe HOLD-OUT −0,0671 (7/24) · maxDD +0,0164 (2/24) · peggior 3 mesi +0,0113 (24/24) · protezione media +0,0305 (0/24). Sul libro 75/25 (la gamba SKH e' identica nei due bracci → la sua ancora si cancella): Sharpe hold-out Δ −0,127, favorevole 3/24; FULL +0,0001; maxDD −0,004; peggior 3 mesi +0,014 (24/24). ✅ Onesta' verso l'ensemble: l'ancora canonica h=0 e' la migliore delle 24 per l'hold-out di TSMOM (100° pctl — replica indipendente della fortuna d'ancora del 02/07 e 26/07), quindi il divario a h=0 (−0,37) e' gonfiato: il numero da citare e' −0,067.
I costi non sono il problema: turnover 5,3/anno contro 8,0 di TSMOM (la nettatura cancella
turnover), a 0,20% RT 1,252 contro 1,274, haircut a $635 −0,002. study_family_honest: cella
in-sample-only = TSMOM, marginale REDUNDANT, earns_slot_honest=False — con DSR 0,999
dichiarato non decisivo (famiglia omogenea ⇒ sr0 piccolo per costruzione).
📌 E il criterio che si voleva migliorare NON E' BINDING: TSMOM ha rapporto peggiore 0,635
contro la soglia 0,75 in 192 celle su 192. weights_tilt_null non si applica (il vettore dei pesi
e' identico, cambia il contenuto del 75%) ed e' detto esplicitamente nello script.
📌 IL FATTO TRASFERIBILE: mediare meccanismi di trend NON diversifica il rischio di trend. Cinque segnali guidati dallo stesso prezzo divergono solo ai bordi del trend — cioe' nei ribassi — e la media li tiene mezzi-lunghi mentre il singolo e' gia' flat. Piu' meccanismi = ingresso/uscita piu' morbidi (peggior 3 mesi migliore 24/24), non piu' assicurazione. ⚠️ Cio' che NON si conclude: che la monocultura sia sicura. Servirebbe un regime in cui il TSMOM fallisce, e in 7,4 anni non c'e'.
VERDETTO: MEDIARE MECCANISMI DI TREND NON DIVERSIFICA IL RISCHIO DI TREND — PROTEGGE PEGGIO PROPRIO NEI RIBASSI — REFUTED. Libro, pesi, cron, config INVARIATI.
46 — TAIL-HEDGE (put deep-OTM come assicurazione statica)
scripts/research/r0823_tail_hedge.py. Libro, pesi, cron, config INVARIATI. Nessun ordine.
🚨 Il null del de-levering non arriva nemmeno a essere il gate che decide: la premessa cade prima.
| lente di f | maxDD scende | batte il de-levering | miglior Δdrift | ΔSharpe |
|---|---|---|---|---|
| f=1,00 (modello nudo, regalato) | 0/54 | 0/54 | +0,07 pp/a | −0,108 |
| f=2,23 (misura 30/07) | 0/54 | 0/54 | −0,00 pp/a | −0,004 |
| f=5,85 (misura 30/07) | 0/54 | 0/54 | +0,02 pp/a | −0,032 |
| f misurato oggi (1,89/1,27/1,06) | 0/54 | 0/54 | −0,01 pp/a | −0,004 |
Libro nudo (2021-03→oggi, finestra DVOL): Sharpe 1,356 / maxDD 9,42% / drift 13,75%. Coperto:
maxDD 9,53-10,37%. Non serve trovare il k: il claim "meno drawdown" e' falso al primo
passo, e dove il DD peggiora il null e' degenere (k=1) — un Δdrift>0 li' risponde a una domanda
di alpha, non a questa.
📌 IL MECCANISMO, ed e' il risultato trasferibile: il beta del libro al sottostante e' +0,076. Il 19/05/2021 il mercato ha fatto −21,1% e il libro −2,0%. La put protegge una perdita gia' ridotta ~10x dalla strategia stessa, quindi coprirla costerebbe ~1/beta volte il budget. E il bleed del premio cade dentro i drawdown — che su questo libro sono lunghi e poco profondi — mentre il payoff cade su singoli giorni di crollo che non sono il fondo del drawdown: sui 5 peggiori mesi la copertura peggiora tutti e cinque. ❌ Meta' dell'attesa a priori dell'agente refutata: 15/20 dei peggiori giorni del libro sono crolli (lo short-squeeze di SKH01 sta fuori finestra). Regge l'altra meta', ed e' il beta.
f misurato oggi sulle quote vere (420 put con bid E ask, catena USDC): δ−0,05 → 1,89 · δ−0,10 → 1,27 · δ−0,15 → 1,06 — piu' mite del 2,23-5,85 del 30/07, e il verdetto non cambia. 📌 Struttura del modello che vale come risultato a se': f si paga solo sulla parte di valore che converge a intrinseco, quindi un roll anticipato non lo paga (asimmetria misurata: expiry −0,27pp invariato, half −0,19 → −0,39pp).
🚨 CORREGGE UN MURO PUBBLICATO: comprare un'opzione costa il PREMIO, non il NOZIONALE. I
"lotti da migliaia di dollari" del 22/08 sono il collaterale per VENDERE. Lotto minimo
BTC_USDC = $1,79-7,93 di premio; la copertura e' comprabile a ogni roll da ~$9,2k (30g
δ−0,05) a ~$38,8k (7g δ−0,15). ✅ Verificato al venue dal coordinatore: min_trade_amount
0,01 su tutte le 343 put BTC_USDC, e il premio del lotto minimo di una put a 5 giorni va da
$0,00 a qualche dollaro.
📌 Il secondo muro e' strutturale e non di capitale: il TICK da 5 USDC. ✅ Verificato
(tick_size = 5.0 su tutte). Piu' la copertura e' deep-OTM — cioe' economica — piu' il tick
domina: una put marcata 0,82 USDC non e' quotabile sotto 5. E' un pavimento di prezzo del 6x
sulle ali piu' lontane, e nessun budget lo aggira.
Canale funded: sulla regola binding (max-loss 6% statico) la copertura va nel verso sbagliato — alza il maxDD, quindi abbassa la leva ammessa (k 0,629 → 0,594-0,620). Il beneficio sui breach a un giorno (0,92 → 0,55/anno) e' reale, ma il de-levering a pari drift lo compra allo stesso ordine di grandezza senza toccare il maxDD.
⚠️ Tre errori dell'agente, tutti catturati dai controlli e non a occhio. (i) Il controllo positivo "payoff gratis" falliva: non accreditava il valore dell'asset regalato mentre il MTM ne addebitava il decadimento → il free lunch costava quanto il premio. Un controllo positivo rotto dichiara guasto l'apparato. (ii) La causalita' dava 1,28e-04 ("DIVERGE") perche' il confronto arrivava fino al taglio mentre il prefisso si ferma un roll prima: differiva per assenza di un roll, non per look-ahead → finestra corretta, 0,00e+00 esatto. (iii) Errore di criterio: contava "vittoria" anche dove il maxDD peggiora — col criterio corretto le "3/54 vittorie a f=1" diventano 0/54. Controlli finali 3/3 (free-lunch e f=0,1 riconosciuti, f=10 rifiutato).
⚠️ Non misurato, dichiarato: marzo 2020 e' FUORI CAMPIONE (il DVOL parte 2021-03) — il sinistro piu' grande della storia del libro non e' testato, ed e' l'unico scenario in cui la conclusione potrebbe muoversi. Lo spread viene dai soli strumenti con bid E ask veri: e' un pavimento che FAVORISCE la copertura (le ali piu' profonde spesso hanno solo un ask al tick). I 3-5 breach in 5,4 anni non distinguono le varianti fra loro: si legge il segno, non la taglia. Nessuna copertura dinamica (gated su regime) e' stata provata: la domanda era la statica.
VERDETTO: LA PUT PROTEGGE UNA PERDITA GIA' RIDOTTA 10x DALLA STRATEGIA — IL maxDD SALE IN 162 CELLE SU 162 — REFUTATO.
47 — ANCHOR-ENSEMBLE (de-luckare l'ESECUZIONE invece del numero)
scripts/research/r0823_anchor_ensemble.py (127 s). Attese a priori A1-A7 scritte e stampate
prima di misurare: 3 confermate, 3 refutate, 1 mezza. Libro, pesi, ancore, cron, config
INVARIATI.
(i) Batte l'ancora MEDIANA: si', di +0,014 di Sharpe FULL — e l'algebra dice che non puo' fare di
piu'. La posizione dell'ensemble e' la media delle posizioni e il lordo orario e' lineare in
essa ⇒ lordo_ens == media(lordi), verificato a max|dif| 1,4e-17. Il drift non puo' cambiare se
non per fee-netting (+0,013%): tutto il guadagno e' vol (−1,1%).
📌 Cio' che l'ensemble compra davvero non sta nella colonna Sharpe: sd(ShFULL) 0,061 → 0 e
sd(ShHOLD) 0,112 → 0. Non riduce l'incertezza, la ELIMINA.
⚠️ A2 refutata sulla taglia: l'agente prevedeva +0,03…+0,15 ed e' 7x piu' piccolo — aveva
sopravvalutato quanto sono decorrelate 24 ancore della stessa strategia.
(ii) Batte la CANONICA: NO sull'hold-out (−0,223), SI' su FULL (+0,024) e in-sample (+0,071). La canonica sta al 98° pctl di 24 sull'hold-out e al 15° in-sample. 📌 E i due numeri non sono due stime della stessa cosa: +0,44 e' un'estrazione GIA' AVVENUTA, +0,21 e' cio' che si ottiene senza estrarre. Tenere la canonica non conserva il +0,44: ri-estrae da [+0,02, +0,44]. La stima onesta del futuro e' +0,21.
(iii) Eseguibile da quale capitale: da TUTTI, gia' a $635 — attesa REFUTATA. A $635 il path
eseguito a K=24 segue l'ideale meglio che a K=1 (corr 0,9986 contro 0,9954), perche' un
target che si muove a passi piccoli e frequenti entra in una banda fissa meglio di uno che salta.
Ordini 119 → 729/anno, fee $2,55 → $2,56. ⚠️ Il criterio N_max dichiarato in anticipo
satura (6/6 celle a ogni capitale): un gate che passa sempre non misura niente → la risposta
non e' un capitale, e' che l'eseguibilita' non e' il vincolo (7ª volta nell'ondata).
✅ Replica del 02/07 prima di ogni delta: h=0 == tp01_baseline_daily; banded() ==
r07.smallcap_net bit-exact (0,0e+00, stessi ordini); K=4 == EW di 4 book (2,2e-16); offset
0 == sleeves._skyhook_returns() (0,0e+00). La struttura replica; i livelli sono
ri-derivati col dato di oggi (data/raw/ non versionato): HOLD mediano 0,04 → 0,220, banda
[−0,13,+0,30] → [+0,02,+0,44], canonico 0,31 → 0,436 (98° pctl in entrambi) — coincidono
con la memoria corrente del progetto (canonico +0,44 al 96-98°, mediana +0,22).
📌 Il funding: canale chiuso per ALGEBRA, non per piccolezza. funding = pos·f e' lineare in
pos ⇒ funding_ens == media esatta delle 24 ancore, max|dif| = 0. E il rapporto condizionale
misurato il 22/08 non si attenua: 2,25x → 2,26x da K=1 a K=24 — e' esso stesso una media, e la
correlazione esposizione-funding vive alla scala del REGIME, non dell'ora del giorno. (Replica
indipendente del drag su griglia oraria: 2,14% contro il 2,02% pubblicato.)
📌 DOVE STA IL SEGNALE: SKH01 — l'ancora a cui il 02/07 non porto' mai questa domanda. Sulla lente del path che gira: mediana delle 23 fasi ShFULL 0,974 → 1,286 (+0,312), maxDD mediano 23,3% → 16,6%. Venti volte TP01, e il meccanismo e' chiaro: i suoi trade sono discreti — spostare la griglia cambia quali trade esistono, non quanto sono grossi (sd d'ancora 0,194 contro 0,061). 23 e' primo ⇒ sulla griglia a 30m non esiste sotto-ensemble simmetrico. ⚠️ Ma dentro il libro SKH01 pesa il 25% e li' non si distingue da zero (+0,005 a $635, +0,022 a $100k, coi segni dei singoli che cambiano fra i due capitali).
📌 Contro-intuitivo misurato: tranciando entrambi gli sleeve gli ordini salgono 6,5x (197 → 1283/anno) ma le fee SCENDONO ($5,76 → $5,29). Su un venue a fee proporzionale si paga il nozionale, e mediare 23 fasi trasforma un ±1,0x che sbatte da un estremo all'altro in una posizione frazionaria. Su un venue a pavimento fisso il segno si ribalterebbe (regola del 25/07, riconfermata da un terzo angolo).
Barriera (canale funded) — attesa refutata sulla regola sbagliata. Il lato binding non e' la barriera (−6%, P(breach) 0-7%) ma il bersaglio (+10%, P(pass) 40-82%): meno vol allontana dal traguardo quanto dalla barriera, e l'ensemble sta al 31° pctl su P(pass) pur avendo maxDD migliore della mediana. Ma la regola che il 22/08 ha misurato uccidere e' la daily-loss a un giorno, che close-only non puo' vedere: sul p1 giornaliero l'ensemble batte il 66% di 150 configurazioni. Indizio, non misura — la conferma richiede la lente accoppiata.
⚠️ Il costo vero, e non e' negli ordini: 23 ancore su 24 di TP01 richiedono le barre di oggi,
cioe' fresh_5m — il path che il 26/07 e' risultato ricadere in silenzio sul certificato e
che il 29/07 ha fallito 6 giri su 8. Oggi TP01 non ci dipende. E' l'unica delle tre obiezioni
del 02/07 che sopravvive intatta (SKH01 quel feed lo usa gia', il che rende l'asimmetria fra i due
sleeve ancora piu' netta).
🚨 IL RISULTATO CHE NON ERA NEL MANDATO: la premessa del 02/07 era sbagliata. Quel filone
boccio' il tranching perche' "i delta per-ancora (~$1-2) sono sotto il min-order $5 → degenererebbe
in K=1". Ma src/live/book.build_book_order banda abs(delta) sulla posizione NETTA e manda un
ordine per asset per giro: un delta per-ancora non e' mai un ordine. Stessa decisione, ragione
diversa — e la ragione conta, perche' quella vecchia cadrebbe al primo esecutore che mandasse un
ordine per tranche, questa no (e' sulla taglia dell'effetto).
⚠️ Due errori dell'agente, catturati e congelati in commento: (a) confrontava
turnover_per_year, che eval_weights arrotonda, accanto a una disuguaglianza stretta →
stampava "9,40 contro 9,38" facendo sembrare violata una sub-additivita' che il conto esatto
rispetta; (b) i percentili di coda usavano un solo segno per tre colonne di cui due sono ritorni
e una una frequenza → stampava 34° dove il valore vero e' 66°, cioe' "peggio della mediana"
per un numero migliore della mediana. E la prima stesura affermava "i due effetti sono additivi"
come testo fisso, refutato dai suoi stessi numeri: ora l'affermazione la calcola il codice.
VERDETTO: SU TP01 L'ENSEMBLE NON PUO' CAMBIARE IL DRIFT PER ALGEBRA — ELIMINA L'INCERTEZZA, NON LA MIGLIORA; IL SEGNALE STA SU SKH01 E DENTRO IL LIBRO NON SI DISTINGUE DA ZERO.
Nessuna proposta: SKH01 non e' passato per study_family_honest su questa griglia, il guadagno
e' misurato sugli stessi 7 anni su cui e' stato selezionato, e la lente hourly e' gia' nota (26/07)
per sottostimare il path live. Il filone stabilisce dove guardare, non cosa fare.
53 — SKEPTIC-LEVA (attacco deliberato al gradino di leva)
scripts/research/r0823_skeptic_leva.py (127 s, sola lettura, zero rete). Le soglie dei sei
attacchi sono congelate nella sezione (0), scritte PRIMA di guardare le sezioni 2-7.
✅ Replica prima di attaccare — 14 numeri, tutti riprodotti: drift 19,23/17,07% · Sharpe
1,691/1,512 · k* 13,69 e 12,31 (§35 dice 13,7 e 12,3) · g(1,00) 17,90% e g(1,25) 22,61%
esatti · perpetua 7,55/6,38% · muri $263,3k/$311,7k · anni 14,81 contro 14,7 pubblicati.
E l'appaiamento fra k e' provato: max|paths(1,25·r) − 1,25·paths(r)| = 0 ⇒ i confronti fra k
non hanno rumore Monte Carlo.
A1 DRIFT — REGGE, ed e' l'attacco che il mandato riteneva principale. Bootstrap a blocchi (20 g, 4000 estrazioni): SE 5,09% (1,23x l'ingenuo iid — il clustering allarga, ed e' la scelta severa), IC95 [+4,78%, +24,97%]. Il drift di pareggio del gradino e' +1,42%/anno = −2,70 SE = 0,25° percentile: fuori da IC95 e da IC99. Il libro puo' perdere il 90,6% del suo drift e il gradino resta non dannoso. Controllo che non dipende dal modello: il peggior triennio mai realizzato (+5,35%) sta 3,8x sopra la soglia.
A2 SINISTRO — REGGE, con una qualifica misurata. Δg(1,25)>0 in 5/5 finestre giudicabili, 2020-21 tolto compreso (+2,77%). Ma cercando il biennio MOBILE peggiore (non la partizione arbitraria) ne esce uno vero: da 2021-10, drift −0,45%, dove il gradino costa −0,31%/anno. Rapporto guadagno/costo 13:1. 🚨 A parte quel biennio nessuna finestra ha drift negativo → l'attacco nella forma piu' forte non e' esprimibile su questo campione, ed e' esattamente cio' che il mandato temeva: la sostituzione onesta e' A1, che impone il drift invece di cercarlo.
A3 CODA — REGGE, e corregge §33. Hill e' k-sensibile (sweep ξ 0,289→0,672): preso il peggiore, ξ=0,431, piu' severo del 0,34 pubblicato. Peggior giorno strutturale a 1,25x 17,90% < 50%; P(dimezzamento su 10 anni) 0,100%. ⚠️ Correzione: §33 scriveva "la coda muove k* di 1-2 unita'" → ne muove 4,6 (12,31 → 7,71). La conclusione regge (il drift ne muove 6,2) ma il numero pubblicato era ottimista ~3x, e a quella coda k* resta comunque 6x il gradino.
A4 LENTE — REGGE. Sotto la lente accoppiata (minimo intra-giorno −7,32% replicato) il
ricarico del maxDD cala con k: 1,2358 → 1,2297 (1,50x) → 1,2237 (2,00x). E la frequenza del
disaster-SL e' invariante a k per costruzione: want_stop e' un prezzo ancorato al mark,
want_amount una taglia, e il test di ri-piazzamento e' relativo (want_amount*0,1) → il
numero di §40 va moltiplicato, non rifatto.
🚨 A5 INVARIANTE — L'UNICO CHE INCRINA, e sta dove nessuno guardava. Sul percorso fidato
l'invariante e' completo: la leva vera e' n_asset·min(WEIGHT·(W_TP01·lev+W_SKH), frac)·scala,
un limite superiore — 0 violazioni su 576 combinazioni. Ma il percorso fidato non e' l'unico:
nel ramo eq_fallback il denominatore del rapporto e' il watermark (l'ultima equity
osservata), non l'equity. Con un prelievo dell'80% non ancora visto la leva vera e' 5,00x gia' a
k=1,00 e 6,25x a k=1,25, mentre l'invariante legge 1,00x/1,25x.
📌 La scala non apre il buco: lo MOLTIPLICA. ⇒ la guardia G3 della SPEC non e' opzionale,
e la SPEC la presenta come una chiusura mentre non lo e'. Frequenza del ramo 0/1.442 giri, e
li' book_execute allerta e non blocca. Seconda incompletezza: disaster_sl_pct=0,30 e'
trattato come tetto di perdita e §40 ha misurato che non lo e' (stop rotolante: passano −60%
dall'ingresso).
A6 FUNDING — REGGE, e nel verso OPPOSTO all'ipotesi del mandato. Il funding scala con k per
costruzione (r_k = k·(r−f), verificato 1,92% → 2,40%). Il gradino vale +3,49a (muro mobile) /
+2,10a (muro congelato) col funding dentro, contro +2,98a / +1,82a senza: il funding non
riduce il gradino, lo AUMENTA, perche' peggiora il caso base (17,28a contro 14,81a).
⚠️ 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.
| lente | k | drift | perpetua | muro | anni (muro mobile) | anni (muro congelato) |
|---|---|---|---|---|---|---|
| L1 fisco | 1,00 | 17,11% | 7,55% | $263.347 | 14,81a | 14,81a |
| L1 fisco | 1,25 | 21,39% | 9,20% | $216.241 | 11,83a (+2,98) | 13,00a (+1,82) |
| L3 +FUNDING | 1,00 | 15,19% | 6,38% | $311.705 | 17,28a | 17,28a |
| L3 +FUNDING | 1,25 | 18,99% | 7,79% | $255.422 | 13,78a (+3,49) | 15,17a (+2,10) |
🚨 RICONCILIAZIONE: il "+1,8 anni / +€164" pubblicato non era una discrepanza, era una CONVENZIONE NON DICHIARATA. E' la lettura a muro congelato (de-leva al traguardo), riprodotta a 0,02a. §33 non dichiara quale delle due letture usa, e la differenza fra le due (1,2 anni) e' piu' grande di quasi tutti gli effetti che questo progetto misura. E il versamento equivalente misurato direttamente e' +€144/mese, non €164 — la differenza e' l'ipotesi di linearita' dell'interpolazione.
K MASSIMO DIFENDIBILE: 1,40.
| vincolo | k max |
|---|---|
PROCESSO (scaletta SCALA_LADDER) |
1,25 |
| SCETTICO peggior giorno strutturale ≤20% (recupero +25%) | 1,40 |
| PROGETTO disaster-SL ≤50% equity (G6) | 1,67 |
| PROGETTO mezzo-Kelly al limite basso IC95 | 1,92 |
| PROGETTO peggior giorno ≤50% (C1 §33) | 3,49 |
Coi soli vincoli gia' dichiarati dal progetto sarebbe 1,67, e a mordere e' G6 (il disaster-SL), non il peggior giorno. La soglia del 20% e' aggiunta dall'agente ed e' una proposta, non una regola. 🚨 Il 1,50x NON sopravvive: sfonda il 20% (21,48%) e sta al 90% del tetto G6. La scaletta a 1,25 resta giusta: e' l'unico gate che il progetto ha contro un parametro che nessun altro gate vede.
⚠️ Attacchi NON portati, dichiarati: (a) banda d'ancora del guadagno in anni — e' un Δ su griglia ancorata, servivano 23×24 ancore congiunte, fuori dal budget di 2 CPU; il segno non e' in dubbio (positivo a ogni drift dell'IC95), la taglia in anni si', ed e' la stessa distorsione che ha gia' ridimensionato il numero funded da 7,8% a 4,4%; (b) slippage a taglia crescente — §5 ha misurato un fill al 21,9% del volume della sua barra 5m a $635 con partecipazione lineare ⇒ 1,25x lo porta al 27,4% SUBITO, non a $5.000: va misurato prima del gradino; (c) costo di margine sopra 1x — non esiste su un perp lineare marginato in USDC (il carry e' il funding, gia' dentro); (d) coda di venue — vive sul suo asse separato.
VERDETTO: IL GRADINO 1,25x SOPRAVVIVE A CINQUE ATTACCHI SU SEI; IL 1,50x NO; k MASSIMO DIFENDIBILE 1,40 — e l'unica incrinatura non e' nel gradino ma nella guardia che lo
accompagnerebbe.
50 — BOOK-3RD (il terzo sleeve del libro LIVE)
scripts/research/r0823_book_3rd.py. Nessun file di produzione toccato, nessun ordine.
Distingue i due oggetti che il progetto confonde di continuo: il book di RICERCA a 5 sleeve (su
cui sono calcolati quasi tutti i numeri pubblicati) e il LIBRO LIVE a 2 (TP01 75 / SKH01 25),
che non ha mai avuto un terzo sleeve.
Lo stato REALE dei candidati (venue letto ORA, non memoria)
| candidato | su Deribit? | capitale/lotto minimo | netta col libro? | gate |
|---|---|---|---|---|
| STATARB-RESID | SI' | $5 (soglia nostra) | SI' | 27/09 aperto |
| DVOLSPREAD | SI' | $5 (soglia nostra) | SI' | 24/10 kill · 24/01 dec. |
| PREVDAY | SI' | $5 (soglia nostra) | SI' | 🚨 nessuno, mai registrato |
| XS01 (19 gambe) | NO — 5 mancano | 14/19 quotate, 11 da ≥1 anno | parziale | — |
| XS01-D (11 gambe) | SI' (ridotta) | $0,09-7,72 dal venue | parziale | — |
| XSR01 | NO — venue diverso | n/d | NO | 23/10 aperto |
| VRP01 | SI' (ETH) | lotto ETH $242 · BTC $772 | NO | regola short-vol |
| GTAA01 | NO | PRIIPs: ordine RIFIUTATO | NO | — |
📌 Il vincolo che nessuno aveva messo in tabella, letto dal sorgente: book_net_target somma
i due sleeve in UN numero per asset e build_book_order manda UN ordine ⇒ un terzo sleeve
direzionale su BTC/ETH non paga un min-order proprio (misurato: 163 → 344 ordini/anno a $635, ma
il turnover sale solo del 14%) — e per disuguaglianza triangolare |Δ(Σw·p)| ≤ Σw·|Δp|, cioe'
le fee modellate per-sleeve sono un limite SUPERIORE. Il rovescio: non puo' avere un proprio
stop, e uno su strumenti diversi richiede una riga in _CONTRACT = codice su un percorso con
soldi veri.
La misura (1000 estrazioni congiunte, differenze APPAIATE, funding dentro, peso 15%)
✅ Replica di controllo prima di ogni delta: 1,813 / 1,437 / 9,42% riprodotti; replica ancorata bit-exact (max|dif| = 0,0) contro lo sleeve di produzione, idem XS01/VRP01/STATARB.
| candidato | dShFULL | >0 | dShHOLD | d drift | weights_tilt_null |
|---|---|---|---|---|---|
| PREVDAY | +0,192 | 100% | +0,363 | +1,31pp | PASS |
| STATARB | +0,159 | 100% | +0,081 | −0,12pp | PASS |
| VRP01 | +0,121 | 100% | +0,067 | +0,19pp | PASS |
| XS01 (19) | +0,110 | 100% | +0,378 | +0,79pp | PASS |
| DVOLSPREAD | +0,073 | 100% | +0,062 | −1,12pp | PASS |
| XS01-D (11) | −0,024 | 7% | −0,128 | −0,73pp | FAIL |
⚠️ weights_tilt_null passa 25/28, ma il numero da leggere e' frac_random_beat_hold, che
arriva a 0,94: dove vale cosi', "questo candidato migliora l'hold-out" e' un claim generico.
Il gate ha potenza (fallisce su XS01-D), resta necessario e non sufficiente.
Due fatti di venue che contraddicono la memoria
🚨 (1) Il muro del lotto di VRP01 era misurato sulla famiglia SBAGLIATA — inverse, che un conto
USDC non puo' marginare. Sulla USDC-lineare il lotto ETH e' $242 (non $1.832) e il BTC
$772 (non $6.210) ⇒ 1 lotto ETH = peso 12% gia' da ~$2.000. Cade il lotto, non la regola
"niente short-vol da modello in deploy". 5ª occorrenza dello schema fee_watch (un controllo
puntato su una configurazione diversa da quella che gira).
🚨 (2) XS01 non e' bloccato dal capitale, e' bloccato dal VENUE. Deribit quota 14 dei 19
major, ma 3 sono listati fra il 15 e il 21 agosto e APT non ha nemmeno una quota. Sulle 11 con
≥1 anno il meccanismo collassa: Sharpe 1,265 → 0,116. E il null dei sottoinsiemi separa le
cause: sottoinsieme mediano da 11 = 0,548 ⇒ il 62% della caduta e' AMPIEZZA, che il capitale
non compra; quello di Deribit sta al 9° percentile ⇒ il resto e' quali gambe mancano.
Aspettare 2-3 listing non basta.
La scala — e non esiste
📌 Non c'e' una soglia di capitale che ammette un terzo sleeve. Il capitale sposta solo VRP01 (~$2.000 gamba ETH), che e' fermo per una regola. Le due date che contano sono un gate (27/09, costa zero) e la decisione di venue ($20k), che e' cio' che riapre XS01 sulle 19 gambe.
⚠️ Caveat pubblicato dall'agente in testa al verdetto: sono 7 candidati × 4 pesi = 28 configurazioni sullo stesso hold-out, nessuna passata per un deflated-Sharpe di screen → il modo giusto di usare la tabella e' scegliere un candidato per una ragione dichiarata PRIMA, non prendere il massimo di 28.
🚨 IL BUCO PIU' EVIDENTE, ed e' un fatto di processo: PREVDAY. E' il piu' forte misurato
(+0,192 FULL / +0,363 HOLD, 100% delle estrazioni), eseguibile, netta col libro, ADDS,
robust_oos TRUE, forward Sharpe +2,04 su 63 giorni — l'unico monitor risultato sano
dopo l'audit §32 — e sta in forward-monitor da giugno senza gate pre-registrato e senza
deflated-Sharpe. Ogni altro lead del progetto ne ha uno. E' una decisione dell'operatore.
Attesa a priori dichiarata prima di misurare: A1 confermata, A2 meta' giusta, A3 e A4 REFUTATE (STATARB da' +0,159 non <0,10; XS01 non entra a $2-5k ed e' rotto anche a $20k, per venue), A5 confermata al rovescio — la sorpresa e' un candidato dato per NON eseguibile che lo e'.
VERDETTO: SETTE CANDIDATI, SETTE MURI DIVERSI, E NESSUNO DEI SETTE E' UNA SOGLIA DI CAPITALE —
nessuno ammissibile oggi. Libro, pesi, cron, config INVARIATI.