Results
Result
| ETF | Extra payment |
|---|
Charts, the method and the caveats are below ↓
Remaining debt over time (Restschuld)
Extra payment clears the loan earlier. From that point the saved amount of the monthly payment goes into the ETF, which is what makes the two strategies comparable at the end.
Show as a table
The ETF portfolio value over time
What each scenario's ETF portfolio is worth, and how much goes into it.
Portfolio value after tax, if liquidated that year
Show as a table
Amount paid in during that year
Show as a table
Both scenarios spend the same monthly amounts. When extra payments are done, the ETF scenario assumes respective contributions. In the Extra Payment scenario contributions are made when the loan is fully paid off, or when the monthly payment is lower (depending on settings).
How sensitive is the result to the core assumptions?
Outcome primarily depends on two unknowns: interest rate after fixed period and ETF returns.
Does it depend on the extra payment amount?
Advantage per euro of extra payment. Once the loan is gone, further euros can only earn the ETF return, so the marginal euro is worth less.
Show as a table
When should you make the extra payment?
The same amount, paid in different years of the fixed period. An extra euro earns whatever rate you are expected to pay until the end of the full loan period, so while your fixed rate is cheap, later is usually better.
Show as a table
This is a model, not advice
It is not financial or tax advice, it's a calculator comparing two scenarios based on the inputs and assumptions. Check all the numbers carefully and verify that they match your situation (e.g. even the possibility to make extra payments).
Consult a financial advisor for personalized advice.
Volatility is not modelled. An extra payment earns the mortgage rate with certainty — the euro you pay off is a guaranteed, tax-free return. The ETF number here is a smooth line standing in for something that is volatile in reality, and that uncertainty is not part of the model.
Also not modelled: inflation, refinancing fees, church tax (Kirchensteuer), and the value of keeping cash accessible rather than locked in a house.
Method
Equal cash flow
Both strategies spend the same amount every month until the original mortgage (the one with no extra payments) — is repaid. Only the destination differs:
| Scenario | Where the money goes |
|---|---|
| Extra payment | Into the loan. Once the loan is repaid, the freed monthly payment goes into ETF until the original payoff date. |
| ETF | Into the ETF portfolio. The mortgage runs its natural course. |
Both are debt-free at that date and have spent identical amounts each month. This is why the extra-payment side has an ETF portfolio at all, and why it even can pay in more than the ETF side. As the total interest paid is lower, the difference reaches the ETF, but it arrives later, so it compounds for less time. This logic is why the comparison of the after-tax values of the portfolio gives a correct assessment of the two scenarios.
New mortgage after the fixed period ends
The follow-up rate (Anschlusszins) is an input. What happens to the payment is two separate decisions.
The base case. The new contract fixes either the repayment rate (Tilgungssatz) — payment = (interest rate + Tilgung) × remaining debt ÷ 12, so it rises with the interest rate — or the monthly payment. Both default to the fixed-period figures.
If you set a payment that does not cover the interest, the debt would grow without limit. The model raises the payment to a 1 % minimum repayment rate and warns you.
The extra payment scenario. Having repaid early you owe less at the reset, so the base case's repayment rate and its monthly payment cannot both remain. You have a choice to keep the same monthly payment (same term) or repayment rate (shorter term). This is defined on the basis of the new contract after fixed period ends, not on the original mortgage.
Validation
The application includes multiple automated checks to make sure there is internal consistency and results make sense. To check it yourself you can set the ETF return equal to the mortgage rate and the two strategies will produce identical result.
Compounding
The mortgage rate is a German nominal rate (Nominalzins), so the monthly
rate is rate / 12. The ETF return is a compound annual growth rate, so its monthly
rate is (1 + r)^(1/12) − 1. These are not the same. A 5 % nominal mortgage costs
5.1162 % a year, and that — not 5 % — is the ETF return it ties with.
Tax
Repaying a mortgage is not a taxable event; investing in an ETF is. Tax applies to the fund only.
- 25 % Abgeltungsteuer plus 5.5 % Solidaritätszuschlag on the tax = 26.375 %.
- 30 % Teilfreistellung for an equity fund holding at least 51 % shares, giving an effective 18.4625 % on gains. Editable.
- Vorabpauschale, charged each December on 70 % of the Basiszins applied to the January value, capped at the year's actual gain. This raises the cost basis and thus not taxed again on sale. Your broker debits it from your settlement account (Verrechnungskonto); since both strategies spend the same amount every month, paying it means that December's fund contribution is smaller by the same amount. Both sides pay it — the extra-payment side less, because its portfolio is smaller for longer.
- Sparerpauschbetrag, 0 by default. With no allowance the Vorabpauschale is a drag: tax paid before you sell, on unrealised gains. With enough allowance to absorb it the effect reverses — it consumes an allowance that would otherwise expire and raises the cost basis. Entering unused allowance moves the answer toward the ETF.
Tax on sale is charged on the final value minus the cost basis, less any allowance still remaining. With no allowance the two charges come to exactly 18.4625 % of everything the fund earned: whatever the Vorabpauschale takes early is taken off the bill at the end, never twice and never not at all. The results table shows the ETF value after all of it.
Not modelled
Inflation, fund volatility and sequence-of-returns risk, refinancing fees, church tax, liquidity, and the extra-repayment cap in your loan agreement.
Where it runs
The model is a Python program compiled to WebAssembly and run in your browser. Nothing is transmitted or stored.