# CRITICO DI COMPLETEZZA — ondata 2026-08-22 (`r0822b_critic`) **Mandato:** non testare una strategia. Rispondere a *cosa non e' stato guardato, quale affermazione e' rimasta non verificata, e qual e' la misura di maggior valore che nessuno ha fatto*. **Materiale letto per intero:** `docs/research/BRIEF-0822.md`, `docs/research/RESULTS-0822.md` (684 righe, 19 sezioni), `docs/diary/2026-08-22-wave-multiagente.md`, piu' i punti dei singoli `scripts/research/r0822_*.py` dove il ledger andava verificato. **Regola di lettura di questo file.** Distinguo tre stati e li marco: `[VERIFICATO]` = ho aperto la fonte e il fatto e' controllato in questa sessione (comando riportato o citazione esatta) · `[DEDOTTO]` = ragionamento su numeri altrui, non ri-misurato · `[DA MISURARE]` = ipotesi mia, con costo stimato. Non fabbrico numeri nuovi salvo controlli rapidi, e quando ne faccio uno dico che e' un controllo di cinque minuti e non uno studio. **Esito in una riga: l'ondata e' onesta nei singoli filoni e debole nella CUCITURA.** I difetti gravi non stanno dentro i filoni (che hanno catturato 7 errori propri) ma in tre punti dove nessuno era responsabile: (a) **due "difetti di dato" sono convenzioni dichiarate nel sorgente di un fornitore che gira su questa stessa VPS e che nessuno ha aperto**; (b) **il gate principale del progetto — il deflated-Sharpe — e' stato misurato lo stesso giorno ai suoi due estremi degeneri da due agenti diversi, e nessuno ha unito le due misure**; (c) **un filone su venti (ALT-OPTIONS) non e' nel ledger, e il suo risultato falsifica una quarta soglia pubblicata** — quella che tiene VRP01 fuori dal libro per taglia. --- ## 1. CLAIM NON VERIFICATI Ordinati per `(impatto x P(falso)) / costo`. Non elenco tutto: le otto che contano. ### 1.1 — 🥇 «una firm crypto lista i 19 alt Hyperliquid con short abilitato» (PROP-ALLOC) `P(falso)` **media-alta** · `impatto` **massimo** · `costo` **un pomeriggio, zero CPU** E' l'unica assunzione su cui poggia **l'intero risultato di testa dell'ondata**: `+0,400 di J` (argmaxJ 25/25/50 contro il libro live 75/25) e' quasi tutto *mettere XS01 su un conto funded*, e `+0,016` — il 4% — e' il riallocare per la barriera. Se XS01 non e' eseguibile presso la firm, la riga argmaxJ collassa verso `75/25/0`, che nello stesso script misura **J 0,335 / P(pass) 38,6%** invece di **0,738 / 82,2%**. Con essa cade anche il *risultato strategico* del 25/07 §4 («sul canale funded diversificare paga perche' il vincolo binding e' il DD»), che e' il perno di tutta la valutazione del canale prop. ⚠️ **E il progetto ha gia' una regola scritta per questo caso, e non l'ha applicata.** Il 26/07: *«la negoziabilita' sul conto REALE va verificata quando lo sleeve entra in RICERCA, non quando entra nel book»* — regola nata dal blocco PRIIPs su GTAA01, dove **cinque settimane di misure** poggiavano su un'assunzione di conto mai controllata, e il controllo costo' **un ordine di prova**. `r0822_prop_alloc.py` la ripete: alla riga 100 `CRYPTO_PROP = ("TP01","SKH01","XS01") # cio' che una firm CRYPTO puo' davvero far eseguire` — un commento, non una misura. [VERIFICATO: letto il sorgente; l'agente esclude esplicitamente VRP01/GTAA01 *"una firm CRYPTO non lista opzioni Deribit ne' ETF azionari USA"*, quindi ha pensato al problema e si e' fermato un passo prima di XS01.] **Cosa verificare, in ordine:** (a) la lista strumenti di HYROTRADER e FTMO-crypto contiene i 19 major HL (SOL/BNB/XRP/DOGE/AVAX/LINK/LTC/ADA/ARB/OP/SUI/APT/INJ/TIA/SEI/NEAR/AAVE oltre BTC/ETH)? (b) short abilitato su ciascuno? (c) quale costo effettivo per gamba (spread + commissione)? **La (c) ha una soglia gia' misurata in questa stessa ondata**: XS-LITE riporta che la famiglia XS regge **oltre 50 bps/gamba** — quindi il costo di una firm quasi certamente non morde, ed e' la (a)/(b) binaria che decide tutto. **Se (a) e' falsa, il verdetto LEAD del filone 1 va riscritto oggi, non a un gate futuro.** ### 1.2 — 🥈 «`dealer_net_gamma` e' il GEX col SEGNO INVERTITO» (DEALER-GAMMA) `P(falso)` **alta — anzi: FALSO come formulato** · `impatto` medio · `costo` **due minuti** Il ledger lo chiama *«il risultato piu' riusabile del filone»* e scrive: *«Chi lo usasse col nome che porta leggerebbe ogni regime al contrario»*. L'agente ha deciso la questione **per ricostruzione** (corr −0,95 BTC / −0,89 ETH contro un GEX da manuale) e lo dichiara esplicitamente nel proprio codice: `"Quale, lo decide la sezione 2 (ricostruzione dalla catena), non io"` (`r0822_dealer_gamma.py:187`). 🚨 **La fonte autorevole e' su questa VPS e dice il contrario.** [VERIFICATO] La colonna non e' calcolata da cerbero-bite: bite **inoltra e basta** il campo `total_net_dealer_gamma` che riceve dal tool MCP `get_dealer_gamma_profile` (`src/cerbero_bite/runtime/market_snapshot_cycle.py:85` e `clients/deribit.py:342-384`, letti dal repo Gitea `Adriano/Cerbero-Bite`). E il produttore e' `/opt/docker/cerbero-mcp/src/cerbero_mcp/common/options.py`, **acceso adesso**, che in testa al file dichiara la convenzione: ``` # Convention dealer gamma: i dealer sono SHORT calls (le vendono al retail) e # LONG puts. ... Net dealer gamma negativo -> mercato instabile (squeeze ...) ... entry["call_dealer_gamma"] -= contrib # dealer short calls entry["put_dealer_gamma"] += contrib # dealer long puts ``` Cioe': **call negative, put positive** — l'esatta negazione, su entrambe le gambe, della convenzione da manuale che l'agente ha usato (`call +, put −`, `r0822_dealer_gamma.py:237`). **Non e' un difetto della colonna: e' una convenzione opposta, deliberata e documentata** — e nel suo frame `dng < 0` significa *dealer short gamma / mercato instabile*, che e' proprio la semantica che il docstring di bite dichiara e che l'entry filter §2.8 usava. E c'e' una **seconda spiegazione, gratis, per i due numeri residui che l'agente ha attribuito a non-portabilita'**: la chiamata di bite usa il default `top_n_strikes = 50` [VERIFICATO: `dealer_gamma_profile(asset_upper)` senza argomenti], contro i **~280-316 strike** della ricostruzione. Un troncamento ai 50 strike di punta spiega naturalmente sia il coefficiente `−0,7` (invece di `−1,0`) sia l'offset *«dng=0 corrisponde a GEX=+5,8e6 su BTC»*, che il ledger presenta come prova che la soglia non e' portabile. **Cosa cambia se e' falso (ed e' falso):** il verdetto **SCARTATO regge intatto** (DSR 0,440, null de-levering fallito, `n_eff` 24-53 ore su 2.130, cella migliore *sotto* il massimo del rumore). Ma cade la **regola pubblicata**, e cade nel modo peggiore: la frase del ledger *«BTC non separa, ETH separa al ROVESCIO»* e' formulata in un frame di segno che va rovesciato — quindi l'unica riga del filone che le ondate future erediterebbero e' quella sbagliata. **Correzione da fare oggi nel ledger, costo due righe.** ### 1.3 — 🥉 «`liquidation_long/short_risk` e' costante 'low': meta' dell'ipotesi non esiste, ed e' comunque morta perche' la colonna non e' ricostruibile» (FLOW-SQUEEZE) `P(falso)` **alta sulla seconda meta'** · `impatto` medio · `costo` **due ore** [VERIFICATO] Il fatto e' vero (`low` in 17.229/17.229 righe non nulle, riprodotto). Ma le due inferenze che l'agente costruisce sopra il fatto sono entrambe smentibili leggendo la stessa sorgente di §1.2, `/opt/docker/cerbero-mcp/.../sentiment/fetchers.py:480-518`: ``` long_risk = "high" se avg_funding > 0.0001 e delta_24h > 5 "medium" se avg_funding > 0.00005 e delta_24h > 2 ``` Cioe' **e' una soglia su due input, non una misura**. Conseguenze: - *«Nessuna fonte nostra la produce, e non c'e' niente da produrre»* (`r0822_flow_squeeze.py:626`) e' **falso**: i due input sono `oi_delta_pct_24h` e il funding cross, e **il funding cross e' nel file** (`funding_cross_annualized`, copertura 99%), cosi' come `oi_delta_pct_4h` (copertura 99%, dev.std 1,23%, range −7,1%…+13,4% — [VERIFICATO] con una lettura del parquet). L'agente poteva ricostruire la variabile di affollamento **con le proprie soglie**, che e' anche metodologicamente meglio che ereditarne una arbitraria. - *«Costante = zero informazione»* e' vero come statistica e **sbagliato come lettura**: `low` al 100% con quelle soglie significa che **nella finestra 2026-03 → 07 non c'e' stato un solo episodio di affollamento** per quella definizione. Non e' una colonna rotta, e' un fatto di mercato — e per giunta **rafforza** la conclusione del filone (funding chiuso sul quarto lato) molto piu' di quanto faccia «la colonna e' inservibile». **Cosa cambia se e' falso:** il verdetto SCARTATO regge (l'altra meta' e' sotto la propria MDE dichiarata: effetto 0,402% contro MDE 1,056%). Ma il filone e' chiuso con la motivazione sbagliata, e la motivazione sbagliata e' quella che impedisce di riaprirlo con i dati che ci sono. ### 1.4 — «la finestra forward non va persa: riparare `advance()` + RIGENERARE, nessuna data di gate si sposta» (MONITOR-AUDIT) `P(falso)` bassa sul fatto, **alta sull'implicazione** · `impatto` **alto (3 gate)** · `costo` zero Il fatto e' provato bene, due volte in modo indipendente (`paper_prevday` 1427/1488 barre identiche al bit dopo 62 notti; le 6 barre di `paper_statarb` recuperate dopo il guasto EPERM coincidono al bit). **Non contesto il fatto. Contesto che sia gratis.** Una serie **rigenerata** non e' una serie **forward**. La ragione per cui un progetto pre-registra una finestra forward e' che sia prodotta da codice che *non poteva* essere tarato su di essa. Dopo la riparazione, la serie su cui si decide il 27/09 sara' prodotta da codice **scritto oggi, dopo aver visto quella finestra** — e chi scrive la riparazione ha gia' letto, nel ledger, che la metrica registrata dice +1,96 e quella ricostruita −2,02. La riparazione e' banale e meccanicamente forzata (scartare la barra non chiusa), quindi il rischio e' piccolo; ma **e' un grado di liberta' nuovo su un gate pre-registrato, e nessuno lo ha nominato.** **Costo di chiuderlo: zero.** Si scrive la riparazione, la si congela con un test, e **solo dopo** si rigenera — dichiarando in anticipo che nessun parametro verra' toccato in base al risultato della rigenerazione. Farlo dopo aver visto lo Sharpe rigenerato non e' piu' possibile. ### 1.5 — «haircut a $5.000 <= 40%» come gamba del gate XSR01 del 23/10 `P(che il gate sia non-informativo)` **alta** · `impatto` **alto** · `costo` **zero (e' gia' misurato)** Due filoni hanno colpito le due gambe del gate del 23/10 **senza che nessuno tirasse la somma**: - **gamba haircut** — HL-EXEC: a $5.000 col pavimento vero l'haircut sta fra **−7% e +2%**, quindi *«una condizione pre-registrata che non puo' fallire non e' una condizione»*. XSR-REPRO dall'altro lato: il **$14,41** pubblicato **non ha alcuno script committato che lo riproduca** ed e' **~2,4x ottimista** (ticket mediano $3,33, 63% degli ordini sotto $5). - **gamba Sharpe >= 1,0** — MONITOR-AUDIT: la serie che la misura registra **41 minuti di mercato al giorno**, `corr` col replay **−0,045**. 📌 **La somma, che il ledger non fa: al 22/08 il gate del 23/10 e' non-informativo su ENTRAMBE le gambe** — una non puo' fallire, l'altra e' letta su uno strumento scollegato dalla realta'. Il ledger scrive «GATE 23/10 COMPROMESSO: PARZIALMENTE». **E' compromesso interamente**, e la differenza non e' semantica: «parzialmente» autorizza a decidere il 23/10 con una riserva, «interamente» obbliga a **ri-registrare il gate prima**, che e' l'unica mossa che non e' selezione. ### 1.6 — «k* empirico ~10-14x» (GROWTH-POLICY) `P(falso)` **alta come numero** · `impatto` medio-alto · `costo` zero (giunzione di due misure gia' fatte) L'agente ha gia' fatto due autocritiche corrette (capitale mediano $4,4e12 a k=14x → *«a k>2 i numeri sono aritmetica, non previsioni»*; k* lineare nell'errore del drift). Ne manca una terza, e sta **dentro la stessa ondata**: SLIP-AUDIT misura che la partecipazione al nastro scala lineare col nozionale e che il caso peggiore osservato e' gia' **21,9% di una barra 5m** a nozionale ~$636. La leva moltiplica il nozionale esattamente come il capitale. Quindi [DEDOTTO, aritmetica diretta sulla tabella di SLIP-AUDIT]: | leva su $635 | nozionale | peggior partecipazione osservata, riscalata | |---|---|---| | 1,00x | $636 | 22% di una barra 5m | | **1,50x** (il gradino proposto) | $954 | **33%** | | 5x | $3.180 | 110% | | **10-14x** (k*) | $6.400-8.900 | **220-310%** | 📌 **Il gradino 1,00 → 1,50x NON e' toccato da questo** (33% resta dentro il regime misurato): la raccomandazione operativa sopravvive. **E' il numero k\* che non e' misurabile**, per una terza ragione indipendente dalle due dichiarate: sopra ~k=5 la serie di ritorni su cui k\* e' calcolato smette di essere indipendente dalla size, che e' esattamente l'ipotesi che l'agente aveva segnalato come implausibile senza poterla quantificare. **Ora e' quantificata, gratis, e va scritta accanto al 10-14x.** ### 1.7 — «BTC opzioni min 0.1 = $6.210/lotto → VRP01 fuori a $3.000, servirebbe il 61% del conto» `P(falso)` **verificata FALSA** · `impatto` **alto** · `costo` gia' pagato — il numero esiste e non e' nel ledger Questo e' congelato in `tests/test_vrp_profit_take.py` e in CLAUDE.md. VRP-QUOTE-VERE l'ha falsificato a meta' (famiglia sbagliata) e **ALT-OPTIONS l'ha falsificato del tutto** — ma ALT-OPTIONS **non ha una sezione nel ledger** (vedi §5.1), quindi il numero non e' mai stato scritto. [VERIFICATO: letto l'output del filone]: | famiglia | f_venue | credito eseg. | **max-loss / lotto** | IM se il venue NON netta | |---|---|---|---|---| | **ETH_USDC** | **0,980** | $3,38 | **$16,62** | $33,50 | | BTC_USDC | 0,921 | $6,25 | $33,75 | $101,79 | | ETH inverse (la famiglia del muro) | 0,930 | $29,36 | $145,88 | $324,42 | | BTC inverse (la famiglia del muro) | 0,927 | $81,97 | $418,03 | $1.017,06 | Il muro pubblicato e' calcolato sul **nozionale del lotto minimo della famiglia inverse**. La grandezza giusta per una struttura a rischio definito e' il **max-loss**, e sulla famiglia che il conto puo' marginare vale **$16,62**. Al peso di libro del 12%, VRP01 entra con un lotto da un conto di **~$140** (o ~$280 se Deribit non netta le gambe), non da $3.000 al 61% del conto — **due ordini di grandezza**. Sul conto vero ($635) ci stanno **7 strutture dentro un budget di rischio del 20%**, con **3.000 lotti al miglior bid** e spread della gamba corta al **2,6%**. ⚠️ **Cosa NON cambia, e va detto forte:** VRP01 resta fuori dal libro, ma **per la regola «niente short-vol da modello in deploy» e per il gate IV-rank (0/19 settimane aperte)**, non per la taglia. Cade *una* delle tre ragioni, ed e' quella che il progetto ripete piu' spesso. ### 1.8 — «lo screen largo non puo' passare il proprio gate: e' aritmetica» (ORTHO-SCREEN) `P(falso)` **alta come generalizzazione** · `impatto` **alto (tocca 3 gate futuri)** · `costo` **5 minuti** Vedi §2.1: l'ho ri-derivato e il numero e' giusto ma **non dice cio' che il ledger gli fa dire**. --- ## 2. CONTRADDIZIONI FRA AGENTI ### 2.1 — 🚨 IL DEFLATED-SHARPE MISURATO AI SUOI DUE ESTREMI DEGENERI, LO STESSO GIORNO, DA DUE AGENTI CHE NON SI CITANO - **ORTHO-SCREEN**: *«su 168 trial il massimo atteso dal puro rumore e' Sharpe 1,572, sopra il soffitto direzionale (~1,3) → una ricerca a rete larga NON PUO' passare il proprio gate. Non e' sfortuna, e' aritmetica.»* DSR di screen **0,034**. - **SCETTICO su VOL-SIZE**: *«`DSR = 1,000` dichiarato **VACUO, non PASS**: lo passa anche il baseline — su una famiglia di perturbazioni della stessa strategia il deflated-Sharpe non ha potenza.»* **Sono la stessa osservazione dai due lati, e insieme delimitano il gate principale del progetto.** [VERIFICATO] Ho aperto `altlib.deflated_sharpe`: il massimo atteso non e' `SE(Sharpe) x sqrt(2 ln N)` ma la formula Bailey–Lopez de Prado ``` sr0 = sd(Sharpe dei trial OSSERVATI) x [ (1-gamma)*z(1-1/N) + gamma*z(1-1/(N e)) ] ``` cioe' **la dispersione trasversale delle celle che hai deciso di dichiarare**, moltiplicata per un fattore che dipende solo da N. Ricalcolando il moltiplicatore [controllo di cinque minuti]: | N dichiarato | moltiplicatore | `sr0` con la STESSA dispersione (sd = 0,58) | |---|---|---| | 12 | 1,665 | 0,97 | | **24** | 1,980 | **1,15** | | 48 | 2,261 | 1,31 | | 72 | 2,413 | 1,40 | | **168** (lo screen) | 2,708 | **1,57** | | 729 | 3,164 | 1,84 | E al variare della dispersione, a parita' di dati: | dispersione delle celle | `sr0(24)` | `sr0(168)` | |---|---|---| | 0,15 (famiglia di perturbazioni, tipo VOL-SIZE) | 0,30 | 0,41 | | 0,58 (lo screen ortogonale) | 1,15 | 1,57 | 📌 **Tre letture che il ledger non ha:** 1. **La soglia «1,572» non e' una proprieta' di BTC/ETH: e' una proprieta' della GRIGLIA.** Le stesse 168 celle, dichiarate come 7 famiglie da 24, danno `sr0 = 1,15` — **sotto** il soffitto direzionale. Il verdetto «impossibile per aritmetica» si ribalta **senza toccare un dato**. 2. **Percio' la lezione pubblicata invita alla mossa che il progetto ha gia' proibito.** Il ledger conclude *«le ondate future o dichiarano famiglie molto piu' piccole in anticipo, o cambiano meccanismo»*. La prima meta' e' **esattamente** il barare che il 30/07 aveva codificato: *«il deflated-Sharpe e' l'unico posto dove barare e' indolore e invisibile»*, e *«il verdetto si ribalta col conteggio»* (congelato in un test su VRP01: DSR 0,983 a N=8 / 0,948 a N=72 / 0,909 a N=360). **Il 22/08 la stessa leva viene raccomandata come buona pratica.** 3. **Cio' che il progetto non sapeva e' la META' PIU' GRANDE: la dispersione.** Il fattore N va da 1,67 a 3,16 su due ordini di grandezza di trial (1,9x). La dispersione va da 0,15 a 0,58 fra una famiglia omogenea e uno screen (3,9x). **Il gate e' dominato dalla variabile mai dichiarata.** **Conseguenza operativa immediata**, perche' tocca tre gate pre-registrati: DVOLSPREAD 24/10 ha come criterio (c) *«deflated-Sharpe ricalcolato >= 0,95»* — su una famiglia di 729 celle omogenee; XSR01 23/10 poggia su DSR 0,983; VOL-SIZE ha gia' dichiarato il proprio DSR vacuo. **Nessuno dei tre e' interpretabile senza dichiarare, accanto a N, la dispersione delle celle.** Riformulazione onesta della lezione di ORTHO-SCREEN: *con celle disperse di ~0,58 di Sharpe e un soffitto di ~1,3, il gate non separa; la cura non e' dichiarare meno trial, e' progettare famiglie i cui membri siano varianti di UN meccanismo — e li' il DSR e' vacuo, quindi serve un altro gate.* **Il deflated-Sharpe non ha una regione utile in mezzo, e nessuno l'ha detto.** ### 2.2 — Lo Sharpe di XSR01: non tre lenti ma **quattro**, e la quarta non e' nel quadro conciliato Il ledger conclude con un «quadro conciliato»: titolo `demean_skeptic` **1,82** · gate `basket_gate` **1,75-1,79** · monitor `paper_xsr` **2,21**, e prescrive *«NUMERO ONESTO DA CITARE: 1,79 (finestra di scoperta) / 1,63 (a oggi)»*. [VERIFICATO nell'output di XS-LITE] Lo stesso giorno **XS-LITE**, che dichiara replica **bit-exact** contro `basket_from_positions(demean=True)` (`max|diff| = 0,000e+00` su 965 barre), pubblica: *«XSR01 pieno, lente pubblicata: Sharpe **1,64** (pubblicati 1,82)»*, *«normalizzazione COSTANTE 1/50: **1,65**»*, *«sulla FINESTRA DI SCOPERTA (<= 2026-07-25, 937 barre): **1,75**»*. Quindi **due agenti che rivendicano entrambi la replica bit-exact della stessa funzione danno 1,75 e 1,79 sulla stessa finestra.** La spiegazione piu' probabile e' la loro stessa scoperta (l'ultima barra della finestra di scoperta era parziale il 25/07 e oggi e' chiusa), e i due concordano sull'oggi (1,64 vs 1,63). **Ma il ledger prescrive una coppia canonica senza nominare l'altra**, e la regola che pubblica — *«va sempre citata la coppia (lente, ultima barra chiusa)»* — e' proprio quella che avrebbe risolto la discrepanza se applicata a se stessa. **Costo di chiudere: una riga nel ledger. Impatto: e' il numero su cui si decide il 23/10.** ### 2.3 — Il muro di XS01: **tre numeri diversi** nello stesso corpus di documenti - XS-LITE: capitale minimo perche' il ribilancio passi = **$109 di sleeve (~$730 di libro)**. - HL-EXEC: haircut ~0 gia' a **$200-600 allocati** (→ a peso 15%, **$1.300-4.000 di conto**). - Diario §6.5: *«XS01 e' eseguibile a **~$1.300 di conto**»* — cioe' l'estremo basso di HL-EXEC. I tre sono compatibili (criteri diversi: soglia del ribilancio vs soglia dell'haircut), ma il diario ne pubblica **uno** come se fosse *il* numero, dopo che l'ondata ha appena passato una giornata a dimostrare che i numeri pubblicati a un criterio solo sono il difetto ricorrente del progetto. **Da citare come banda `$730-$1.300` col criterio accanto.** ### 2.4 — La leva: due filoni della stessa ondata danno guida opposta - **GROWTH-POLICY**: k\* ~10-14x, il libro gira al 7% di Kelly, **alzare** la leva vale 14,7a → 11,6a. - **PROP-ALLOC**: J massimo a **0,75x**, e *«P(pass) senza limite di tempo e' monotona DECRESCENTE»* (98,9% a 0,50x → 65,9% a 1,50x). Non e' un errore: sono obiettivi diversi (crescita in log senza barriera vs sopravvivenza sotto una barriera per-conto). **Ma nessuno lo scrive**, e l'operatore leggera' due raccomandazioni opposte nello stesso documento. La sintesi che manca, e che riconcilia: 📌 **anche il conto proprio ha una barriera assorbente** — e' la decisione di venue del 26/07 (*«zero e' assorbente: andare a zero all'anno 10 di un piano da 16 anni significa non arrivarci piu'»*). Quindi il criterio di GROWTH-POLICY (Kelly puro) e' il caso limite senza barriera, e PROP-ALLOC misura cosa succede quando la barriera c'e': **la leva ottima cade da 10x a 0,75x appena si mette una barriera, e la distanza fra i due numeri E' la misura di quanto la barriera costa.** Detta cosi', le due misure smettono di contraddirsi e diventano la stessa curva. ### 2.5 — Il peso di SKH01: respinto da un filone, raccomandato al doppio dall'altro - **VOL-SIZE / scettico**: *«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»* — motivo per cui il null giusto e' iso-peso. - **PROP-ALLOC**: sul campione 2019+ che contiene il 2022, l'ottimo della coppia crypto sotto barriera e' **38/62** (J 0,521 contro 0,443), cioe' **SKH01 al 62%**. Di nuovo obiettivi diversi, di nuovo non detto. Ma qui c'e' un aggravante che **l'agente dichiara da solo**: PROP-ALLOC non ha girato la banda d'ancora, quindi il suo ottimo poggia sull'ancora canonica di **SKH01, lo sleeve che il LOO del 26/07 misura come quello con la fortuna d'ancora piu' grande da restituire** (l'ancora regala 2/3 del FULL, 70% dell'hold-out, 80% della protezione DD). **La distorsione e' a favore della raccomandazione, e la raccomandazione riguarda l'unico canale che l'operatore potrebbe aprire quest'anno.** Costo di chiuderla: rigirare l'ottimo su una banda di 8 ancore — l'ordine di grandezza del budget di un agente di questa ondata. ### 2.6 — Il conteggio degli ingressi VRP nella stessa finestra di catena: 19 contro 22 VRP-QUOTE-VERE: *«f = 0,714 pooled, **0/19** osservazioni >= 1,0»*; SKEW: *«0,714 su **22** ingressi»*. Stesso `f` a tre decimali, popolazione diversa. [VERIFICATO che SKEW usa *«stessa macchina di `cblib`»*, quindi **non e' una replica indipendente** e l'accordo a tre decimali non e' evidenza.] Spiegazione benigna probabile (VRP richiede **entrambe** le gambe quotate ai due delta obiettivo, SKEW ricostruisce lo smile e ne richiede meno). **Ma il ledger presenta il 0,714 come «replica indipendente» del f del 30/07 senza dire che il secondo 0,714 viene dallo stesso harness.** Impatto basso, costo di chiarirlo nullo. ### 2.7 — «il collettore raccoglie la famiglia sbagliata» e' una classificazione, non un fatto Il ledger apre VRP-QUOTE-VERE con 🚨 **IL RISULTATO DI PRODUZIONE**. [VERIFICATO in `scripts/live/collect_chain.py:114`: `{"currency": asset, "kind": "option"}` e `OI_MIN = 100.0` alla riga 57 — i due fatti sono esatti.] Ma il collettore serve la **ricerca sui prezzi**, non l'esecuzione: sulle inverse ci sono 415/548 strumenti con OI>=100 e **97% di quote a due lati**, contro il 94% e 119 strumenti di ETH_USDC. Per misurare `f`, IV-rank e struttura a termine, la famiglia raccolta e' **la migliore delle due**. Il difetto esiste solo rispetto a un uso — l'esecuzione — che oggi e' vietato da un'altra regola («niente short-vol da modello in deploy»). Il diario lo corregge a meta' (punto aperto 3 lo presenta come decisione sul rate limit); il ledger no. **Un difetto di produzione e una scelta di raccolta non si segnano con lo stesso simbolo**, o il prossimo che legge ripara qualcosa che non e' rotto — al costo di **+90% sul giro** e del rate-limit per-IP che il 29/07 e' gia' costato un guasto. --- ## 3. MODALITA' NON ESPLORATE Filtro applicato: (a) compatibile con dati che il progetto possiede o puo' ottenere, (b) non nella lista dei filoni morti del brief, (c) meccanismo plausibile e nominabile. Niente idee generiche. ### 3.1 — 🥇 Il costo del CHOP, cioe' il rischio che il libro non ha mai vissuto **Dati:** esistono (7,4 anni di libro; 2018-19 e 2022-23 come stiramenti laterali; 30 anni di equity come stampo). **Meccanismo:** il progetto ha misurato la difesa nel **sinistro** — il criterio B di `edge_watch` e' 8/8 anni di crash superati — e non ha **mai** misurato la modalita' di fallimento propria di un trend-follower, che non e' il crash ma il **mercato laterale**. E la misura di controllo che ho fatto in cinque minuti la rende urgente e non teorica: | giorno | BTC | ETH | **libro 75/25 (close-only)** | |---|---|---|---| | 2020-03-12 | **−41,5%** | **−45,7%** | **+0,97%** | | 2022-06-13 | −15,5% | — | +0,72% | | 2021-05-19 | −14,3% | −27,9% | −1,98% | | 2022-11-09 | −14,4% | −18,0% | 0,00% | | 2021-01-21 | — | −19,5% | −2,24% | [controllo di cinque minuti, non uno studio: `altlib.tp01_baseline_daily()` + `sleeves._skyhook_returns()`, 75/25, ancora canonica. Peggior giorno del libro su 7,4 anni: **−3,38% (2025-10-10)**, che **non e' un giorno di crash**.] Cioe': **il libro non perde nei crolli — nei crolli guadagna.** Tutte le sue peggiori giornate sono altrove. **Nessuno ha mai chiesto dove.** Un piano a 10-20 anni su una strategia il cui unico rischio misurato e' quello che non la tocca ha un buco esattamente della forma che questo progetto e' bravo a trovare in tutto il resto. ### 3.2 — 🥈 Il prezzo di essere ciechi: il costo atteso in P&L dell'attrito OPERATIVO **Dati:** ci sono gia' e sono nostri — `logs/cron_book.log`, `data/venue_watch`, `feed_age_minutes`, `skh_feed_errors`, `book_executions.jsonl`. **Meccanismo:** nel 2026 il libro e' stato cieco o stantio almeno tre volte documentate (feed-freeze 14/07; fallback silenzioso di `fresh_5m` il 29/07, latenza d'uscita di SKH01 da ~1h a **~11h** per 6 giri su 8; manutenzione Deribit del 18/08 sforata **fino alle 14:07**, con astensione del libro). Il progetto ha prezzato fee, slippage, min-order, pavimento IB, fortuna d'ancora, degrado d'esecuzione, e persino **il fallimento dell'exchange** — e non ha **mai** prezzato *quanto costa all'anno che il libro non veda*. E' una misura, non una previsione: si prendono le finestre di cecita' realmente occorse, si guarda cosa ha fatto il prezzo dentro, e si confronta il P&L realizzato col P&L del percorso non-cieco. **Perche' conta adesso:** e' un costo che **scala col nozionale** esattamente come la leva, quindi entra direttamente nel conto di §4; e le uscite di SKH01 sono la gamba latency-sensitive. **Perche' non e' morto:** non e' calendario, non e' un overlay, non e' una strategia — e' il prezzo di un rischio operativo gia' materializzato tre volte. ### 3.3 — 🥉 Lo spread di volatilita' BTC-vs-ETH come sleeve, non come timer **Dati:** `dvol_btc` / `dvol_eth` dal 2021-03 = **1978 giorni, 5,4 anni** — l'unico dataset non direzionale del progetto abbastanza lungo da avere un hold-out vero (a differenza di tutta la catena, ferma a 74-90 giorni). **Meccanismo:** i due asset condividono un fattore di vol comune, e la *ricchezza relativa* delle due vol e' una grandezza stazionaria per costruzione, mentre il livello non lo e'. **Non e' DVOLSPREAD:** quello e' il lead in forward-monitor che usa lo spread come **timer direzionale** (de-risk); qui lo spread si traderebbe **come tale** (straddle lungo su uno, corto sull'altro), market-neutral rispetto alla direzione e — a differenza di VRP01 — con esposizione al premio di vol quasi cancellata fra le due gambe. **Non e' nella lista dei morti** (gamma scalping = long-vol nudo; VRP01 = short-vol nudo gated; questo e' relative-value). ⚠️ **Due muri dichiarati in anticipo:** (i) sarebbe prezzato su DVOL, cioe' BS-flat, e la SKEW di questa ondata ha appena misurato che il flat costa **x0,869 di struttura a termine** e **x0,920 di skew** — quindi il verdetto massimo e' LEAD finche' non e' riprezzato sulla catena vera; (ii) richiede opzioni su entrambi gli asset: fuori a $635 (BTC_USDC ~$780/lotto), dentro a ~$3-5k. ### 3.4 — Il basis dei futures datati come **campione della coda**, non come carry BASIS-CALENDAR ha costruito un dataset che il progetto non aveva — **BTC 34 contratti / 240.150 barre orarie dal 2018-09, ETH 34 / 233.334, piu' 64.110 ore di funding e indice** — e lo ha usato per una sola domanda (il premio incassabile, IC95 che contiene lo zero → SCARTATO). **Il dataset contiene la coda che manca a tutto il resto del progetto**, e il ledger lo dice esplicitamente (*«include il deleveraging 2022 — esattamente la coda che a CC01 mancava per costruzione»*). **Uso non esplorato:** il blow-out del basis e' l'unico marcatore osservabile e datato dei giorni di deleveraging forzato. Condizionare a quei giorni le domande di §3.1 e §4 da' un **campione di stress reale** al posto di uno scenario assunto a mano. ⚠️ **E c'e' un'azione a costo quasi nullo che nessuno ha messo negli aperti:** quel dataset vive in `.../scratchpad/basis_cache/` (**20 MB**, [VERIFICATO]), cioe' in una cartella di sessione che sparisce. E' ricostruibile (30/30 trimestrali rispondono e il metodo — costruire a mano i nomi dei contratti scaduti e chiamare `get_tradingview_chart_data` — e' documentato nello script), ma ricostruirlo costa rete e tempo che ora sono gia' stati spesi. **Persisterlo in `data/raw/fut_*` e' l'unica cosa dell'intera ondata che si perde per non averla scritta.** ### 3.5 — La copertura di coda come **abilitante della leva**, non come miglioramento dello Sharpe **Stato dell'arte nel progetto, dichiarato:** tail hedge *e' gia' stato provato* — `OPT06` (ratio put spread con tail hedge) e `OPT07` (collar) nello sweep del 20/06, entrambi **modellati su DVOL BS-flat** e giudicati **sullo Sharpe**, entrambi bocciati. **Cosa non e' stato fatto:** giudicarlo sull'obiettivo **crescita a leva**. Sono domande diverse perche' il valore di un pavimento e' **convesso nella leva**: a k=1 una put lontana e' un costo secco, a k=k\* e' cio' che rende k\* stimabile. La domanda esatta: *esiste una put a delta basso il cui costo annuo, misurato sulle quote VERE (non su DVOL), sia minore del guadagno di crescita che il pavimento autorizza?* ⚠️ **Prior onesto: sfavorevole.** Il 30/07 ha misurato che l'ala comprata costa **~2,3x il modello** (f_long 2,23, fino a 5,85 sui delta piu' bassi) — quindi la protezione reale e' piu' cara di quella che aveva gia' bocciato OPT06/OPT07. **Ma il confronto non e' mai stato fatto contro la leva**, ed e' l'unico confronto in cui una protezione cara puo' comunque pagare. ⚠️ Eseguibile solo da ~$3-5k (ETH_USDC ~$250/lotto di nozionale): **e' una domanda per il deposito, non per oggi.** ### 3.6 — Il flusso di opzioni (volume per strike), che e' nel dato e nessuno ha guardato La catena registra `volume_24h` **per strumento**, oraria. Sei filoni hanno usato l'**OI** (posizioni accumulate) e **zero** hanno usato il **volume** (transazioni). ALT-OPTIONS ha appena dimostrato che sulle famiglie lineari OI e negoziabilita' sono **anti-correlati (rho di rango −0,77)** — che e' un'ottima ragione per sospettare che le due grandezze dicano cose diverse anche sulle inverse. **Meccanismo:** un'ondata di acquisti concentrata su uno strike e' un fatto di flusso; l'OI e' il suo integrale, e integrare distrugge il segnale di timing. ⚠️ **Muro invalicabile e dichiarato: 74-90 giorni di calendario.** Il verdetto massimo qui e' **LEAD con gate pre-registrato**, e l'onesta' vuole che si dica prima di iniziare, non dopo. La ragione per farlo comunque e' che **il calendario cresce da solo**, gratis, ogni ora. --- ## 4. LA MISURA DI MAGGIOR VALORE MAI FATTA ### La misura **Il peggior giorno che il libro puo' avere, misurato invece che assunto: la distribuzione della perdita giornaliera CONDIZIONATA all'esposizione piena, sotto la lente wick accoppiata, con lo scenario di gap attraverso il disaster-SL.** ### Perche' questa Perche' e' **l'unico parametro che blocca la sola leva gratuita che l'ondata abbia trovato**, e perche' oggi quel parametro e' **un numero scelto a mano**. GROWTH-POLICY ha stabilito che il gradino eseguibile `1,00x → 1,25-1,50x` vale **14,7 anni → 12,9-11,6 anni** al capitale-rendita (a €500/mese, netto fisco). Lo scettico ha tolto una delle tre riserve (il wick non amplifica il maxDD: ricarico costante ~3,5%). Delle due rimaste, **una non e' risolvibile** (il drift stimato su 7,4 anni — e comunque k\* resta 7x a −2 SE, quindi 1,5x sta al 21% di k\*) e **una lo e': la coda.** E' la riserva che decide, perche' e' l'unica che porta k\* **sotto** il gradino proposto: *«un solo giorno −10% all'anno porta k\* da ~10x a 2x, −15%/anno a 1x»*. 📌 **Quel −10% non e' stato misurato: e' stato scelto.** E il controllo di cinque minuti in §3.1 dice che potrebbe essere **una coda da buy&hold importata dentro un libro difensivo**: sui cinque peggiori giorni di BTC e i cinque di ETH in 7,4 anni — compreso 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 e' **−3,38%** in una data che non e' un crash. Se il vero peggior giorno plausibile e' −5% e non −10%, k\* non e' 2x e **il gradino e' autorizzato**. ⚠️ **Ma il mio controllo e' close-only, cioe' proprio la lente che questa ondata ha appena dichiarato "esattamente cieca" sulle regole a UN giorno** (rapporto acc./close = INF a soglia 5%). Quindi **la misura vera non e' quella che ho fatto**: e' la stessa domanda sotto `r0725_prop_coupled` (tuple accoppiate, minimo intra-giorno) piu' lo scenario che il dataset non contiene — un gap notturno che attraversa il disaster-SL −30% con posizione piena su entrambe le gambe. Tutta la macchineria esiste gia' (`r0725_prop_coupled`, `r0822_leverage_skeptic`), il campione di stress si puo' prendere dal dataset dei futures datati di §3.4, e il costo e' **un agente di questa ondata**. ### Confronto esplicito con le leve gia' quantificate | leva | valore | costo | stato | |---|---|---|---| | versare €250/mese invece di €0 | da **mai** a 19,8a (P 52% netto fisco) | €250/mese | decisa dall'operatore | | versare €500 invece di €250 | 19,8a → **14,7a** | €250/mese in piu' | decisa dall'operatore | | **leva 1,00x → 1,50x** | **14,7a → 11,6a** | **zero** | **bloccata da UN parametro assunto** | | riallocare per la barriera (prop) | +0,016 di J = **il 4%** | analisi | misurata, marginale | | XS01 su conto funded | +0,400 di J | **assunzione non verificata (§1.1)** | LEAD | | ottimizzare il peso di SKH01 | **+0,030 di Sharpe** | analisi | gate fallito, plateau | | rischio venue a p=5% | capitale mediano → **zero** | split di conto | decisa: 100% Deribit fino a $20k | 📌 **Il gradino di leva vale ~3,1 anni, cioe' l'equivalente di ~€300/mese di versamenti, a costo zero.** E' la prima volta in due mesi che una misura di ricerca entra nell'ordine di grandezza della leva dei versamenti, e ci entra perche' **non e' ricerca di alpha: e' un cambio di scala di cio' che gia' funziona.** Vale **100x** l'ottimizzazione del peso di SKH01 e **25x** il riallocare per la barriera. ### E adesso la parte che il mandato chiede di dire se e' vera **Sì: nessuna misura di ricerca di questa ondata batte "versare".** Venti filoni, ~15.300 righe, **zero candidati promossi**; il soffitto direzionale e' stato riconfermato per via aritmetica; e per **tre volte** l'eseguibilita' a $600 non e' stata il vincolo binding — tutto e' morto sull'**edge**. La misura che propongo **non e' un'eccezione a questo, ne e' la conferma**: non cerca un rendimento nuovo, **prezza un parametro di rischio per poter usare meglio quello che c'e'**. E anche cosi', 3,1 anni sono **meno** di cio' che valgono €250/mese di differenza nei versamenti. **La seconda misura, e va detta insieme alla prima perche' costa ancora meno:** la verifica di §1.1 (i 19 alt HL sono listati e shortabili presso la firm?). Non e' ricerca, e' **un pomeriggio di lettura sul sito di due firm** — e decide se il canale prop, l'unico che moltiplica il nozionale senza possedere capitale, vale J 0,738 o J 0,335. **Il progetto ha gia' pagato una volta il prezzo di non fare questa verifica** (GTAA01/PRIIPs, cinque settimane di misure su un ETF che il broker rifiuta di vendere) e ha scritto la regola per non ripeterlo. **Farla prima di aprire un altro filone prop e' la cosa piu' economica che ci sia in questo elenco.** **In una riga:** *misurare la coda invece di assumerla* e' la ricerca che vale di piu' (3,1 anni, gratis); *leggere il listino di una prop firm* e' la verifica che vale di piu' (un canale intero, un pomeriggio); e **nessuna delle due batte i versamenti**, che restano il vincolo binding come il 26/07 aveva gia' stabilito. --- ## 5. AUTOCRITICA DELL'ONDATA ### 5.1 — 🚨 Un filone su venti non e' nel ledger, ed e' quello con il risultato eseguibile oggi **ALT-OPTIONS (filone 14, `r0822_alt_options.py`, 709 righe) non ha ne' una riga di tabella ne' una sezione in `RESULTS-0822.md`.** [VERIFICATO: 19 sezioni `###`, 18 righe di tabella, nessuna per il 14 — e la tabella ha anche un difetto di markdown che **fonde le righe 9 e 4 su una sola linea** (`... = TP01 travestito || 4 | DEALER-GAMMA | ...`).] Il filone e' citato **due volte** da un altro filone (*«vedi filone 14»*, *«ETH_USDC resta la gamba giusta ... (filone 14)»*) e serve al coordinatore per **ritirare una propria inferenza sbagliata** sull'OI — ma il lettore non trova la fonte da nessuna parte. Nel diario compare come **due parole** dentro l'elenco dei morti: *«alt-options (alt)»*. **La sintesi e' sbagliata due volte:** il filone non muore «perche' alt» (la sua conclusione e' che **SOL/XRP/HYPE/AVAX sono i peggiori**: SOL_USDC ha il **9%** dei put quotati a due lati e `f_venue` **negativo**), e cio' che trova e' che **ETH_USDC** — non un alt — e' la gamba con `f_venue = 0,980`, spread della corta al **2,6%**, **max-loss $16,62/lotto** e **3.000 lotti al best bid**. Cioe' §1.7: **la quarta soglia pubblicata falsificata dall'ondata**, quella che tiene VRP01 fuori per taglia — e il diario ne annuncia **tre**. **Lezione:** il ledger e' stato scritto *man mano* (lo dice la sua prima riga) e un filone che finisce mentre si scrive la sintesi puo' sparire senza che nulla lo segnali. Serve una guardia banale: **contare i file `r0822_*.py` e le sezioni del ledger, e non chiudere l'ondata se non combaciano.** E' lo stesso principio che l'ondata ha appena raccomandato per i monitor. ### 5.2 — Il gate `implausible_sharpe` non e' stato girato dove serviva, per la seconda volta MONITOR-AUDIT lo osserva bene: *«`implausible_sharpe` esiste dal 26/07 e non e' mai stato puntato sulle serie forward»* (avrebbe segnalato Sharpe −15,8 su 28 barre). Ma la stessa mancanza si ripete **dentro l'ondata**: il gate non compare in PROP-ALLOC (dove J e P(pass) sono costruiti su percorsi bootstrap, non su una serie reale — legittimo, ma va dichiarato) ne' in GROWTH-POLICY, il cui output include un **capitale mediano di $4,4e12** — che e' letteralmente la firma per cui il gate e' stato scritto. L'agente ha fatto il controllo di plausibilita' **a mano** e l'ha riportato con onesta'; **il gate del progetto non e' stato invocato.** Un gate che si applica a mano e' un gate che un giorno non si applichera'. ### 5.3 — Due «difetti di dato» diagnosticati per ricostruzione con la sorgente a due minuti di distanza E' il tema di §1.2 e §1.3, e vale come **critica di metodo dell'ondata**, non dei due agenti. Il progetto ha codificato il 07/08: *«una fonte normativa citata in un commento di codice si verifica come un numero»* — nata da una legge citata male in 5 file per settimane. Il 22/08 due filoni dichiarano un difetto in un dato prodotto da `/opt/docker/cerbero-mcp` (**acceso, sulla stessa macchina, e per giunta gia' usato da PythagorasGoal per Hyperliquid**) e da `Adriano/Cerbero-Bite` (su Gitea, ultimo commit di dismissione), **senza aprire ne' l'uno ne' l'altro**. Io li ho aperti entrambi in **meno di dieci minuti**. Il brief e' complice: elenca le dieci trappole statistiche e **non dice «prima di dichiarare un difetto di dato, leggi il codice che quel dato lo produce»**. E' la regola nuova piu' economica che questa ondata possa lasciare. ### 5.4 — Il coordinatore ha lasciato passare una conclusione debole, e ne ha corretta una propria **Corretta (a merito):** l'inferenza *«BTC_USDC e' praticamente morto»*, ritirata dopo la misura di ALT-OPTIONS, con la ragione scritta accanto. E' il comportamento giusto. **Lasciata passare:** la lezione di ORTHO-SCREEN (§2.1). E' etichettata *«il risultato piu' riusabile dell'ondata»* e *«non e' sfortuna, e' aritmetica»* — due formule che chiudono la discussione — mentre la sua meta' operativa (*«dichiarare famiglie molto piu' piccole in anticipo»*) e' **la manovra che il progetto ha proibito il 30/07** e la sua meta' quantitativa dipende da una variabile (la dispersione delle celle) **mai nominata**. Il segnale che avrebbe dovuto fermarla c'era ed era **nello stesso ledger, sette sezioni piu' avanti**: il DSR vacuo di VOL-SIZE. **Due misure dello stesso gate, versi opposti, stesso giorno, nessun rimando.** La sintesi di venti filoni ha un compito che nessun filone ha: **incrociare**. Qui non l'ha fatto, e non l'ha fatto neanche su §2.4 (leva), §2.5 (peso SKH01), §1.5 (le due gambe del gate 23/10) e §1.6 (k\* contro la partecipazione al nastro) — **cinque incroci disponibili a costo zero, tutti fra coppie di filoni gia' consegnati.** ### 5.5 — Agenti che hanno dichiarato «non girabile» cio' che era girabile - **FLOW-SQUEEZE**: *«liquidation_long/short: NO ... Nessuna fonte nostra la produce, e non c'e' niente da produrre»*. I due input della regola sono **nel file** (§1.3). Costo del mancato lavoro: ~due ore. Il verdetto non sarebbe cambiato; la **motivazione** si'. - **DEALER-GAMMA**: *«Quale [convenzione], lo decide la sezione 2 (ricostruzione dalla catena), non io»* — decidibile leggendo, in due minuti (§1.2). - **PROP-ALLOC**: la banda d'ancora dichiarata *«non girata, fuori budget»*. Onesto, e la distorsione e' dichiarata a proprio sfavore. **Ma e' l'unica distorsione dichiarata che punta nella direzione della raccomandazione**, sull'unico filone che raccomanda qualcosa: dovrebbe essere il primo pezzo di budget di un seguito, non l'ultimo. - **TERM-STRUCTURE**: *«`deflated_sharpe` NON girato, e la motivazione e' il risultato»* — questo invece e' **corretto e da imitare**: con 74 osservazioni l'incertezza di campione domina di un ordine di grandezza quella da selezione, e deflazionare 312 trial avrebbe dato *«un numero preciso e privo di senso»*. **E' anche la migliore descrizione, scritta senza saperlo, del problema di §2.1.** ### 5.6 — Cosa l'ondata ha fatto meglio della media del progetto (perche' un'autocritica che elenca solo difetti non e' calibrata) Sette agenti hanno catturato un **errore proprio** prima di pubblicare; tre hanno **refutato una propria ipotesi in corsa**; uno scettico ha **ritirato una regola pubblicata poche ore prima** provando che il difetto non esisteva — e la regola ritirata era **sua di famiglia**. Quattro filoni hanno dichiarato la **potenza prima di guardare** (OI-PIN, FLOW-SQUEEZE, SLIP-AUDIT, VOL-SIZE) e in tre casi il candidato e' morto **contro la propria soglia dichiarata**, che e' il modo piu' pulito di morire. Le repliche **bit-exact prima di ogni delta** sono ormai sistematiche (5/5 in XS-LITE e HL-EXEC, `max|diff| = 0,0`). **Il metodo dei singoli filoni non e' il problema di questa ondata: la cucitura lo e'.** --- ## Appendice — cosa ho verificato in questa sessione, e come | # | fatto | come | |---|---|---| | A | `dealer_net_gamma` = convenzione **dichiarata** (dealer short calls / long puts) nel sorgente di `cerbero-mcp`, non un difetto | letto `/opt/docker/cerbero-mcp/src/cerbero_mcp/common/options.py:11-14, 138-140` | | B | bite **inoltra** il campo e non lo calcola; chiama con `top_n_strikes=50` di default | clone `Adriano/Cerbero-Bite`, `runtime/market_snapshot_cycle.py:85`, `clients/deribit.py:342-384` | | C | `liquidation_*_risk` = soglia su `oi_delta_24h` + funding, e **i due input sono nel parquet** (copertura 99%, `oi_delta_pct_4h` std 1,23%) | `sentiment/fetchers.py:480-518` + lettura di `cb_market_snapshots.parquet` | | D | `sr0` del DSR = `sd(Sharpe dei trial) x mult(N)`; con sd=0,58, `sr0` passa da **1,57 (N=168)** a **1,15 (N=24)** | letto `altlib.deflated_sharpe:689-712`, moltiplicatori ricalcolati | | E | il libro 75/25 fa **+0,97%** il 12/03/2020 (BTC −41,5%, ETH −45,7%); peggior giorno **−3,38%**, non un crash | `altlib.tp01_baseline_daily()` + `sleeves._skyhook_returns()`, close-only | | F | `collect_chain.py` interroga `{"currency": asset}` e filtra `OI_MIN = 100.0` | `scripts/live/collect_chain.py:57, 114, 181` | | G | il feed certificato e' `BTC/USD:BTC` (**inverse**), il libro esegue `BTC_USDC-PERPETUAL` (**lineare**) | `rebuild_history.DERIBIT_INSTR:48` vs `src/live/deribit.INSTRUMENT:110` | | H | ALT-OPTIONS: ETH_USDC `f_venue` 0,980 / max-loss **$16,62** / 7 strutture al 20% di $635 | output del filone in scratchpad | | I | il dataset dei futures datati (**20 MB**) vive solo in `scratchpad/basis_cache/` | `du -sh` | | J | `RESULTS-0822.md`: 19 sezioni, 18 righe di tabella, **filone 14 assente**, righe 9 e 4 fuse | conteggio diretto | ⚠️ **Su (G):** e' un fatto, non un'accusa. `rebuild_history` lo dichiara in un commento (*«inverse, storia lunga ~ lineare entro 3 bps»*) e SLIP-AUDIT ha misurato la base ai 18 fill (BTC −0,03 bps, ETH −0,27) — trascurabile sui **ritorni**, che dipendono dalle *variazioni* della base. Lo segno solo perche' e' la **5ª occorrenza nell'ondata** dello schema «un controllo puntato su uno strumento diverso da quello che si trada» (dopo `fee_watch` 21/08, il collettore della catena, il feed dello slippage e la taratura di `venue_watch`), e perche' la parte non verificata di quel commento — *«~ lineare entro 3 bps»* su **tutta la storia** — non e' mai stata misurata: esiste una misura su 18 istanti, non sulle 60.000 ore in cui entrambi gli strumenti esistono. Costo di chiuderla: un'ora. --- **Book, pesi, cron, config: questo filone non tocca niente.** Consegna un'analisi. Le uniche azioni che raccomanda sono a costo quasi nullo e tutte su documenti o verifiche: correggere §1.2 nel ledger, aggiungere la sezione mancante di §5.1, dichiarare la dispersione accanto a ogni DSR (§2.1), ri-registrare il gate del 23/10 prima di rigenerare le serie (§1.4-1.5), persistere il dataset dei futures (§3.4), e leggere il listino di una prop firm prima di misurare un'altra volta il canale che ne dipende (§1.1).