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