Ember Back to the planner

Methodology & assumptions

Exactly how Ember turns your inputs into a financial-independence date, a target number, and a “will it last?” probability — and where we simplify. Everything runs in your browser. Not financial advice.

Real return FIRE number The bridge Couples & survivorship Projection & FI date Monte-Carlo Historical replay Withdrawal strategies Tax Goal solver Limits & honesty

1 · Real (inflation-adjusted) return

Every figure in Ember is in today’s money. We convert your nominal return and inflation into a single real return using the exact Fisher relation, not a subtraction:

realReturn = (1 + nominalReturn) / (1 + inflation) − 1

So 7% nominal with 3% inflation is a 3.88% real return (not 4%). Working in real terms means a dollar at age 30 and a dollar at age 65 mean the same thing on every chart.

2 · The FIRE number

Your target portfolio is your retirement spending divided by your safe withdrawal rate (SWR):

fireNumber = retireSpend × (100 / swr)

At a 4% SWR that’s the familiar “25× your annual spending.” Ember then adjusts this effective target for two things: other income in retirement (a pension/rental lowers the portfolio you must build) and taxes (see §7), which gross up the withdrawal your portfolio has to fund.

2b · Other income that starts later — the “bridge”

A pension or state benefit usually starts years after you reach financial independence. Between those two dates your portfolio must fund the whole of your spending on its own. So Ember sizes your target as:

fireNumber = target for the reduced spend (once the income starts)
            + the present value of bridging the gap until it does

The bridge is discounted at your real return, and the FI date is solved iteratively (your target depends on when you retire, and when you retire depends on the target).

Why this matters. Earlier versions of Ember subtracted other income from the target immediately, even if it began decades later. That made the headline FIRE number and FI date look better than reality — and quietly disagreed with the simulation in §4. Fixed in Sprint 31: a plan with a pension at 67 now shows a higher target and a later FI date, and it survives a zero-volatility drawdown. If you saved a plan with other income before this change, your number will have gone up. That is the honest number.

2c · Planning as a couple, and what happens when one of you dies

Ember can model two people (in the account app — the offline planner here models one person). The idea is two earners, one pot: two ages, two incomes, two dates for stopping work, funding a single household from a single portfolio. You each keep your own retirement date, so “I stop at 55, you work to 62” is modelled as it actually happens.

The plan then runs to the last survivor: if one of you is expected to live to 100 and the other to 90, the money has to last until 100. That errs on the safe side, because a longer plan is a plan you must fund for longer. When the first of you dies, that person’s salary stops, and so does their pension.

Survivor benefits — why Ember asks instead of assuming

Most planners handle this by applying a percentage. Ember does not, because there is no honest percentage to apply. There is no EU survivor-pension rule. Survivors’ pensions are decided by each country individually — EU law only coordinates which country pays and lets a benefit be exported, and the equal-treatment directive explicitly excludes survivors’ benefits. The Commission’s own guidance says plainly that requirements vary between countries and that not every EU country pays a survivor’s pension at all.

The real spread is the entire range: several countries pay nothing permanent to a surviving spouse, while others pay at or near the deceased’s full pension. Two further details matter more than the headline rate, and both cut against people who are planning for financial independence:

So Ember offers two mechanisms, named for what they do rather than for a country:

The survivor keeps the larger of the two pensions. Not both — the higher one. This is how US Social Security works, and it needs no percentage at all: Ember simply tops the smaller pension up to the larger.

A survivor’s pension you enter yourself, for as long as it is paid. This is the shape used across most of Europe: you keep your own pension and receive a survivor’s benefit on top. Read the figure off your own provider’s statement and enter it, along with the number of years it lasts if it is time-limited.

About that pre-selection. If your device’s clock is set to a US time zone, Ember pre-selects the “larger of the two” option for you — and tells you on screen that it did, and that it was a guess from your browser. It reads nothing but the time zone your browser already publishes to every website: no location lookup, no IP address, no third party, and nothing is stored or sent anywhere. It only ever fills in the setting while it is still untouched — it will never change a choice you have made, and it never pre-selects an amount, because no honest amount exists to guess. If the guess is wrong, change it; that is why it is a visible setting and not a silent switch.
What Ember will not do. It will not put a survivor percentage on your screen, or quietly swap which country’s rules compute your plan without telling you. A wrong currency symbol is obvious; a wrong survivor rule is invisible and can change the survivor’s income by a factor of two. The default is to model no survivor benefit at all — which means “not modelled”, not “you will receive nothing”. If you do not know your figure, the conservative reading is the one Ember starts with.
Two things that also stay simple, deliberately. Household spending does not step down after a death — real households do fall somewhat, but by how much is not a number Ember can source for you, so it keeps spending flat, which is the cautious direction. And a partner’s salary is held level rather than grown; the career-growth curve applies to the main income only, because applying one person’s career shape to someone else’s career would be a guess dressed as arithmetic.

