research: tabella anni parametrizzabile da riga di comando

"E con 1000 al mese?" non deve richiedere di modificare lo script: importo mensile e
versamento iniziale passano come argomenti. Modificarlo ogni volta significherebbe avere
due versioni dei numeri in giro senza sapere quale ha prodotto cosa.

  uv run python scripts/research/r0726_tabella_anni.py            # EUR 500/mese
  uv run python scripts/research/r0726_tabella_anni.py 1000       # altro mensile
  uv run python scripts/research/r0726_tabella_anni.py 1000 10000 # mensile + iniziale

EUR 1.000/mese: traguardo al capitale mediano all'anno 9 (2035) invece del 12; P(traguardo)
80% a 10 anni contro 16%. Il totale versato a 20 anni raddoppia ($270.917 vs $138.482).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-07-26 21:38:09 +00:00
parent bdd9e60355
commit 66b4b2b9c0
+8 -3
View File
@@ -14,7 +14,9 @@ TP01+SKH01 sul path reale, fisco 33%, EURUSD 1.09, NESSUN rischio di venue e NES
dell'edge — i due scenari peggiori sono misurati altrove (`r0726_venue_risk`, `r0726_decadimento`)
e vanno letti insieme a questa.
uv run python scripts/research/r0726_tabella_anni.py
uv run python scripts/research/r0726_tabella_anni.py # €500/mese (il piano)
uv run python scripts/research/r0726_tabella_anni.py 1000 # altro importo mensile
uv run python scripts/research/r0726_tabella_anni.py 1000 10000 # mensile + versamento iniziale
"""
from __future__ import annotations
@@ -34,7 +36,10 @@ import r0726_deposits as DP # noqa: E402
OGGI = pd.Timestamp("2026-07-26")
CONTO = 596.92
LUMP_EUR, MENSILE_EUR = 5_000.0, 500.0
# Parametrizzabili da riga di comando: chiedere "e con X al mese?" non deve richiedere di
# modificare lo script (e quindi di avere due versioni dei numeri in giro).
MENSILE_EUR = float(sys.argv[1]) if len(sys.argv) > 1 else 500.0
LUMP_EUR = float(sys.argv[2]) if len(sys.argv) > 2 else 5_000.0
N_PATHS, BLOCK, YEARS, SEED = 6000, 20, 20, 20260726
SOGLIE = [(13_000, "GTAA01 entra nel book"),
@@ -66,7 +71,7 @@ def main() -> None:
snaps[y], paid_at[y] = cap.copy(), paid
print("=" * 104)
print(" PIANO €5.000 SUBITO + €500/MESE — anno per anno")
print(f" PIANO €{LUMP_EUR:,.0f} SUBITO + €{MENSILE_EUR:,.0f}/MESE — anno per anno")
print("=" * 104)
print(f" partenza ${start:,.0f} · bersaglio €{CC.TARGET_EUR_DAY:.0f}/g = ${wall:,.0f} "
f"· rendita perpetua {perp:.2%} · fattore d'ancora ×{DP.DELUCK}")