# 2026-07-25 — La lente wick ACCOPPIATA: chiusura del follow-up dichiarato **Script:** `scripts/research/r0725_prop_coupled.py` · **Test:** `tests/test_prop_coupled.py` (13 casi) **Segue:** `2026-07-25-rendita-capcurve-prop.md` §5 (scala prop) e §7 (HyroTrader) **Book / pesi / cron: INVARIATI.** Nessuna decisione di portafoglio dipende da questo lavoro. --- ## 1. Cosa era rimasto aperto, e perché contava La scala di conti funded (§5 del diario di stamattina) era stata giudicata con **due lenti** che differiscono di un **ordine di grandezza** su P(≥50 €/g in 3 anni): | lente | P(≥50/g) | com'era descritta | |---|---|---| | close-only | **20.7%** | tetto ottimista — le regole prop scattano sull'equity intraday, non sulla chiusura | | wick indipendente | **1.6-2.5%** | pavimento pessimista — gap lognormale estratto **indipendente** dal rendimento del giorno | Una banda 1.6%-20.7% non decide niente: è la differenza fra "scommessa a coda destra che vale i 600 euro" e "non vale la pena". E il difetto del pavimento era **già dichiarato** nel docstring: > *«nella realtà i wick profondi stanno sulle giornate brutte (sono ACCOPPIATI): estrarli > indipendenti aggiunge finti tuffi anche nelle giornate buone → breach spuri → stima troppo > severa. Il modo giusto è il bootstrap delle TUPLE (ritorno, gap) come in > r0724_goal50_intraday_mc.py, che però ha il recon solo per TP01+SKH01 → FOLLOW-UP dichiarato.»* Questo lavoro chiude quel follow-up. ## 2. Metodo Tre pezzi, tutti verificati contro qualcosa di indipendente: 1. **Recon per-sleeve a risoluzione oraria.** `r0724` calcola il minimo intraday del book Deribit con i pesi 75/25 **cablati dentro**. Qui i pesi si dividono via per ottenere gli sleeve nudi (ret, wick) di TP01 e SKH01 — così il minimo si compone **esattamente** sul path orario per **qualsiasi** vettore di pesi. Logica invariata: exit-al-livello, SL prioritario, fee. 2. **Lente accoppiata per XS01**, che su Hyperliquid è 1d nativo. L'escursione intraday si ricostruisce dagli **OHLC giornalieri** dei 19 alt: il book si valuta ai 4 checkpoint O / primo estremo / secondo estremo / C, con **ordinamento condiviso** fra le gambe (le alt co-muovono) preso nell'ordine **avverso**. Non è path-exact, ma è **accoppiato al giorno vero**, che è tutto il punto. *Sanity:* il recon riproduce lo sleeve ufficiale con `max|Δ| = 0.0` esatto. 3. **Le tre lenti sulla stessa macchina di simulazione** (close / indipendente / accoppiata), così il confronto non mescola differenze di modello con differenze di lente. --- ## 3. Il risultato principale: la calibrazione era giusta, l'**indipendenza** era l'errore Confronto delle distribuzioni **marginali** del gap (book live TP01/SKH01, 2691 giorni): | | p50 | p90 | p99 | peggiore | |---|---|---|---|---| | **accoppiato (recon)** | −0.17pp | −1.03pp | −2.70pp | −5.96pp | | indipendente (calibrazione 25/07) | −0.17pp | −0.90pp | −3.50pp | — | **Sono quasi identiche.** La calibrazione lognormale di stamattina era buona. Quello che era sbagliato non è *quanto* sono profondi i tuffi, ma **su quali giorni cadono**. ### 3.1 E la dipendenza va nel verso inatteso Mi aspettavo — e lo avevo scritto — che i gap profondi stessero sui giorni brutti. **È il contrario:** | book | giorni | m==R | gap medio | gap \| decile PEGGIORE | gap \| decile MIGLIORE | |---|---|---|---|---|---| | A TP01/SKH01 (live) | 2691 | 26% | −0.38pp | **−0.48pp** | **−1.58pp** | | B +XS01 (diversif.) | 937 | 20% | −0.36pp | −0.39pp | −1.30pp | | TP01 solo | 2691 | 33% | −0.39pp | −0.59pp | −1.57pp | | SKH01 solo | 2691 | 76% | −0.39pp | −0.40pp | −2.97pp | | XS01 solo | 937 | 53% | −0.44pp | −0.22pp | −2.32pp | L'escursione intraday è **~3× più profonda nei giorni che finiscono BENE** che in quelli che finiscono male. Il meccanismo, una volta visto, è ovvio: un giorno brutto **scende tutto il giorno e chiude sul minimo** (`m == R` nel 26% dei giorni: la chiusura *è* il peggio), mentre un recupero a V ha un minimo profondo e una chiusura alta. Il breach però si valuta **sul minimo**. Quindi ciò che conta è quanto gap si aggiunge **nei giorni brutti** — e lì il gap vero è ~1/3 di quello dei giorni buoni. Un'estrazione indipendente usa la stessa distribuzione ovunque, e così **carica i giorni brutti con la coda che nella realtà appartiene ai giorni buoni**. ### 3.2 Quanto costa, misurato sui giorni storici (nessun bootstrap) Frazione di giorni che sfondano la regola di daily-loss: | book | leva | regola | close-only | **ACCOPPIATO** | indipendente | gonfiaggio | |---|---|---|---|---|---|---| | A (live) | 0.75 | daily 4% (HYRO) | 0.00% | 0.21% | 0.40% | **1.9×** | | A (live) | 1.00 | daily 4% (HYRO) | 0.00% | 0.32% | 0.78% | **2.4×** | | B (+XS01) | 0.75 | daily 4% (HYRO) | 0.00% | 0.11% | 0.25% | **2.4×** | | B (+XS01) | 1.00 | daily 5% (FTMO) | 0.00% | 0.11% | 0.31% | **2.9×** | Due letture: - la lente indipendente **raddoppia** i breach da daily-loss (2.0-2.9×); - **close-only non è "leggermente ottimista": è strutturalmente cieca.** Fa `0.00%` su ogni riga — la regola di daily-loss **non scatta mai** sulle chiusure. Non è una lente approssimata, è una lente che non vede affatto quel vincolo. --- ## 4. Tre verifiche — perché un "nessuna differenza" va provato, non assunto ### (1) Risoluzione: l'1h basta? — **sì, misurato** TP01 tiene peso costante nel giorno, quindi il suo minimo intraday si può calcolare **anche a 5m** ed è un confronto pulito: | | p50 | p90 | p99 | peggiore | |---|---|---|---|---| | gamba TP01 @1h | −0.337pp | −1.358pp | −3.056pp | −5.34pp | | gamba TP01 @5m | −0.336pp | −1.366pp | −3.136pp | −5.33pp | Identici. **Il caveat "i wick a 1h sono un tetto, i 5m sarebbero più profondi" — portato avanti dal 24/07 — è quantificato e trascurabile.** L'ora cattura già il minimo del giorno: i 5m aggiungono solo rumore dentro un'ora di minimo già individuata. *Nota di metodo:* entrambe le righe riportavano `n=1865` e la cosa sembrava un errore (stessa serie confrontata due volte). Non lo era: il filtro scarta i giorni in cui TP01 è **flat** (~30%), che sono gli stessi a qualsiasi risoluzione. Verificato prima di accettare il risultato. ### (2) Riconciliazione col 24/07 — **la discrepanza dichiarata è risolta** CLAUDE.md portava un ⚠ aperto: *«Discrepanza col 24/07 (P(vivo) A@0.75x 58% vs 10% mio)»*, con l'ipotesi che fosse un effetto-finestra. **Non era la finestra, era la lente:** | finestra | lente | P(pass) | P(vivo 1a) | E[payout/a] | |---|---|---|---|---| | 2019-03+ FULL | close | 53.8% | 79.7% | $2.085 | | **2019-03+ FULL** | **accoppiato** | 48.1% | **63.2%** | $1.618 | | 2024+ comune | close | 47.0% | 74.8% | $1.632 | | 2024+ comune | accoppiato | 35.6% | 39.4% | $770 | Sulla **stessa finestra piena** del 24/07 (recon MTM indipendente, che dava **58%**) la mia lente accoppiata dà **63.2%** — accordo entro 5pp, con due implementazioni scritte separatamente. Il **10%** del 25/07 era l'artefatto della lente indipendente. La finestra spiega il resto (63.2% full → 39.4% sul 2024+, dove config A è debole). ### (3) Bound severo su XS01 — **non ribalta niente** È XS01 a reggere il vantaggio della config diversificata, e il suo gap dipende da una convenzione (ordinamento condiviso). Girato anche il bound opposto — ogni gamba al **proprio** peggio nello stesso istante, fisicamente impossibile su 10 gambe co-moventi ma utile a delimitare l'errore: | convenzione | gap p90 | peggiore | P(pass) | P(vivo 1a) | E[payout/a] | |---|---|---|---|---|---| | ordine condiviso (base) | −0.86pp | −4.81pp | 42.9% | **76.0%** | $1.144 | | per-gamba (bound severo) | −1.83pp | −15.56pp | 32.3% | **57.6%** | $814 | | *config A, per confronto* | — | — | 35.6% | **39.4%** | $770 | Anche al bound severo **config B resta sopra config A** (57.6% vs 39.4%, $814 vs $770). La conclusione non dipende dalla convenzione. --- ## 5. Cosa cambia nelle decisioni ### 5.1 La raccomandazione HyroTrader si sposta da 0.50x a **0.75x** Config B (book diversificato, +XS01), lente accoppiata, finestra 2024+: | leva | P(pass eval) | P(vivo 1a) | E[payout/a] | **E[payout] su 3 anni** | |---|---|---|---|---| | 0.50x | 28.6% | 99.5% | $412 | ~$1.230 | | **0.75x** | 42.9% | 76.0% | $1.144 | **~$2.674** | | 1.00x | 46.6% | 42.1% | $1.246 | ~$1.992 | Stamattina la scelta era **0.50x**, perché la lente indipendente dava a 0.75x una sopravvivenza del 55%. Con la lente onesta la sopravvivenza a 0.75x è **76%**, e 0.75x **massimizza il payout atteso su 3 anni** — batte 0.50x di 2,2× e 1.00x di 1,3× (a 1.00x la sopravvivenza crolla e l'effetto composto la punisce). L'argomento del 25/07 — *"la sopravvivenza compone su più anni"* — resta valido; è il punto in cui morde che si sposta. ### 5.2 La scala di conti: il ranking regge, i livelli no | lente | leva | MISTO EUR/g med | P(≥10/g) | P(≥50/g) | P(zero) | |---|---|---|---|---|---| | close-only | 1.00x | 11.11 | 50.8% | **22.0%** | 33.9% | | **accoppiata** | **0.75x** | 0.00 | **29.7%** | 5.6% | **52.2%** | | **accoppiata** | **1.00x** | 0.00 | 20.8% | **6.5%** | 65.5% | | indipendente | 1.00x | 0.00 | 5.2% | 1.0% | 81.5% | - **L'ordinamento fra politiche SOPRAVVIVE a tutte e tre le lenti**: MISTO ≥ CONC-DIV > CONC-2SL ≈ SPARSO. L'affermazione di stamattina — *«il confronto fra POLITICHE è robusto: è la stessa lente applicata a tutte»* — è confermata su una lente che allora non esisteva. **CONC-2SL (= il book live attuale su ogni conto) resta la peggiore o penultima ovunque.** - **I livelli si spostano parecchio.** La stima onesta di P(≥50/g) in 3 anni è **~5,6-6,5%**, non 1,6-2,5% e non 20,7%. La scala è **~3-4× più probabile** di quanto diceva il pavimento e **~3,4× meno** di quanto diceva il tetto. - **P(≥10/g) è massima a 0.75x (29,7%)**, non alla leva piena: l'ottimo di leva della scala coincide con quello del conto singolo. - Il prezzo resta alto: **P(bruciare i €600) = 52% a 0.75x, 65% a 1.00x.** ### 5.3 Il verdetto sul goal, ristretto Il 25/07 concludeva: *«una via da €600 a €50/g ESISTE con P ~2-21% in 3 anni e P(bruciare i €600) ~33-78% → scommessa a coda destra, NON una rendita»*. Con la lente onesta la banda si stringe: > **P(≥50 €/g entro 3 anni) ≈ 6%, con P(perdere i €600) ≈ 52-65%.** > Resta una scommessa a coda destra. Ma è una scommessa con una probabilità **conoscibile**, > non un intervallo di un ordine di grandezza. --- ## 6. Cosa NON cambia - **Book, pesi, cron: invariati.** Niente qui tocca il portafoglio. - Il fronte prop **non è aperto**: questo lavoro dice *cosa costerebbe e con quale probabilità*, non che vada fatto. - Resta il caveat di finestra del 25/07: il **2024+** è la finestra in cui XS01 è stato scoperto e affinato → la **taglia** del vantaggio di config B è ottimista; il **meccanismo** (correlazione bassa → meno DD → più sopravvivenza sotto vincolo di DD) è robusto. La verifica (2) qui sopra quantifica per la prima volta quanto pesa la finestra da sola (63.2% → 39.4% su config A). - XS01 resta **STAT-MODE sul capitale proprio** (serve ~$20k). Su un conto funded da $100k è eseguibile: è esattamente l'asimmetria capitale-proprio vs funded del §4 di stamattina. --- ## 7. Lezione da portare avanti > **Un modello di rischio intraday non si valida sulla distribuzione marginale del wick, ma sul suo > ACCOPPIAMENTO al rendimento del giorno.** Qui la marginale era calibrata quasi perfettamente > (p50 −0.17pp identico) e ciò nonostante il modello sbagliava di 2-3× sui breach, perché metteva > i tuffi sui giorni sbagliati. Un test "i percentili del mio wick sintetico coincidono con quelli > del recon" sarebbe **passato**, e la stima sarebbe rimasta sbagliata. Corollario controintuitivo, da ricordare perché è il contrario dell'intuizione: **l'escursione intraday è più profonda nei giorni che chiudono bene**. I giorni che chiudono male chiudono *sul* minimo. Ogni regola valutata sul minimo (daily-loss, trailing DD, stop di conto) va misurata su tuple accoppiate, mai su un wick estratto a parte. Terzo: **close-only non è una lente conservativa, è una lente cieca** per le regole intraday — 0.00% di breach da daily-loss su ogni configurazione testata. Va usata come controllo, mai come stima.