Files
PythagorasGoal/docs/diary/2026-07-25-rendita-capcurve-prop.md
T
Adriano Dal Pastro 607cd94ecd fix(gtaa): costo IB reale (pavimento fisso) + esecuzione a banda — lo sleeve era cieco al capitale
DIFETTO. src/portfolio/gtaa.py modellava il costo come 2bps PROPORZIONALI e il modulo si
dichiarava "eseguibile a basso capitale, switch mensile/basso turnover". Entrambe false:
il vol-target e' CONTINUO (l'esposizione cambia ogni giorno, su 6 gambe) e IB non ha una
fee proporzionale ma un PAVIMENTO FISSO per ordine, min(max($0.35, $0.0035/az), 1% del
controvalore) = ~$530/anno indipendenti dal capitale.

Il modello vecchio era quindi CIECO AL CAPITALE: dava Sharpe 0.64 sia a $50.000 sia a $600.
Alla taglia grande era sostanzialmente giusto (0.64 vs 0.59-0.66 reali); a $600 la realta'
e' -0.55 di Sharpe e -3.5%/anno di CAGR. L'errore era tutto concentrato dove lo sleeve
verrebbe realmente deployato.

FIX. Il modulo ora:
  * modella la commissione IB reale (ib_commission);
  * esegue a BANDA + CADENZA (settimanale, $50/gamba) — config scelta sul PLATEAU del sweep
    (weekly/monthly x banda 25-100 -> Sh 0.45-0.64 a ogni capitale), non sull'argmax
    in-sample (banda $50 daily a $600 = cella isolata che crolla a banda 100);
  * prende il CAPITALE allocato come parametro: gtaa_returns(capital=...);
  * dichiara la soglia di deployabilita': GTAA_MIN_CAPITAL=$3.000 + gtaa_is_deployable();
  * espone gtaa_rebalance_plan(held, capital) per l'esecutore — salta le gambe il cui
    nozionale non supera la banda (un ordine da $12 costa $0.35 = 2.9%).
sleeves.py dichiara esplicitamente il capitale assunto (GTAA_DEFAULT_CAPITAL=$10.000 allocati
= book ~$50k al peso 20%) invece di nasconderlo.

IMPATTO SUL BOOK (misurato sostituendo la sola gamba GTAA, non citato):
  GTAA01 standalone  Sh 0.64 -> 0.61   CAGR 3.76% -> 3.65%
  book 5 sleeve      FULL 2.22 -> 2.22  HOLD 2.36 -> 2.38  maxDD 6.2% -> 6.0%
Trascurabile alla taglia assunta: il fix conta per il DEPLOY (a $600-2k passa da -3.5%/anno
a +3.0%/anno). PESI INVARIATI -> nessun weights_tilt_null richiesto.

CORREZIONE A UN ERRORE DI ANALISI DELLA SESSIONE. Il diario citava il modello vecchio a
"Sharpe 0.77 / CAGR 5.5%": artefatto di annualizzazione: la serie GTAA grezza ha ~252 barre
/anno (soli giorni di borsa) e metrics() annualizza a 365 con years=n/365.25 -> Sharpe x1.20
e CAGR x1.45. Le righe per-capitale erano gia' su calendario 365, quindi era falsata solo la
riga di riferimento. Corretti diario, CLAUDE.md e r0725_capcurve.py.
LEZIONE: una serie su giorni di borsa non si passa a metrics() senza to_daily().

Test: 221 pass (+4 in tests/test_gtaa_sleeve.py: pavimento non proporzionale, dipendenza dal
capitale + soglia, senza-banda-e-distruttivo, piano che salta le gambe sotto banda).
Smoke: scripts/live/paper_combo.py gira invariato.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 17:25:06 +00:00

