# 2026-08-07 — Il piano rifatto al netto: muro, traiettorie, versamenti **Book, pesi, cron, config: INVARIATI.** Non tocca la produzione: rifa' i numeri del *piano di accumulo*, che erano al lordo del fisco. Script: `scripts/research/r0807_piano_netto.py`. Test: `tests/test_piano_netto.py` (16). --- ## Il debito Il 07/08 (`r0727_tasse.py`, `r0807_growth_yearly.py`) era stato misurato che l'accumulo composto al lordo sovrastima il capitale del **15.7% a 5 anni, 29.8% a 10, 42.6% a 15**. Il fatto era stato scritto in memoria — *"TUTTE le tabelle a 15-20 anni pubblicate sopra sono al LORDO"* — ma i numeri non erano stati rifatti. Sono numeri che sono serviti a decidere: la traiettoria da $600, la tabella «quanto versare per un orizzonte dato», la rendita €/g. **E il muro stesso non era neutro.** `$272.061` viene da una convenzione **asimmetrica**: il prelievo viene lordizzato (€50/g netti → $29.690/anno lordi al 33%) ma il capitale che resta investito compone **senza mai pagare imposte**, in accumulo come in prelievo. Le due meta' del conto non usano lo stesso fisco. --- ## (0) Il controllo di replica, che ha trovato subito qualcosa Prima regola: a fisco spento tutto deve riprodurre i numeri pubblicati, altrimenti un numero diverso non si distingue da un bug. | | perpetua | muro | |---|---|---| | costante pubblicata (`VR.TARGET`, citata ovunque) | — | **$272.061** | | questa implementazione, fisco OFF, 4000 path | 10.9131% | **$272.061** | | `r0726_capwall_refresh.perp_and_wall` ai suoi **2000** path | 11.0107% | $269.648 | | lo stesso, portato a 4000 path | 10.9131% | **$272.061** | Replica esatta al dollaro fra due implementazioni separate. ⚠️ **Ma trovato per strada:** la funzione che ha prodotto il muro gira di default a **2000 path**, e a quella taglia da' $269.648 — **0.9% di rumore Monte Carlo**. Il muro pubblicato e' corretto (fu calcolato a 4000), ma **la sua terza cifra significativa non e' un'informazione**: si cita **$272k**, non $272.061. --- ## (1) Il muro, nella convenzione coerente Imposte pagate ogni anno **dentro** il portafoglio (stessa meccanica dell'accumulo: plusvalenza annua al netto dei movimenti di cassa, carry 4 anni, patrimoniale 0.2%), prelievo gia' netto: | convenzione | prelievo/anno | perpetua | muro | |---|---|---|---| | (a) pubblicata — fisco solo sul prelievo | $29.690 | 10.91% | **$272.061** | | (b) coerente, aliquota 33% | $19.892 | **7.70%** | **$258.338** | | (b) coerente, aliquota 26% | $19.892 | 8.42% | $236.310 | **−5.0%.** I due errori della convenzione (a) vanno in versi opposti e **si compensano quasi**: lordizzare il prelievo alza il muro, non tassare il capitale investito lo abbassa. Ma si compensano *per caso*, non per costruzione — e' il tipo di errore che si vede solo rifacendo il conto in modo coerente. Cio' che resta scoperto e' la patrimoniale e la non-linearita' della rendita perpetua nel drift. --- ## (2) Le traiettorie — ed e' qui che il fisco morde Orizzonte 25 anni, 3000 path, seed 725: **esattamente la macchina che ha prodotto la tabella pubblicata**, quindi la colonna LORDA e' una replica di controllo. | €/mese | versato in 20a | LORDO: anni | P(20a) | NETTO: anni | P(20a) | |---|---|---|---|---|---| | 0 | $600 | mai | 0% | mai | 0% | | **250** | $66.818 | **16.3a** *(pubbl. 16.2)* | **92%** *(pubbl. 92%)* | **19.8a** | **52%** | | 500 | $133.035 | 12.4a *(pubbl. 12.4)* | 100% | 14.7a | 99% | | 800 | $212.496 | 10.0a | 100% | 11.4a | 100% | | 1000 | $265.470 | 9.0a *(pubbl. 9.0)* | 100% | 10.0a | 100% | | 2000 | $530.340 | 6.0a *(pubbl. 6.0)* | 100% | 6.4a | 100% | **Il livello €250/mese — quello con cui il 26/07 il piano risultava «P(entro 20a) 92%» — al netto diventa una moneta: 52%.** ⚠️ **La colonna «anni» e' la mediana CONDIZIONATA all'arrivo** (convenzione di `r0726_capwall_refresh.trajectory`, quindi confrontabile con la tabella pubblicata) e va letta insieme alla probabilita' accanto. > **Errore mio, catturato prima di pubblicare.** La prima stesura calcolava la mediana > sull'**intero** vettore, con i non-arrivi codificati `-1`. Risultato: €250/mese risultava passare > da 15.7 a **15.3** anni col fisco — *piu' veloce* — mentre la probabilita' crollava da 91% a 53%. > Con meta' dei path a `-1` la mediana del vettore cade sui **primi** arrivi. **Un non-arrivo va > messo a +∞, non a −1: messo a −1 il numero migliora tanto piu' quanto peggio va la colonna**, ed > era abbastanza plausibile da finire in un verdetto. --- ## (3) Quanto versare per un orizzonte dato — al netto Bersaglio $258.338. Fra parentesi il numero pubblicato (lordo, bersaglio $272.061). | orizzonte | P=50% | P=75% | P=90% | P=95% | tot. versato @P=90% | |---|---|---|---|---|---| | **10 anni** | €998/m | €1.162/m | **€1.323/m** *(€1.178)* | €1.424/m | **$175.058** *($155.923)* | | 15 anni | €470/m | €570/m | **€672/m** *(€509)* | €725/m | $133.983 *($101.643)* | | 20 anni | €245/m | €306/m | **€371/m** *(€237)* | €417/m | $98.762 *($63.406)* | **Il fisco costa +12% al mese a 10 anni, +32% a 15, +57% a 20.** Cresce con l'orizzonte perche' l'errore era composto: piu' tempo, piu' interessi mai maturati sulle imposte non pagate. E la lettura del 26/07 si **rafforza**: a 10 anni versi **$175k** per arrivare a $258k (il rendimento fa il 32%), a 20 anni ne versi **$99k** (il rendimento fa il 62%). *A orizzonti corti non fai lavorare la strategia, compri il capitale coi bonifici* — al netto ancora di piu'. --- ## (4) Rendita €/g mediana — al netto Le imposte sono gia' dentro la perpetua (7.70%): il numero e' netto e **non va lordizzato una seconda volta**. | €/mese | 5a | 10a | 15a | 20a | P(€50/g a 20a) | |---|---|---|---|---|---| | 0 | 0.20 | 0.34 | 0.59 | 1.01 | 0.0% | | **250** | 4.38 | 11.82 | 24.61 | **46.61** *(pubbl. 91.30)* | **42.0%** *(pubbl. 90.0%)* | | 500 | 8.56 | 23.31 | 48.65 | 92.11 | 97.6% | | 800 | 13.58 | 37.08 | 77.47 | 146.78 | 100.0% | | 1000 | 16.93 | 46.26 | 96.67 | 183.18 | 100.0% | | 2000 | 33.66 | 92.18 | 192.79 | 365.24 | 100.0% | A 20 anni la rendita di €250/mese si **dimezza** (91.30 → 46.61 €/g) e P(€50/g) passa da **90% a 42%**. La non-linearita' resta: da 15 a 20 anni la rendita raddoppia a ogni livello. --- ## Cosa cambia e cosa no **Cambia:** il livello di versamento che il piano dichiarava sufficiente. €250/mese al lordo sembrava «P 92%, il piano funziona»; al netto e' 52%, e per tornare a ~90% servono **€371/mese** a 20 anni. Il muro si sposta poco (−5%), i **versamenti** si spostano molto (+57% a 20 anni). **Non cambia:** - senza versamenti il capitale-rendita non si raggiunge **mai**, a qualunque lente fiscale; - l'ordine di importanza delle leve (versare > quando > quanto presto si smette > piatto vs crescente > frequenza) e' invariato: il fisco colpisce tutte le colonne allo stesso modo; - il rischio di venue resta fuori scala rispetto a tutto questo (a p=5% il risultato mediano e' zero comunque). ⚠️ **Assunzioni fiscali dichiarate, NON un parere fiscale** (33%, sensibilita' a 26%, minusvalenze in carry 4 anni, patrimoniale 0.2%/anno). Il modello tassa la variazione **annua** di valore = **limite superiore** rispetto alla pura realizzazione, stretto perche' TP01 ribilancia ogni giorno e SKH01 chiude round-trip discreti. --- ## Regole 1. **Un modello che tassa una meta' del conto e non l'altra non e' conservativo, e' incoerente** — e i due errori possono compensarsi quasi esattamente, il che li rende invisibili finche' non si rifa' il conto in modo simmetrico. 2. **Un non-arrivo va codificato +∞, mai −1.** Con −1 la mediana *migliora* quanto piu' la colonna peggiora. 3. **Una mediana condizionata va sempre stampata accanto alla sua probabilita'**, o dice il contrario di quello che sembra. 4. **Prima di pubblicare un numero nuovo, far riprodurre alla macchina quello vecchio** — qui la colonna LORDA riproduce 4 righe su 4 della tabella pubblicata, ed e' l'unica ragione per cui la colonna NETTA e' leggibile. 5. **Un Monte Carlo ha una risoluzione, e va detta.** $272.061 e' esatto quanto $269.648: la differenza fra i due e' la taglia del campione, non un'informazione sul piano.