Files

47 KiB
Raw Permalink Blame History

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 BaileyLopez 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,15sotto 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 provatoOPT06 (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).