ricerca: il piano a 10 anni dal conto vero, l'ETF-quando-flat SCARTATO, slippage rifatto
Giornata partita da "stato trades" e finita sul disegno del sistema. Versamento di 1.400 USDC atterrato alle 11:03:35Z (equity $667,88 -> $2.066,88); il giro delle 11:47 ha ribilanciato correttamente e ha ripiazzato i disaster-SL alla taglia nuova -- prima volta che il ramo riparato stamattina gira sul serio. (1) PIANO A 10 ANNI DAL CONTO VERO -- r0825_piano_10a_500.py (nuovo) Le tabelle pubblicate partono da $600/$635: rifatte su $2.067, lente L3 CONGIUNTA. Replica superata: chiede EUR 1.718/m dove la tabella da $635 chiedeva EUR 1.733. EUR 500/mese per 10 anni -> mediana $114.934, rendita 18,35 EUR/g, P(>=50 EUR/g) = 0,0% su 3.000 traiettorie. Il bersaglio con EUR 500/m arriva al 17o anno. L'EQUIVALENZA CHE ORDINA IL PIANO: EUR 100/mese in piu' == +4,07%/anno di drift, cioe' +27% su TUTTO il drift del libro. A 10 anni i bonifici fanno il 59%. Tutta la leva autorizzabile vale quanto EUR 100-150/mese: k=1,25 (+15,6%) vale MENO di EUR 100/mese in piu' (+19,1%), e si porta dietro il peggior giorno al 21,48%. E il libro a k=1 rende MENO dell'S&P (15,19% vs 17,40%): il vantaggio sta nello Sharpe (1,35 vs 0,89) e senza leva NON si converte in rendimento. Senza leva il libro non si giustifica come veicolo di ACCUMULO -- si giustifica come veicolo di RENDITA, dove serve 2,5x meno capitale ($254k contro $646k) perche' la perpetua vive sul DD. (2) "ETF QUANDO IL LIBRO E' FLAT" -- SCARTATO, r0825_capitale_fermo.py (nuovo) Il libro e' flat il 28,0% dei giorni (2,7% nel 2021, 77,0% nel 2022, 75,6% nel 2026); live, esposto 14 giorni su 64, leva lorda mediana 0,00x e max 0,52x su un tetto di 1,0x -- il cap non ha mai morso, il vincolo e' il segnale. A ISO-RISCHIO il dinamico PERDE: Sharpe 1,01 contro 1,40 del 50/50 e 1,35 del libro. E il null a maschera casuale (400 estrazioni, stessa quota, blocchi 20g) lo mette al 30o percentile: fa PEGGIO di commutare a caso. A iso-nozionale sembrava vincere (drift 17,09%, il piu' alto) perche' aveva la vol piu' alta: e' la trappola di M6, il de-levering e' il PRIMO test. E IL MECCANISMO CHE SEMBRAVA OVVIO NON ESISTE. Aggregato: SPY 4,91% nei giorni flat contro 21,48% negli altri (-16,57%), e la storia si scrive da sola. FALSA: scomposta per anno il segno ALTERNA (3 su, 4 giu') e il 2022 -- l'anno che doveva reggerla -- ha il segno OPPOSTO. Artefatto di composizione: i giorni flat stanno negli ANNI brutti per l'azionario, non nei GIORNI brutti. M9 ha fatto il suo lavoro su di me. (3) SLIPPAGE RIFATTO ALLA TAGLIA VERA -- r0822_slip_audit.py riparato 26 fill (erano 18), $6-$319. I due piu' grandi mai eseguiti sono di oggi e hanno preso 1,01% e 0,54% della loro barra 5m, con il print a meta' del range (q=0,50). Il caso peggiore resta un fill da $74 del 18/07 al 21,9%: un sabato, nastro inesistente. L'attrito non e' funzione della TAGLIA ma di taglia/volume-della-barra -- l'estrapolazione lineare che prevedeva ~71% a questo capitale e' refutata dalla misura diretta. NB non e' "assente", e' "non ancora testato": manca un fill grande in una barra sottile, e il weekend e' dove TP01 fa il 38% del proprio gross. DIFETTO P1 RIPARATO: l'equity era CABLATA a 636.0 con un commento che diceva di leggerla dal watermark. Il giorno del versamento avrebbe stampato $636 sbagliando di 3,3x proprio la sezione che esiste per dire QUANDO la misura scade. Riparata leggendo il watermark -- e poi riparata di nuovo, perche' i fill del campione sono stati eseguiti a conti diversi ($597-$2.067) e una base sola e' sbagliata comunque la si scelga. Ora la normalizzazione e' PER FILL, e a $600 riproduce il 22,0% originale. DUE ERRORI MIEI, CATTURATI PRIMA DI PUBBLICARLI - maschera VUOTA vestita da risultato: la prima stesura di r0825_capitale_fermo prendeva i giorni flat dalla serie DE-LUCKATA, ma `deluck` sottrae una costante e lo zero esatto sparisce -> maschera vuota, dinamico identico al book, e lo script ha stampato tabelle piene e un p-value. Lo ha rivelato solo la riga "0 = 0.0%". REGOLA: stampare la CARDINALITA' di una maschera prima di usarla. - il meccanismo falso della (2), demolito dalla scomposizione per anno. Suite: 730 passati, 1 fallito -- quello gia' noto di 5.9 (deriva dati, non codice). Watermark del libro live sopravvissuto intatto alla suite (fixture autouse di stamattina). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B9UyJLHzR7EJzxR3iQ3RN1
This commit is contained in:
@@ -194,3 +194,78 @@ Un **effetto collaterale su file** trasforma un test puro in un attore sul siste
|
||||
test non menzionava il watermark, non lo importava, non lo asseriva: lo scriveva passando per una
|
||||
funzione di produzione tre livelli più in basso. **Il perimetro di un test non è quello che il test
|
||||
dice di toccare: è quello che tocca il codice che chiama.**
|
||||
|
||||
---
|
||||
|
||||
## Seconda parte della giornata: il versamento, e le tre misure che ne sono uscite
|
||||
|
||||
Alle **11:03:35Z** sono atterrati **1.400 USDC**: equity **$667,88 → $2.066,88**. Il giro delle
|
||||
11:47 ha ribilanciato correttamente (cap/asset $1.033, BTC +$238, ETH +$319, disaster-SL `placed`
|
||||
su entrambi alla taglia nuova) — la prima volta che il ramo riparato al mattino gira sul serio.
|
||||
|
||||
Poi l'operatore ha chiesto tre cose in fila, e ognuna ha rotto qualcosa.
|
||||
|
||||
### (1) «€500/mese per 10 anni»
|
||||
|
||||
Rifatto sul conto vero invece che citare la tabella da $635. **Non centra**: capitale mediano
|
||||
$114.934, rendita 18,35 €/g, **P(≥50 €/g) = 0,0%** su 3.000 traiettorie. Il bersaglio con €500/m
|
||||
arriva al 17° anno; per averlo a 10 servono €1.718/mese.
|
||||
|
||||
Il numero che ordina tutto: **€100/mese in più valgono +4,07%/anno di drift**, cioè +27% su tutto
|
||||
il drift del libro. Dettaglio in `30-piano-capitale-fisco.md`.
|
||||
|
||||
### (2) «A cosa serve XSR01, allora?» → e poi: «l'abbiamo fatto per la leva»
|
||||
|
||||
Due osservazioni dell'operatore, entrambe centrate, che hanno spostato la conversazione dal
|
||||
candidato al **disegno**.
|
||||
|
||||
XSR01 ha già fallito `weights_tilt_null` (peso ottimo ~0). Ma la risposta vera è che **anche un
|
||||
uplift di strategia riuscito vale meno di un bonifico modesto**, e questo si applica a qualunque
|
||||
sleeve, non solo a XSR01.
|
||||
|
||||
Poi la misura che ha ribaltato la discussione sulla leva: **il libro non è poco levato, è FERMO**.
|
||||
Esposizione lorda realizzata in 64 giorni live: mediana **0,00x**, media 0,05x, **max 0,52x** su un
|
||||
tetto strutturale di 1,0x, esposto in **14 giorni su 64**. Il cap non ha mai morso: il vincolo è il
|
||||
segnale. *Il basso drawdown di TP01 non viene dall'essere piccolo nel mercato — viene dallo stare
|
||||
fuori dal mercato.*
|
||||
|
||||
⚠️ Correzione che mi sono fatto da solo: quel 78% è il **regime attuale**, non la media. Sull'intera
|
||||
storia i giorni flat sono il **28,0%** — 2,7% nel 2021, 77,0% nel 2022, 75,6% nel 2026.
|
||||
|
||||
### (3) «Allora usiamo l'ETF quando il libro è flat» → SCARTATO
|
||||
|
||||
Test in `r0825_capitale_fermo.py`. **Perde** a iso-rischio (Sharpe 1,01 contro 1,40 del 50/50 e
|
||||
1,35 del libro), e il null a maschera casuale lo mette al **30° percentile**: fa peggio di
|
||||
commutare a caso.
|
||||
|
||||
E qui la parte che vale più del risultato. Stavo per scrivere un meccanismo pulito — *«il libro va
|
||||
flat quando anche l'azionario soffre»* — sostenuto da un aggregato netto (SPY 4,91% nei giorni
|
||||
flat contro 21,48% negli altri, −16,57%). **La scomposizione per anno lo ha demolito**: il segno
|
||||
alterna, 3 anni su e 4 giù, e il **2022** — l'anno che doveva reggerlo — ha il segno **opposto**.
|
||||
Artefatto di composizione: i giorni flat stanno negli **anni** brutti per l'azionario, non nei
|
||||
**giorni** brutti. M9 ha fatto esattamente il suo lavoro, su di me.
|
||||
|
||||
### I due difetti di misurazione trovati addosso
|
||||
|
||||
1. **Maschera vuota vestita da risultato.** La prima versione prendeva i giorni flat dalla serie
|
||||
**de-luckata**; ma `deluck` sottrae una costante, quindi lo zero esatto sparisce. Maschera
|
||||
vuota → dinamico identico al book → e lo script ha stampato tabelle piene e un p-value. Lo ha
|
||||
rivelato solo la riga che stampava `0 = 0.0%`.
|
||||
**Regola: stampare la CARDINALITÀ di una maschera prima di usarla.**
|
||||
2. **`r0822_slip_audit.py` aveva l'equity CABLATA a `636.0`** con un commento che diceva di leggerla
|
||||
dal watermark — P1 in piena regola. Il giorno del versamento avrebbe continuato a stampare $636,
|
||||
sbagliando di 3,3x proprio la sezione che esiste per dire *quando la misura scade*. Riparato
|
||||
leggendo il watermark — e poi riparato **di nuovo**, perché la prima riparazione divideva tutti i
|
||||
fill per l'equity di oggi mentre i fill del campione sono stati eseguiti a conti diversi
|
||||
($597–$2.067). Ora la normalizzazione è **per fill**, e a $600 riproduce il 22,0% originale.
|
||||
|
||||
### La misura di slippage, rifatta alla taglia vera
|
||||
|
||||
26 fill (erano 18), taglia $6–$319. I due più grandi mai eseguiti sono di oggi e hanno preso
|
||||
**1,01%** e **0,54%** della loro barra 5m, con il print **a metà del range** (q=0,50). Il caso
|
||||
peggiore resta un fill da **$74 del 18/07 al 21,9%** — un sabato, nastro inesistente.
|
||||
|
||||
📌 **L'attrito non è funzione della taglia: è funzione di `taglia / volume della barra`.** Un fill
|
||||
4,3× più grande in un'ora liquida ha fatto 20× meno partecipazione di uno piccolo in un'ora morta.
|
||||
⚠️ Ma non è «assente», è **«non ancora testato»**: nel campione non c'è ancora un fill grande in una
|
||||
barra sottile, e il weekend è dove TP01 fa il 38% del proprio gross.
|
||||
|
||||
Reference in New Issue
Block a user