Skip to content
Investment Path Your money, in perspective
Home Guided planner Full simulator How it works Log in
English Deutsch

Method and assumptions

How it works

Every number this site shows comes from arithmetic you can check with a calculator. Here is that arithmetic, one example worked all the way through, and the list of things it leaves out.

Why this exists

Most retirement calculators ask for a monthly amount and return a single large number, with the assumptions that produced it hidden behind the result. The number is not the useful part. Which assumptions moved it is.

So this site shows return, inflation and tax as inputs you can change, and every projection is an estimate under assumptions you chose rather than a forecast.

Investment Path was built for people who want to understand a long-term saving plan before trusting its headline number. It keeps the assumptions visible, shows the arithmetic, and makes conservative comparisons easy without presenting an estimate as personal financial advice.

Built and maintained by Christoph Dirnbauer. Contact details are on the Impressum.

The shape of the calculation

The simulation walks one month at a time, from today to the end of the plan. Nothing is computed yearly and then divided. At every monthly boundary, in this order:

  1. the portfolio grows by that month's return;
  2. while you are still saving, that month's contribution is added;
  3. once retirement has started, that month's withdrawal is sold and taxed.

Contributions are paid at the start of each month, so the very first one is made today and earns a return in its first month. A 30-year plan therefore makes exactly 360 contributions, and the return on the last one lands on the boundary where saving ends and retirement begins. Those two phases share that boundary: the first withdrawal is taken there, not a month later.

Turning a yearly rate into a monthly one

Yearly return, inflation and contribution growth are converted to the monthly growth rate that compounds to the annual input:

m = (1 + r)1/12 − 1

For a 7 % yearly return that gives m = 0.565415 % per month, and twelve of those compound back to exactly 7 %.

The shortcut of dividing by twelve is wrong and always overstates growth. 7 % ÷ 12 = 0.5833 % per month, and twelve such months compound to 7.229 % – about 0.23 percentage points of invented return every year. Over thirty years that is not a rounding error. The same exact conversion is applied to inflation and contribution growth.

Withdrawal percentages use a different depletion conversion. It makes twelve monthly withdrawals remove exactly the annual share:

d = 1 − (1 − r)1/12

At 4 percent a year this gives d = 0.339605 percent per month. Simply using 4 percent ÷ 12 would remove only 3.9275 percent over twelve months, so it would understate the modelled annual depletion.

The month step, and a closed form

With m in hand, each saving month is two operations:

value ← value × (1 + m)
value ← value + contribution

Repeated n times with a constant contribution P, that is the standard future value of an annuity-due:

FV = P × [ (1 + m)n − 1 ] ⁄ m × (1 + m)

The trailing (1 + m) is the "paid at the start of the month" part; without it you would be modelling contributions that arrive a month late. The site does not use this formula – it runs the loop, because the loop also handles contribution changes, one-off events, tax and withdrawals, which no closed form covers. But the two agree to the cent on a plain plan, and the worked example below shows that check.

Today's money

Every figure is shown twice. Nominal is the euro amount at that future date. Real is the same amount expressed in what money is worth today:

real = nominal ⁄ (1 + i)n

where i is monthly inflation and n the months elapsed. At 2 % a year over 30 years the divisor is 1.811362, so a euro then buys what 55 cents buys now. Real is the honest number to plan with, and it is the one the site leads with.

Tax on gains

On a sale, tax is charged only on realised gains – not the full sale value. A German accumulating fund can also incur the Vorabpauschale explained below before any sale.

The default rate of 18.4625 % is not a guess. It is the German capital-gains treatment of an equity fund:

25 % Kapitalertragsteuer × 1.055 Solidaritätszuschlag = 26.375 %
26.375 % × 0.7 Teilfreistellung = 18.4625 %

The 30 percent Teilfreistellung is the partial exemption equity funds receive, and it is folded into the rate rather than applied separately. If you hold something that does not qualify, the 26.375 percent preset is the one to use. The Austria preset applies a simplified rate of 27.5 percent to gains realised on sale and uses an average cost basis.

It is not a full Austrian fund-tax model. It does not model ongoing fund taxation, reported distributions or distribution-equivalent income, nor the broker’s actual KESt withholding. Use it as a comparison assumption, not as an Austrian tax calculation.

Church tax is not simply added on

Kirchensteuer is charged on the Kapitalertragsteuer rather than on the gain, and it is itself deductible as a Sonderausgabe – so paying it lowers the tax it is charged on. That makes it a correction to the whole rate, not a number to add at the end:

