158 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? | in corso |
| 42 | TP01-LS | la gamba short del trend a 1d paga il proprio costo, o e' il 2022? | in corso |
| 43 | DATA-UNUSED | quali dati il progetto possiede e nessuna strategia legge — e uno di essi sostiene un'ipotesi? | in corso |
| 44 | DEPOSIT-TIMING | un calendario di versamento CONDIZIONALE batte il piatto, a pari soldi? | in corso |
| 45 | SPOT-NETTING | separare TP01 e SKH01 su due strumenti: quanto vale, e il margine lo uccide? | in corso |
| 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).