3 · Deterministic projection & your FI date

The main line is a year-by-year real-terms projection from your current age to 100. Income can grow over your career and plateau at a peak age. Your FI date is the first age the portfolio reaches the FIRE number — interpolated to a fraction of a year so small input changes move it smoothly rather than in jumps.

The timing convention (and why it matters)

Every year in the accumulation projection is exactly this, and the milestone table, chart and CSV all show the same arithmetic:

endOfYear = startOfYear × (1 + realReturn) + netCashFlow

Growth accrues on the balance you started the year with; the year's net cash flow — income minus spending, minus any life events — lands at the end of the year. So a contribution earns no return in the year you make it. That is the conservative choice for saving, and it is why our numbers can be slightly behind calculators that credit a full year's growth to money you only saved in December.

In retirement the convention deliberately flips: spending is withdrawn at the start of the year, before growth (see §4). Both choices share one rule — money moving in or out never earns that year's return — and both err on the cautious side of the answer they affect.

A spending deficit is real money. If your spending exceeds your income, the shortfall is withdrawn from the portfolio, exactly like a negative contribution. Ember used to floor this at zero, which quietly let a portfolio compound as though the gap cost nothing; a plan with no income and $48,000 of spending appeared to grow. It now shrinks, which is what actually happens.
“Not reached” is a real answer. If your portfolio only reaches the FIRE number after your life expectancy, Ember says not reached within the modelled lifetime rather than quoting an age you would not live to see — and it reports no success probability at all, because a retirement that never begins cannot be scored. A plan that never retires never runs out of money, and calling that “100% success” would be the most flattering lie the model could tell.

4 · Monte-Carlo (“will it actually last?”)

A single average return hides sequence-of-returns risk — a crash just after you retire hurts far more than the same crash later. So Ember (Pro) runs hundreds of randomized lifetimes: each year’s return is drawn from a normal distribution centred on your real return with your volatility as the standard deviation. Withdrawals are taken before growth each year (the conservative choice). The success rate is the share of runs whose money survives to your life expectancy; we also report the 10th/50th/90th-percentile portfolio paths.

The random generator is seeded (deterministic), so the same inputs always give the same result — reproducible, testable, and frozen by a golden-master test in our suite.

5 · Historical replay (block bootstrap)

Instead of random draws you can replay sequences of real-world-style annual returns, sampled in contiguous blocks so crashes and recoveries stay clustered the way they occur in markets.

Honest caveat: the bundled series is illustrative — a multi-decade set of real-equity-like returns with a fat left tail — not exact Shiller 1871+ data. Treat historical mode as a stress-flavoured alternative to Monte-Carlo, not a claim about specific years. A versioned real dataset is planned (EMB-401); this page will say so the moment it ships.

6 · Withdrawal strategies

StrategyRule
Fixed 4%Spend the same real amount every year (classic 4%-rule spending).
Flexible %Spend a constant % of the current balance, floored at 60% of target — you tighten in bad years.
GuardrailsSimplified Guyton-Klinger: cut spending ~10% if your withdrawal rate drifts too high, raise it ~10% if it drifts low.

7 · Tax — a deliberate simplification

Ember estimates one effective rate on retirement withdrawals from your account mix: tax-deferred (401k/pension) is treated as income-taxed, taxable brokerage as capital-gains-taxed on the gain portion, and Roth/tax-free as untaxed.

This is intentionally not a jurisdiction-specific tax engine (no brackets, credits, RMDs, or local rules). It captures the shape of the tax drag on FIRE, not a filing. For real numbers, consult a qualified professional in your country.

8 · Goal solver (“free by age X”)

The goal-first insight inverts the projection: holding your income, returns and retirement spending fixed, it finds the highest annual spending — i.e. the lowest saving — whose FI date still lands by your target age, then reports the required annual savings and savings rate. If even saving 100% of income can’t reach the goal in time, it says so and shows the earliest age that is reachable.

9 · Limits & honesty