KESt = gain ⁄ (4 + k)
total = KESt × (1 + 0.055 + k)

with k = 0.08 in Bavaria and Baden-Württemberg and 0.09 elsewhere. The six rates the two German presets can produce:

Effective German capital-gains rates
Church tax Equity fund Standard
none 18.4625 %26.3750 %
8 % 19.4730 %27.8186 %
9 % 19.5966 %27.9951 %

The intuitive arithmetic – 26.375 + 9 = 35.375 % – overstates the bill by more than a quarter. Over a long drawdown that is not a rounding error, which is why the rate is computed for you rather than left as a sum to do in your head.

The yearly tax-free allowance

Germany's Sparerpauschbetrag (§ 20 Abs. 9 EStG) leaves the first slice of each year's investment income untaxed: €1,000 per person, €2,000 for a jointly assessed couple. The field takes any number, because it is a legal figure that has been changed before – it was €801 until 2023 – and a projection running to 2060 should not pretend otherwise.

Two properties make it behave unlike a rate:

  • It is consumed. Once a year's sales have used it up, every later sale that year is taxed in full.
  • It resets and does not carry over. An allowance you did not use is simply gone at the end of the year.

Where a realised loss has been banked, the loss is used first and the allowance absorbs only what survives. That is the order § 20 EStG prescribes, and also the one that wastes least: a banked loss keeps indefinitely, this year's allowance expires.

The site charges it on plan years – the twelve months from the day you start – rather than calendar years, because the model has no start date to hang a calendar on. For a monthly saver the difference is which month the allowance refreshes in, not how much of it there is. Austria has no equivalent, so choosing that preset removes the field.

Vorabpauschale: tax before anything is sold

A German accumulating fund does not distribute, so without a rule its holder would pay nothing for decades. § 18 InvStG closes that with an advance lump sum charged each January on the year just ended:

Basisertrag = base × Basiszins × 0.7
Vorabpauschale = max(0, min(Basisertrag, Wertsteigerung))

The factor 0.7 comes from § 18 itself and has nothing to do with the Teilfreistellung, which is already inside the rate. Applying it twice would undertax the charge by 30 %.

Two things keep it from running away. The Wertsteigerung cap means a flat or falling year owes nothing however high the Basiszins, and the Zwölftelung gives each purchase only one twelfth of a year's Basisertrag for each month it was actually held – a December contribution accrues a twelfth, not the lot.

Whatever is charged raises your cost basis (§ 19 Abs. 1 S. 2 InvStG). That matters: without it, the same profit would be taxed once in advance and again when the share is finally sold. And since there is no cash account in a projection, the bill is paid by selling just enough – grossed up for the gain that sale itself realises.

The Basiszins is an assumption, not a constant. The BMF publishes it each January from the Bundesbank's 15-year government-bond yield: 2.55 % for 2023, 2.29 % for 2024, 2.53 % for 2025 and 3.20 % for 2026, which is the default here. It was negative in 2021 and 2022, and the charge those years was nothing at all. Over a thirty-year plan what you assume for 2041 matters far more than any figure yet published, so it is an editable input.

The charge is applied on plan years – the twelve months from the day you start – for the same reason the allowance is: the model has no calendar. Purchases are weighted by their months held, and shares sold before the next charge are removed from both the base and the growth cap. FIFO removes the oldest lots; the average method removes a proportional share. A distributing fund is not modelled: distributions reduce the Vorabpauschale and are taxed on their own, so switch the charge off rather than guessing.

What it costs, in the same example

The plan below – €400 a month for 30 years at 7 %, with the €1,000 allowance – pays nothing at all for its first seven years: year one's base is €2,600, so the Basisertrag is €58.24 and the allowance covers it whole. The first actual charge falls in year 8, and it is €4.62. By year 30 the portfolio is large enough that the year's charge is €1,724.72.

Over the whole thirty years €15,485.00 of assets are sold to settle it. The portfolio ends at €445,660.64 instead of €470,425.94 – but most of that gap is tax that would have been due anyway, just later. After settling everything, the plan is worth €407,400.93 against €410,344.18 without the charge. The real cost is €2,943, or 0.7 %: not the tax itself, but the compounding that tax could not do once it had left.

Which shares a withdrawal sells

Selling part of a portfolio means choosing which shares leave, and that choice changes the bill. Two methods are offered:

