548 lines
49 KiB
Markdown
548 lines
49 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** (gate 2026-12-22) + 1 falsificazione | 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** |
|
||
|
||
## 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** |
|
||
-> **BTC_USDC e' praticamente morto** (5 strumenti liquidi su 686). **Il muro sul BTC RESTA, ma per
|
||
la ragione giusta e meglio misurata: non la taglia del lotto, la LIQUIDITA'.** ETH_USDC (119
|
||
strumenti, ~$250/lotto) e' l'unica gamba che varrebbe la pena raccogliere.
|
||
📌 Sottoprodotto fuori perimetro: esiste un universo opzioni USDC piu' liquido di BTC_USDC —
|
||
SOL_USDC 341, XRP_USDC 250, HYPE_USDC 172, AVAX_USDC 146 strumenti con OI>=100.
|
||
- **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()`.
|
||
🚨 **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.**
|
||
🚨 **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).
|