409 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-07-25 — Rendita passiva: la curva capitale→book, il muro vero, e l'asimmetria del funded
**Contesto.** Goal: "altra sessione di ricerca per arrivare allo scopo (rendita passiva, 50 EUR/g),
i 600 euro si possono usare come si vuole". La roadmap del 24/07 aveva già chiuso i *canali*
(prop / vault / copy / legale). Questa ondata attacca i due punti che quella roadmap **assumeva**
invece di calcolare: (a) il tasso di crescita del book è preso come **CAGR fisso 15%**, (b) il
capitale-rendita è calcolato come **target/CAGR**, cioè ignorando il rischio di sequenza.
Entrambe le assunzioni sono risultate sbagliate, e nella stessa direzione: ottimista.
Script: `scripts/research/r0725_capcurve.py`, `scripts/research/r0725_prop_config.py`.
Test: `tests/test_capcurve.py` (10 casi). **Book live, pesi e config: INVARIATI.**
---
## 1) Difetto di eseguibilità su GTAA01 — il 5° sleeve del book attivo
`src/portfolio/gtaa.py` modella il costo come **2bps proporzionali** e lo sleeve è documentato
come *"eseguibile su IB a basso capitale (ETF frazionabili, switch mensile/basso turnover)"*.
Entrambe le cose sono false come codificate:
- il segnale è un vol-target **continuo**: l'esposizione cambia **ogni giorno** su **6 gambe**;
- IB non ha una fee proporzionale ma un **pavimento FISSO per ordine**:
`min(max($0.35, $0.0035/azione), 1% del controvalore)` → ~**$530/anno di commissioni
indipendenti dal capitale**.
| capitale allocato a GTAA | CAGR reale | Sharpe reale | drag commissioni |
|---|---|---|---|
| $600 | **3.5%** | **0.55** | 7.2%/anno |
| $2.000 | 0.7% | 0.09 | 4.4%/anno |
| $5.000 | +1.5% | 0.28 | 2.2%/anno |
| $50.000 | +3.4% | 0.59 | 0.2%/anno |
| *modello vecchio (2bps propor.)* | *+3.8%* | *0.64* | — |
⚠️ **Correzione a un errore MIO, trovata implementando il fix.** La prima stesura di questa
sezione citava il modello vecchio a *Sharpe 0.77 / CAGR 5.5%*: era un **artefatto di
annualizzazione** del mio script di analisi — metricavo la serie GTAA grezza (solo giorni di
borsa, ~252/anno) con `metrics()`, che annualizza a 365 e calcola `years = n/365.25` → Sharpe
gonfiato di √(365/252) = 1.20× e CAGR di ~1.45×. Le righe per-capitale erano già su calendario
365 (reindex + weekend a zero), quindi **il confronto era falsato solo sulla riga di riferimento**.
Valore corretto del modello vecchio: **0.64 / 3.8%**.
**La formulazione giusta del difetto cambia di conseguenza.** Non è "il modello sovrastimava lo
Sharpe di 0.13": alla taglia grande il modello vecchio era sostanzialmente **giusto** (0.64 contro
0.59-0.66 reali). Il difetto è che era **CIECO AL CAPITALE** — dava 0.64 sia a $50.000 sia a $600,
mentre a $600 la realtà è **0.55**. Un modello di costo proporzionale non può descrivere un
pavimento fisso, e l'errore è tutto concentrato dove lo sleeve verrebbe realmente deployato.
**La banda lo salva.** Con costo fisso la banda ottimale non è il minimo eseguibile (come su
Deribit) ma un valore molto più alto. Plateau robusto = **cadenza settimanale × banda $25-100**
→ Sharpe 0.45-0.64 a *ogni* capitale; a $600 la config scelta sul plateau (banda $50, weekly)
**Sh 0.52 / CAGR 3.0%** invece di 0.55/3.5%. (La cella argmax a $600 era banda $50 *daily*
a 0.57, ma è isolata — crolla a 0.28 a banda 100 → scartata: il parametro è di costo, si sceglie
sul plateau, non sull'argmax in-sample.)
**Conseguenza operativa: CABLATO** (stessa sessione, `src/portfolio/gtaa.py`). Il modulo ora
modella il costo IB reale (`ib_commission`), esegue a **banda + cadenza** (settimanale, $50/gamba),
prende il **capitale allocato** come parametro (`gtaa_returns(capital=...)`), dichiara la soglia
di deployabilità (`GTAA_MIN_CAPITAL = $3.000`, `gtaa_is_deployable`) ed espone
**`gtaa_rebalance_plan(held, capital)`** — il piano che l'esecutore deve usare per non ribilanciare
ogni giorno per pochi dollari. `sleeves.py` dichiara esplicitamente il capitale assunto
(`GTAA_DEFAULT_CAPITAL = $10.000` allocati ≈ book $50k al peso 20%) invece di nasconderlo.
**Impatto sul book, misurato prima/dopo** (non citato: ricalcolato sostituendo la sola gamba GTAA):
| | GTAA01 standalone | book 5 sleeve FULL | HOLD | maxDD |
|---|---|---|---|---|
| prima (2bps, continuo) | Sh 0.64 / CAGR 3.76% | 2.22 | 2.36 | 6.2% |
| dopo (IB reale + banda) | Sh 0.61 / CAGR 3.65% | 2.22 | **2.38** | **6.0%** |
Alla taglia assunta l'impatto sul book è **trascurabile** — il fix non è cosmetico per i numeri
storici, lo è per il **deploy**: è a $600-2.000 che cambia tutto (da 3.5%/anno a +3.0%/anno).
Pesi **invariati** (nessun cambio pesi → nessun `weights_tilt_null` richiesto).
**Regola nuova (generale): il costo di un venue va modellato nella sua FORMA — fisso vs
proporzionale — non solo nel suo livello.** Due venue con lo stesso "costo medio" danno
risultati **opposti** al variare del capitale: la fee proporzionale è neutrale alla taglia, il
pavimento fisso è una tassa regressiva che si mangia i piccoli. Ogni sleeve nuovo va incrociato
col modello di costo del suo venue *prima* di dichiararlo eseguibile.
**Controprova su Deribit (fee proporzionale, nessun pavimento):** lo Sharpe realistico di TP01
coincide col modellato da ~$500 in su (1.29 a $1k = 1.29 a $50k) → conferma indipendente della
lezione già a libro *"a $600 il min-order $5 è già la banda ottimale"*.
---
## 2) La rendita NON è `capitale × CAGR` — il muro del 24/07 era ottimista di 2-4×
Una rendita passiva si preleva **mentre** il book è in drawdown: è rischio di sequenza, e
`target/CAGR` non lo vede. Calcolato col bootstrap a blocchi (20g) dei ritorni **reali** del book
(TP01 75 / SKH01 25, SKH01 sul **path live** orario, non sul backtest):
| lente | Sharpe | CAGR | SWR 20a (95% sopravv.) | **rendita perpetua** | capitale per 50 EUR/g |
|---|---|---|---|---|---|
| modellato (backtest) | 1.75 | 20.5% | 13.10% | 13.57% | $219k |
| path live | 1.64 | 19.7% | 12.48% | 12.78% | $232k |
| **path live de-luck ×0.6** | **0.98** | **11.1%** | **7.31%** | **5.98%** | **$497k** |
*"Rendita perpetua"* = prelievo massimo con **P(capitale a 20 anni ≥ capitale iniziale) ≥ 90%**.
È il criterio giusto: "sopravvivere 20 anni" non è una rendita, è un piano di consumo del capitale.
**Il muro vero per 50 EUR/g perpetui è $300k-$500k**, non i €122k del diario 24/07. L'errore si
componeva di due fattori nella stessa direzione: (a) `capital×CAGR` ignora la sequenza (45%
circa sul tasso), (b) CAGR 15% invece del de-luckato 11%.
⚠️ **Sul de-luck, onestà metodologica:** il ×0.6 sul drift è la convenzione ereditata dal 24/07,
ma qui è applicato **sopra** il path live orario, che *già* incorpora la degradazione di SKH01
(fill al livello → fill orario). C'è quindi un rischio concreto di **doppio conteggio** della
stessa penalità. Il muro va perciò letto come una **banda**, non come un punto:
**$232k (path live, nessun de-luck ulteriore) — $497k (path live + de-luck ×0.6)**, con la stima
centrale ragionevolmente attorno a **$300-400k**. Ciò che NON dipende dal de-luck è il risultato
strutturale: la rendita perpetua vale ~**45-55% del CAGR**, non il 100% — quindi qualunque muro
calcolato come `target/CAGR` è sbagliato per un fattore ~2, indipendentemente dalla lente.
Al capitale attuale: **$600 → ~€0.11/giorno** di rendimento atteso, ~€0.06/g come rendita perpetua.
*(Fisco incluso: 50 EUR/g netti = €18.250/anno netti = **$29.690/anno lordi** al 33%.)*
**Validazione della macchineria** (obbligatoria, 3 casi a risposta nota): asset deterministico
al 10%/anno → rendita perpetua fra 9% e 10% ✓; random walk a drift zero → rendita 0 ✓; book a
prelievo nullo → P(rovina)=0 e mediana 37.6× in 20 anni ≈ 1.197²⁰ ✓.
---
## 3) La diversificazione non crea reddito a pari nozionale — libera budget di rischio
Il test che conta, per tier di sblocco (tutti de-luck ×0.6, GTAA01 a costo IB reale con banda):
| tier | Sharpe | vol | rendita @iso-nozionale | capitale | @ISO-RISCHIO (vol 15%) | capitale |
|---|---|---|---|---|---|---|
| $600 — 2 sleeve | 0.98 | 11.4% | 5.98% | $497k | 1.32×**7.51%** | $395k |
| $2k — + GTAA01 | 1.02 | 9.2% | 5.39% | $551k | 1.64× → 7.92% | $375k |
| $20k — + XS01 | 1.11 | 9.3% | 6.28% | $472k | 1.61×**9.25%** | **$321k** |
| $20k — + XS01 + VRP01 (contro-fattuale) | 1.15 | 8.8% | 6.35% | $467k | 1.70× → 9.82% | $302k |
**A pari nozionale il muro NON si abbassa** (5.98% → 6.35%: nulla). Un diversificatore a basso
CAGR toglie vol e ritorno insieme. **A iso-rischio sì**: 19% di muro ($395k → $321k).
**Regola: un diversificatore a basso CAGR si giudica a ISO-RISCHIO, mai a iso-nozionale.** È il
"null de-levering" del progetto applicato al contrario — lì si smascherava un finto taglio di DD
comprato con la size, qui si smaschera un finto *mancato* guadagno per non aver rilevato la size.
*(L'ipotesi di partenza — "più capitale → più sleeve → CAGR super-lineare" — è quindi **refutata**
nella forma forte: la curva Sharpe del book eseguibile è **piatta** da $600 a $200k, perché TP01 su
Deribit non ha pavimento di costo e SKH01 nemmeno. Sopravvive solo nella forma debole, via iso-rischio.)*
---
## 4) Traiettoria onesta (bootstrap, de-luck, target $497k)
| deposito | p10 | mediana | p90 | P(entro 10a) | P(entro 20a) |
|---|---|---|---|---|---|
| €0/mese | — | — | — | 0% | **0%** |
| €250/mese | 18.9a | 22.4a | 24.6a | 0% | 8% |
| €500/mese | 15.6a | 19.6a | 23.4a | 0% | 48% |
| €1.000/mese | 11.6a | 14.8a | 18.7a | 2% | 95% |
| €2.000/mese | 8.1a | 10.1a | 12.8a | 48% | 100% |
Senza depositi, da $600, la rendita da 50 EUR/g **non arriva mai** (0% dei path in 20 anni).
Il moltiplicatore è il deposito, non il rendimento: è la stessa conclusione del 24/07, ma su un
target 4× più alto e quindi con tempi ~2× più lunghi.
---
## 5) L'ASIMMETRIA — il risultato strategico della sessione
Il 24/07 ha valutato il fronte prop **solo col book a 2 sleeve** (quello eseguibile a $600). Ma su
un conto funded il capitale non è $600, è **$100k** — e gli sleeve che a casa nostra sono STAT-MODE
*per taglia* (XS01 serve ~$20k) **diventano eseguibili**. Le regole prop, inoltre, passano sul
**drawdown**, non sul CAGR: premiano esattamente ciò che la diversificazione produce.
Finestra comune 2024+, de-luck ×0.6, crypto-only (niente GTAA01 che è equity su IB, niente VRP01):
| | P(pass) HYRO 1.0× | P(pass) FTMO 1.5× | **funded HYRO 1.0×: P(vivo 1a)** | funded FTMO 1.0×: P(vivo) | E[payout] FTMO | EUR/g atteso |
|---|---|---|---|---|---|---|
| A: TP01/SKH01 (live oggi) | 44.4% | 51.9% | **18.9%** | 58.8% | $8.655 | 14.58 |
| B: + XS01 (19 alt perp) | **54.7%** | **70.0%** | **57.6%** | **92.0%** | **$9.333** | **15.72** |
**Il salto è nella sopravvivenza: 18.9% → 57.6% (3×) sul conto funded HYRO a leva 1.0×.** E la
raccomandazione del 24/07 ("funded a 0.75×, mai 1.0×") si **ribalta** col book diversificato: su
FTMO a 1.0× la sopravvivenza è 92%.
**L'asimmetria in una riga:** sul **capitale proprio** diversificare non aumenta il reddito (il
reddito è `C × tasso`, e il tasso sale poco); su un **conto funded** lo aumenta molto, perché lì
il vincolo binding non è il capitale ma la **regola di drawdown**. → **Gli sleeve "inutili a $600
perché STAT-MODE" sono esattamente gli asset di maggior valore sull'unico canale che scala in mesi.**
Questo inverte la priorità implicita di dieci ondate di ricerca.
**Caveat forte, dichiarato.** (1) Il MC è **close-only**: C-bis del 24/07 ha dimostrato che i wick
intraday tagliano 6-37pp → **i livelli assoluti qui sono un TETTO**. Il ricostruttore MTM intraday
esiste solo per TP01+SKH01 (feed 5m); XS01 è 1d nativo su Hyperliquid e il suo intraday non è
ricostruibile dai nostri dati → non l'ho inventato. Il **delta** fra config è la misura onesta ed
è **conservativo** (B ha vol minore → wick minori → haircut minore). (2) La finestra comune 2024+
è **quella in cui XS01 è stato scoperto e affinato** → la *taglia* del guadagno è ottimista; sulla
finestra piena il delta si riduce (P(pass) 56.9%→58.5%, P(vivo) 14.9%→21.8%) ma quella è
sfavorevole a B per costruzione (pre-2024 B degenera in A). Il **meccanismo** (corr bassa → meno
DD → più sopravvivenza sotto vincolo di DD) è robusto; la sua taglia no.
---
## 6) LA VIA — i 600 euro come BIGLIETTO, non come capitale (`r0725_prop_ladder.py`)
Se i €600 come *capitale* sono refutati (§2, §4), restano i €600 come **biglietto**: si compra
un'evaluation, il conto funded moltiplica il **nozionale** senza possedere capitale, i payout
comprano altri biglietti. È l'unica leva che non richiede depositi. Il 24/07 si era fermato a
**un** conto ($100k → ~€14.5/g, cap $200k/firm). Ma €50/g richiede **più conti in parallelo**
e qui c'è il problema che nessuno aveva studiato:
> **N conti che girano lo stesso book bustano INSIEME.** La diversificazione fra conti è
> illusoria salvo assegnare **sleeve diversi a conti diversi**.
È un problema di costruzione di portafoglio sotto **barriera di rovina per-conto**, e non è ovvio
quale verso vinca: concentrare alza lo Sharpe *per conto* (sopravvivenza individuale) ma rende le
morti perfettamente correlate; sparpagliare decorrela le morti ma ogni conto ha Sharpe più basso
e quindi buca più spesso la propria barriera.
Simulazione: 36 mesi, cassa iniziale €600, max 6 conti, 2 firm (cap $200k/$400k), regole vere,
payout mensile 80% prelevato subito, fisco 33%, **rischio-morte firm 10%/anno**, bootstrap a
blocchi **congiunto** dei 3 sleeve (la correlazione fra conti è quella *reale*: TP01SKH01 +0.10,
TP01XS01 0.12, SKH01XS01 0.00).
| politica (leva 1.0×) | EUR/g mediano | p90 | P(≥10/g) | **P(≥50/g)** | P(zero) |
|---|---|---|---|---|---|
| CONC-2SL — ogni conto = book live attuale | 0.00 | 63.2 | 26.1% | 13.1% | 55.6% |
| CONC-DIV — ogni conto = book diversificato | 5.70 | 70.6 | 44.9% | 17.8% | 33.4% |
| SPARSO — 1 sleeve per conto | 0.00 | 76.3 | 26.2% | 16.8% | **66.0%** |
| **MISTO — metà diversificati, metà single** | **10.70** | 75.1 | **50.6%** | **20.7%** | 33.4% |
*(lente close-only)*
**Risultato non ovvio: vince il MISTO, non gli estremi.** Ogni conto ha bisogno di abbastanza
Sharpe per sopravvivere alla *propria* barriera (questo uccide SPARSO: P(zero) 66%), ma i conti
hanno anche bisogno di essere decorrelati fra loro (questo penalizza CONC). E il **book live
attuale a 2 sleeve è la politica peggiore** di tutte.
**La lente onesta però è più dura.** Le regole prop scattano sull'equity *intraday*. Con i wick
(lognormale calibrato sui percentili del recon MTM 1h del 24/07: p50 0.17pp, p90 0.90pp,
p99 3.50pp, scalati sulla vol di ogni config):
| politica (leva 1.0×, INTRADAY) | EUR/g mediano | p90 | P(≥10/g) | **P(≥50/g)** | P(zero) |
|---|---|---|---|---|---|
| CONC-2SL | 0.00 | 2.18 | 4.8% | 1.7% | 85.1% |
| CONC-DIV | 0.00 | 7.34 | 9.0% | **2.5%** | 78.1% |
| SPARSO | 0.00 | 0.02 | 1.3% | 0.3% | 89.9% |
| MISTO | 0.00 | 4.89 | 6.6% | 1.6% | 78.1% |
⚠️ **Il mio modello di wick è un PAVIMENTO, non una stima puntuale**: il gap è estratto
**indipendente dal rendimento del giorno**, mentre i wick veri sono *accoppiati* alle giornate
brutte → estrarli indipendenti aggiunge finti tuffi anche nelle giornate buone, cioè breach spuri.
Il modo corretto è il bootstrap delle **tuple (ritorno, gap)** come in `r0724_goal50_intraday_mc.py`,
che però ha il recon solo per TP01+SKH01 (XS01 è 1d nativo su Hyperliquid, intraday non
ricostruibile dai nostri dati) → **follow-up dichiarato, non simulato**.
**Verdetto in banda (ed è la risposta al goal):**
> Una via da €600 a €50/giorno **esiste** ed è la scala di conti funded. In 3 anni ha una
> probabilità **fra il 2% e il 21%** di arrivarci, e una probabilità **fra il 33% e il 78%** di
> bruciare interamente i €600. Il valore atteso è positivo rispetto ai €600 tenuti come capitale
> (~€0.11/g ⇒ ~€120 in 3 anni), ma è una **scommessa a coda destra, non una rendita**.
Il confronto fra *politiche* è invece robusto (stessa lente per tutte) e ha un'implicazione
diretta: **se si apre il fronte prop, non mandarci il book live attuale** — è l'ultima delle
quattro politiche in entrambe le lenti.
---
## 7) ADDENDUM — "e se metto 10K su IB?" (`r0725_ib10k.py`)
Domanda dell'operatore a valle dell'ondata. Non è una domanda su GTAA01: è **allocazione fra due
venue** con profili opposti — Deribit (TP01+SKH01) è il **motore** (CAGR ~11% de-luck, vol 11.3%),
IB (GTAA01) è un **diversificatore** (CAGR ~3.9%, vol ~5%, corr ~+0.10). Tre effetti da contare
insieme: (a) il deposito **sblocca** GTAA01 (il pavimento di commissione passa dall'1-3% per ordine
a ~0.02% → §1 risolto); (b) sposta il baricentro su un venue a CAGR basso; (c) cambia l'**aliquota**
(ETF 26% vs crypto 33%, assunzione dichiarata).
Capitale totale $11.500 ($600 Deribit + €10k), de-luck ×0.6, SKH01 path live:
| quota su IB | Sharpe | CAGR | maxDD | €/g atteso | rendita perpetua |
|---|---|---|---|---|---|
| 0% (tutto Deribit) | 0.99 | 11.2% | 15.3% | **2.16** | €1.16/g |
| 25% | 1.06 | 9.3% | 12.0% | 1.85 | €1.08/g |
| 50% | **1.13** | 7.5% | 11.2% | 1.54 | €0.98/g |
| 94% (= i 10k su IB) | 0.84 | 4.4% | 10.5% | **0.93** | €0.61/g |
**Mettere i 10k su IB più che dimezza il reddito** (€0.93 vs €2.16/g): è la §3 di questo stesso
diario vista dal lato pratico — un diversificatore a basso CAGR diluisce l'income a pari nozionale.
**E la via d'uscita (levare) è chiusa dai costi.** Lo Sharpe migliore (1.13 a 50/50) si converte in
reddito solo con leva; ma su ETF a IB con €10k c'è la **Reg-T (2× max**, il portfolio margin parte
da ~$110k) e il margine costa **~5.5%/anno**. Contando il finanziamento:
| quota IB | leva attuabile | CAGR lordo | costo leva | CAGR netto | rendita |
|---|---|---|---|---|---|
| **0%** | 1.33× | 14.8% | 0.7% | **14.1%** | **€1.33/g** |
| 25% | 1.71× | 15.9% | 2.0% | 13.9% | €1.25/g |
| 50% | 2.27× | 17.1% | 4.8% | 12.4% | €0.92/g |
| 94% | 2.06× | 9.0% | 5.6% | 3.4% | €0.00/g |
**con leva attuabile E costo del margine, vince tutto-Deribit a 1.33×.** Il diversificatore
permetterebbe di levare di più, ma il finanziamento costa più di quanto aggiunge.
**Regola: l'argomento iso-rischio (§3) vale solo se la leva è (a) disponibile e (b) a costo
inferiore all'uplift — su un conto retail da €10k su ETF non lo è.**
**Il confronto che ridimensiona GTAA01:** €10k in GTAA01 = **€0.93/g con maxDD 10.5%**; gli stessi
€10k **fermi** a interesse ~2% = **€0.54/g con maxDD ~0%**. Il premio dello sleeve sopra la
liquidità è **~€0.50/g pagato con un drawdown del 10%** — in isolamento un cattivo affare (e un
monetario/BTP EUR renderebbe più del 2% assunto).
**Raccomandazione:** se arrivano €10k, il posto produttivo è **Deribit**. Chi vuole meno drawdown
può tenere **25% su IB**: costa ~€0.08/g di rendita e taglia il maxDD dal 15.3% al 12.0% — è
l'unico split che regge anche coi costi di finanziamento. Il 94% su IB no.
⚠️ **Caveat che rende il confronto meno netto di come appare:** il CAGR crypto (11%) viene da ~7
anni che contengono **due bull market**; il 3.9% di GTAA01 da ~30 anni con dentro più orsi. Il
confronto **favorisce il crypto per costruzione** — il numero crypto ha più probabilità di deludere.
Tassi (margine 5.5%, liquidità 2%) e aliquote (26%/33%) sono assunzioni dichiarate; le aliquote
vanno confermate col commercialista (**non è un parere fiscale**).
---
## 8) HYROTRADER nello specifico (`r0725_hyro.py`)
La firm che il 24/07 aveva messo prima in classifica per *questo* book: unica con **API reale** da
funded (sub-account Bybit) → il book gira automatico; **nessun limite di tempo** sull'eval (una
strategia lenta non è penalizzata); **weekend consentito** — non banale, l'ondata 2026-07-17 ha
misurato che il weekend porta il **38% del gross di TP01**. Biglietti $25k/$249, $50k/$379,
$100k/$579, cap $200k, split 80%, fee rimborsata al pass.
Due regole mordono proprio noi, e nessuna analisi le aveva modellate: **maxDD 6% STATICO** e
**consistency 40%** (nessun giorno > 40% del profitto totale, in eval).
**Ipotesi refutata: la consistency NON morde.** Avevo previsto una tagliola (SKH01 ha P&L a
scalino, TP01 fa strappi di trend). Misurato: **costo ≈ 0pp** a ogni leva e in entrambe le lenti.
Ragione strutturale: il book accumula il 10% in **130-300 giorni**, quindi nessun singolo giorno
si avvicina al 40% del cumulato. ⚠️ Prima di dichiararlo ho dovuto **provare che il controllo
funziona** (un "costo 0" può essere un bug): `test_consistency_MORDE_su_un_book_grumoso` mostra
che su un book con profitto concentrato in 1-2 giorni la regola porta P(pass) da >90% a <5%. Il
meccanismo c'è; è il book a non essere grumoso abbastanza. *(Il primo probe era sbagliato — strappi
ripetuti si diluiscono a vicenda, e sim_eval fa block-bootstrap, non replay: due iterazioni di test
prima di avere un discriminante valido.)*
**Il vincolo vero è il DD 6% statico.** Finestra comune 2024+, de-luck ×0.6:
| | Sharpe | CAGR | vol | maxDD |
|---|---|---|---|---|
| A — book live (TP01/SKH01) | 0.74 | 7.2% | 10.1% | 9.5% |
| B — + XS01 | **1.13** | 10.0% | 8.8% | **6.2%** |
Config A ha maxDD 9.5% contro un limite di 6%: **strutturalmente incompatibile a leva piena**.
**Funded $100k, P(vivo 1 anno) / €-giorno:**
| config | leva | close-only (tetto) | intraday (pavimento) |
|---|---|---|---|
| A | 0.50× | 80.2% / €8.33 | 44.0% / €6.86 |
| A | 0.75× | 51.1% / €12.21 | **10.1%** / — |
| A | 1.00× | 27.1% / €13.89 | **1.4%** / — |
| B | 0.50× | 98.5% / €8.69 | **71.0%** / €7.69 |
| B | 0.75× | 85.4% / €12.78 | 31.6% / €8.66 |
| B | 1.00× | 66.0% / €16.20 | 9.9% / — |
**EV del biglietto** (config B, eval 1.0×, funded a leva ottima, 1 anno): close-only P(pass) 73.0%
→ EV **+$6.789** sul biglietto $100k; intraday P(pass) 31.1% → EV **+$1.166**. **Positivo in
entrambe le lenti** — ma con ~69% di probabilità di perdere la fee nella lente pessimista.
**Raccomandazione operativa:**
1. **Config B (con XS01), non il book live attuale.** A 1.0× intraday config A sopravvive l'1.4%:
mandarci il book a 2 sleeve a leva piena è morte quasi certa.
2. **Funded a 0.50×** (non 0.75× come indicava il 24/07 per la config A): E[payout] scende poco
(€7.69 vs €8.66/g) ma la sopravvivenza raddoppia (71% vs 32%) — e su orizzonti pluriennali la
sopravvivenza **compone**, un conto bustato smette di produrre per sempre.
3. Eval a 0.75-1.0×; biglietto $25-50k come test economico — l'EV scala **linearmente** con la
taglia, quindi la ragione per partire piccoli è varianza e apprendimento, non EV.
4. **Cap $200k/trader ⇒ ~€15-30/g anche negli scenari buoni.** Per €50/g servono più firm → §6.
⚠️ **Discrepanza dichiarata col 24/07:** lì il funded di config A a 0.75× dava P(vivo) 58%, qui
10%. Due cause note: (a) il mio wick è a estrazione indipendente (più severo — §6); (b) finestra
2024+, dove config A è debole (Sharpe 0.74 vs 0.99 sulla finestra piena). **La direzione concorda
(meno leva è meglio), il livello no** — e il numero del 24/07 usa il recon MTM vero, quindi sul
livello è più affidabile del mio.
---
## Bug catturato in sessione
**Modello funded, base di prelievo aggiornata ogni giorno come un HWM mobile** → al checkpoint
mensile `eq > hwm` è quasi sempre falso → guadagno misurato ≈ 0 → **payout $230/anno invece di
~$7.000**. Le regole vere sono a max-loss **statico dal saldo iniziale**, con la base ripristinata
dopo ogni prelievo. Corretto e bloccato da `test_funded_payout_non_e_zero_regressione_hwm`.
Famiglia nota: numero plausibile, meccanismo sbagliato — si prende solo con una sanity a risposta nota.
---
## Decisioni e non-decisioni
**Cablato:** nulla sul path live. Book, pesi, config, cron: **invariati**.
**Raccomandazioni all'operatore (non automatizzabili):**
1. **Se si apre il fronte prop** (l'unico canale che scala in mesi): mandarci il book
**diversificato** TP01+SKH01+XS01, non il book a 2 sleeve. È la differenza fra P(vivo) 19% e
58% a leva 1.0×. Richiede una venue con i 19 alt perp (Bybit sub-account HyroTrader li ha).
E se si arriva a più conti, **politica MISTA** (§6): metà conti col book diversificato, metà
con singoli sleeve decorrelati. Budget mentale onesto: **P(perdere tutto) 33-78%**.
2. **GTAA01 su IB**: non andare live senza banda+cadenza (weekly, banda ~$50/gamba). È un cambio
al modello dello sleeve → passa dai gate, non lo cablo in questa sessione.
3. **Aspettativa onesta ricalibrata**: rendita perpetua da 50 EUR/g = **$300k-$500k** di capitale
(non €122k). A $600 il book rende ~**€0.11/giorno**.
**Cosa NON fare (confermato):** niente cambio pesi senza `weights_tilt_null`; niente leva "per
accelerare" sul capitale proprio (il muro si sposta del 20%, non dell'ordine di grandezza).