Methodology

The model in one paragraph

Both households start with the same liquid wealth Wโ‚€ = down payment + buy-side closing costs. At t = 0 the renter invests Wโ‚€ into a stock/bond portfolio; the buyer spends it on the purchase. Each month, the side with the lower outflow invests the differential. Country-specific tax effects (mortgage interest deductions, property taxes, wealth taxes) net into the buy-side cash flow once a year so they ripple forward through the next year's differential. At the chosen horizon we compare end-of-period net worth on both sides.

Net worth definitions

The two sides use intentionally asymmetric definitions:

  • Buy: (homeValue โˆ’ loanBalance) + portfolio. An accounting view of home equity plus accumulated investments. Sale-side transaction costs are configurable (default 0%): set them to ~6% to 10% to see the "if I sold today" liquidation view.
  • Rent: portfolio โˆ’ unrealizedCGT(portfolio). The country-specific capital-gains tax that would be owed on liquidation is subtracted (US LTCG ยฑ NIIT, IT 26%/12.5%, NL 0% because Box 3 is paid annually).

Mortgage math

Standard annuity amortization: M = Lโ‚€ ยท r / (1 โˆ’ (1 + r)^โˆ’n) with r = monthly rate, n = term in months. Monthly split: interest = balance ร— r; principal = M โˆ’ interest. Loan balance updates each month; the home value follows (1 + appreciation)^(1/12) โˆ’ 1 compounded monthly.

Investment portfolio

Two buckets (equity ETF and government bonds) with a user-controlled allocation slider. Monthly returns via (1 + annual)^(1/12) โˆ’ 1, annual rebalance to the target split. Cost basis is tracked per bucket so realization tax is computed correctly when the country uses different rates per asset class (Italy) or a single LTCG rate (US).

Country-specific tax treatment

The simulator does not branch on country; instead each country implements a small set of pure functions: one-time costs, monthly extras, monthly property tax, annual buy-side tax effect, portfolio drag, and unrealized CGT. Below is what those hooks compute for each jurisdiction.

United States

  • Closing costs default 3% of price.
  • Property tax = rate ร— home value (annual, applied monthly).
  • PMI = pmiRate ร— original loan, while LTV > 80%.
  • Itemize vs standard each year. Itemized = deductible mortgage interest (interest scaled by min(1, $750k / avgBalance)) + min($10k SALT cap, property tax + state-local income tax). State-local income tax is approximated as householdIncome ร— stateLocalIncomeRate (a flat-rate proxy that ignores state-bracket structure). If itemized > standard deduction (2025: $15k single / $30k MFJ), we apply the federal marginal rate to the excess.
  • Realization tax on rent portfolio: LTCG rate (default 15%) + NIIT 3.8% if toggled.

Netherlands

  • One-time costs: 2% overdrachtsbelasting (transfer tax), or 0% for first-time buyers below the threshold (~โ‚ฌ525k); ~1.5% notary plus advisor; NHG premium of 0.6% of loan when applicable.
  • Year-1 one-off deduction. The mortgage-related share of the notary + advisor + valuation bundle (default 60%) plus the NHG premium in full are deductible from Box 1 income in the year of purchase. Refunded at the marginal rate. Only applies to HRA-eligible annuity products.
  • Recurring: OZB ~0.1% ร— WOZ; Eigenwoningforfait at 0.35% of WOZ (2.35% above ~โ‚ฌ1.31M).
  • HRA (Hypotheekrenteaftrek): deductible at the lower of marginal rate and the ceiling (โ‰ˆ 36.97%), only for annuity products. Net annual buy-side tax effect = min(marginal, ceiling) ร— interestPaid โˆ’ marginal ร— EWF.
  • Box 3: 2025 transition deemed yield ร— 36% on portfolio above the per-person threshold (~โ‚ฌ57k single, doubled if partnered). The whole portfolio is treated as the "investments" bucket.

Italy

  • One-time costs (prima casa, private seller, non-luxury A/2 to A/7):
    • Imposta di registro: 2% ร— cadastral value
    • Imposta ipotecaria + catastale: โ‚ฌ100 fixed (โ‚ฌ50 + โ‚ฌ50)
    • Imposta sostitutiva sul mutuo: 0.25% ร— loan amount
    • Notary 1.5% (parameter)
    • Real-estate agent 3% + 22% IVA (parameter)
  • Recurring: TARI flat (annual); IMU exempt (prima casa, non-luxury).
  • Mutuo deduction: 19% ร— min(interest paid in year, โ‚ฌ4,000), a credit against IRPEF, prima casa only.
  • Bollo: 0.2% on portfolio market value, annually.
  • Realization tax: 26% on equity ETF gains, 12.5% on Italian/EU government bond gains.

Policy simulation (inflation indexing)

Several thresholds are inflation-indexed in real life: the NL Box 3 allowance, the US standard deduction and SALT cap, the IT mutuo cap, and so on. Each exposes a sibling annual-growth field. At year tick N, the engine evaluates the parameter as base ร— (1 + growth)^(N โˆ’ 1), so year 1 always matches the base value and growth compounds geometrically afterwards.

Set the growth to 0% for "frozen at today's value" (this is what historic IT mutuo caps look like). Use 2% to approximate CPI indexation. Negative values let you simulate cuts. We only support smooth compounding, not step changes.

One-time costs (transfer tax, registration tax, NHG and first-time-buyer thresholds, cadastral value for closing) are not escalated since they only fire at t = 0.

Open assumptions

  • Dividend withholding tax on equity ETFs ignored.
  • NL Box 3: whole portfolio in the "investments" bucket; the bond/cash distinction is not modelled.
  • IT: distributions ignored, taxes only at realization.
  • Maintenance is a flat % of value, with no shock years.
  • HOA / TARI / insurance are flat, with no inflation modelled.
  • NL partnered case uses the same marginal rate for both partners (simplification).
  • Italy luxury homes (A/1, A/8, A/9) are excluded; IMU exemption assumed.
  • Annual rebalance treated as cost-basis-preserving (a simplification; in practice rebalancing crystallises gains).