FIFO sells the oldest shares first, which is what German law prescribes for securities (§ 20 Abs. 4 EStG). Those are the shares that have grown the most, so they carry the largest embedded gain: early withdrawals are taxed harder, later ones more lightly. This is the default, because it is what actually happens.

Average basis applies the portfolio's overall gain fraction to every euro sold, as if every share were an average share. It is the usual projection shortcut, and it understates the tax on the first years of a drawdown.

One sale realises one gain: the proceeds minus the purchase cost of every share in it, netted with sign and only then floored at zero. That is how a single sell order is assessed, so a share now below its purchase price offsets an older share's profit within the same order rather than being ignored. A sale that nets a loss owes nothing and banks that loss against later gains, which is what the Verlustverrechnungstopf of § 20 Abs. 6 EStG does.

Getting a specific amount of cash

When you ask for a fixed sum – a monthly payout, a one-off withdrawal – the sale has to be big enough to leave that much after tax. Selling exactly the amount you want would leave you short by the tax.

Under the average method that is one division. Under FIFO it is not, because as the sale consumes older low-cost lots, the taxable fraction changes; it changes again if the running gain crosses zero. The required sale is solved piecewise, lot by lot, so the cash you asked for is the cash you get.

A worked example, end to end

Every figure below is produced by the same engine that serves the simulator, and a test recomputes them to keep this page honest.

Take a plan of €400 a month for 30 years, at 7 % nominal return and 2 % inflation, taxed at 18.4625 % with the €1,000 yearly allowance, followed by 25 years of drawing 4 % a year. Those are the simulator's own defaults, so you can reproduce every figure below by entering them. The Vorabpauschale is off, as it is on a fresh form; its own cost is worked out above.

1. The rates

return:  (1.07)1/12 − 1 = 0.565415 % / month
inflation: (1.02)1/12 − 1 = 0.165158 % / month
drawdown: 1 − (1 − 0.04)1/12 = 0.339605 % / month

2. The first four months

Month 0 is today: €400 goes in and has not yet grown.

Portfolio value over the first four months
Month Growth Paid in Value
0€0.00€400€400.00
1€2.26€800€802.26
2€4.54€1,200€1,206.80
3€6.82€1,600€1,613.62

Month 1 checks by hand: €400 × 1.00565415 = €402.26, plus the next €400, is €802.26.

3. After 360 months

Result after 30 years of saving
Paid in€144,000.00
Value, nominal€470,425.94
Gain, less the allowance€325,425.94
Tax if sold in full€60,081.76
After tax, nominal€410,344.18
Value in today's money€259,708.47
After tax, today's money€226,539.08

The closed form agrees. Putting the same numbers through the annuity-due formula above:

400 × ((1.00565415)360 − 1) ⁄ 0.00565415 × 1.00565415 = €470,425.94

The month-by-month loop and the textbook formula match to the cent. That is worth stating because it is the one part of this page you can verify in a spreadsheet in two minutes.

The rest follows directly. The gain is simply what came out minus what went in: €470,425.94 − €144,000 = €326,425.94, of which this year's €1,000 allowance is untaxed, leaving €325,425.94. Tax on all of that would be €325,425.94 × 0.184625 = €60,081.76. And today's money divides by the 1.811362 that 30 years of 2 % inflation compounds to: €470,425.94 ÷ 1.811362 = €259,708.47.

Read those last two lines together, because they are the point of the whole exercise. The headline is €470,426. What it is actually worth, in money you can spend today and after the tax office has been paid, is €226,539 – 48 % of the headline. Any calculator that shows you only the first number is showing you the least useful one.

4. The first year of retirement

Drawing 4 % a year means selling 0.339605 % of the portfolio each month. On €470,425.94 that first sale is €1,597.59.

Under FIFO that sale takes the very oldest shares – the €400 paid in thirty years ago, now worth roughly eight times what it cost. So almost all of it is gain: €1,387.72 of the €1,597.59, or 87 %. A new plan year has just begun, so the €1,000 allowance covers most of that gain and only €387.72 is taxed: €71.58, leaving €1,526.01 in hand, or €842.46 a month in today's money.

The next month is the interesting one. The portfolio has grown, so the sale is slightly larger – and the allowance is gone. The whole gain is taxed and the payout drops to €1,344.19. Nothing went wrong; the first month simply spent a year's allowance in one go.

