Files
PythagorasGoal/docs/diary/2026-08-07-piano-al-netto.md
T
Adriano Dal Pastro 02e0cf775f research(capitale): il piano rifatto AL NETTO — il muro si sposta poco, i versamenti molto
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>
2026-08-07 19:30:49 +00:00

165 lines
8.1 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-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.