02e0cf775f
Il 07/08 era stato misurato che l'accumulo composto al lordo sovrastima il capitale del 30% a 10 anni, ma i numeri del piano non erano stati rifatti. Qui lo sono. Il muro usava una convenzione ASIMMETRICA: prelievo lordizzato (€50/g netti → $29.690 lordi) ma capitale che compone senza mai pagare imposte. Coerente (imposte annue dentro il portafoglio, prelievo gia' netto): perpetua 10.91% → 7.70%, muro $272.061 → $258.338 (-5.0%). I due errori vanno in versi opposti e si compensano quasi — per caso, non per costruzione. E' sulle traiettorie che il fisco morde, e si legge nella PROBABILITA': €250/mese P(entro 20a) 92% → 52%; €500/mese 100% → 99%. Il versamento necessario a P=90% passa da €237 a €371/mese a 20 anni (+57%), da €509 a €672 a 15 (+32%), da €1.178 a €1.323 a 10 (+12%): l'errore era composto, quindi cresce con l'orizzonte. Rendita a 20 anni con €250/mese: 91.30 → 46.61 €/g, P(€50/g) 90% → 42%. Controllo di replica superato prima di guardare i numeri nuovi: a fisco spento la macchina riproduce $272.061 al dollaro (implementazione separata) e la colonna LORDA riproduce 4 righe su 4 della tabella pubblicata. Trovato per strada: perp_and_wall gira a 2000 path e a quella taglia da' $269.648 — la terza cifra del muro e' rumore Monte Carlo. Errore mio catturato prima di pubblicare: la mediana degli anni calcolata sull'INTERO vettore coi non-arrivi a -1 faceva risultare €250/mese PIU' VELOCE col fisco (15.7 → 15.3 anni) mentre P crollava. Un non-arrivo va codificato +inf, mai -1. Book/pesi/cron/config INVARIATI: non tocca la produzione. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
165 lines
8.1 KiB
Markdown
165 lines
8.1 KiB
Markdown
# 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.
|