That is why the site reports the first year's average rather than the first month alone: €1,372.79 nominal, €751.08 in today's money. Quoting €1,526.01 would advertise a monthly income the plan pays once every twelve months. The average is what it actually pays.

Notice that the portfolio keeps growing through retirement in this smooth scenario: 7 % growth followed by 4 % dynamic depletion leaves 1.07 × 0.96 − 1 = 2.72 % nominal balance growth over a year. That is a property of these inputs, not a law. Lower the return or raise the withdrawal and the same machinery will show you the balance falling.

Where the return comes from

The worked example uses a fixed rate. Two other modes are available, and they answer different questions.

Fixed applies the same return every month. It shows the shape of compounding clearly and says nothing about risk. Every number above is of this kind.

Historical replays a real monthly return series in order, oldest first. Returns are computed from monthly opening prices, adjusted for splits and for reinvested dividends, so they are total returns rather than price returns, and converted to euro at the exchange rate on each observation date. When a plan runs longer than the data – which most do – the geometric average of the part actually used carries the remainder. Because the series starts at a fixed point in history, a plan beginning at a market peak looks very different from one beginning at a trough. That sensitivity is the point of the mode, not a defect in it.

Monte Carlo draws each month's return randomly from a lognormal distribution whose expected return and volatility match your assumptions, runs many paths, and reports percentile bands. The 10th–90th band contains 80 percent of simulated outcomes under that assumed distribution. It is not an 80 percent guarantee about reality: real markets can produce extreme outcomes more often than this lognormal model assumes.

Where the numbers come from

Historical mode uses adjusted monthly opening prices for the selected index or security. Splits and reinvested dividends are included, and each observation is converted to euro before the monthly return is calculated. Prices are cached for a few hours rather than fetched per request.

Because prices are converted to euro before returns are computed, a historical projection already carries the currency experience of a euro investor. That is the right answer for a euro investor and the wrong one for anybody else.

What the currency selector does

The simulator can display figures in euro, Swiss francs, dollars or pounds. That is a label, not a conversion, and the distinction matters in two different ways.

For a fixed-rate or Monte Carlo projection it is harmless. The model multiplies and compounds numbers and has no currency of its own, so 400 a month for 30 years at 7 % is the same arithmetic whichever symbol sits beside it. Nothing is being converted because nothing needs to be.

For a historical backtest it is a caveat. Those returns are computed from prices already converted to euro, so they include the euro's exchange-rate experience over the period. Choosing pounds relabels them; it does not recompute them from a British investor's point of view, and that investor's real return over the same period would have been different. Treat the historical mode as a euro result no matter which symbol is showing.

Everything else – return, inflation, tax rate, contribution, horizon – is an assumption you supply. None of it is forecast for you.

What it deliberately does not model

The most useful section on this page.

  • Costs. Fund expense ratios, order fees, bid-ask spreads and custody charges are not deducted. An ongoing charge of 0.2 % is a fifth of a percentage point off every year in the example above; subtract it from the return you enter rather than hoping it is small.
  • Sequence-of-returns risk, except in Monte Carlo and historical mode. A fixed rate assumes returns arrive smoothly, which is precisely the assumption that flatters a retirement drawdown – a bad first decade of retirement does far more damage than the same decade later.
  • Pension and state benefits. No public pension, occupational pension or other retirement income is included. The payout shown is what the portfolio alone produces.
  • Your actual tax position. One effective rate and one allowance are applied to realised gains, and the allowance is assumed to be entirely available to this plan. The model does not know your other income, your marital status, or how much of the allowance your bank has already used on a different account.
  • Distributing funds. The Vorabpauschale is modelled for an accumulating fund only. A distribution would reduce the charge and be taxed on its own, and neither is guessed for you – switch the charge off if your fund pays out.
  • Life. The plan runs exactly as entered, for as long as entered. No contribution gaps, job changes, illness or divorce.

None of this makes a projection useless. It makes it an estimate of one scenario under stated assumptions, which is all any projection has ever been.

Privacy, in one line

The public simulator stores nothing you enter: figures are sent to the server, used to compute a result in memory, and not written down. The full account is in the Datenschutzerklärung.

Not advice

This is an educational tool. It is not investment, legal or tax advice, and it is not a recommendation to buy or sell anything. Past performance does not predict future returns. For a decision that matters, talk to someone qualified who knows your situation.

Stand: Juli 2026
Home Guided planner Full simulator Legal notice Privacy