LuniBound · Methodology
How LuniBound works
Every number LuniBound shows comes from the formulas on this page — no black box and no AI guessing. Here is exactly what we calculate, what we assume, what we leave out, and how we check that the math is right.
Last updated October 26, 2026.
1. Your FI number
Your financial-independence (FI) number is the portfolio that could pay for a year of your life at the withdrawal rate you choose. If you'll have income you can count on in retirement — a pension, rental income, an annuity — the portfolio only has to cover the rest.
At a 4% withdrawal rate that is 25 times the spending your portfolio has to cover. Spending $48,000 a year with no guaranteed income gives an FI number of $1,200,000. If guaranteed income covers all of your spending, the FI number is zero.
The 4% figure comes from historical studies of US stock and bond returns, which found that withdrawing 4% in the first year and then adjusting for inflation usually lasted at least 30 years. Early retirements can last longer than that, so many people test 3.5% as well.
2. Everything is in today's dollars
LuniBound works in real terms: amounts are in today's dollars and the expected return you enter is the return after inflation. That removes the need for a separate inflation setting and keeps every number comparable to what things cost now. Diversified stock portfolios have historically returned roughly 5–7% a year after inflation, with no guarantee for the future.
3. The expected path
The "Financial freedom at" age comes from a steady projection: what you have invested today plus your monthly contributions, compounded every month at your expected real return, until the portfolio reaches your FI number.
portfolio after n months = today × (1 + r)n + monthly contribution × ((1 + r)n − 1) ÷ r
We look for the first month the portfolio reaches the target, up to 60 years ahead. If it never does at your settings, we say so instead of showing a made-up date.
One-time events. If you add an event — an inheritance or home sale, a gap year or a wedding — its amount is added to (or taken from) the portfolio when you reach that age, in both the expected path and every Monte Carlo future. The balance never goes below zero. Coast FIRE ignores events, because it measures what your current savings can do on their own.
Try it: what compounding does
$10,000 invested once, compared with the same $10,000 kept as cash (0% real return). An illustration, not a forecast.
4. Monte Carlo: 500 possible futures
Real markets don't grow in a straight line, so LuniBound also simulates 500 futures. In each one, every year's return is drawn at random from a lognormal distribution with the average return and volatility you entered, and your contributions are added at the end of each year (a deliberate simplification).
The percentage shown is how many of the 500 futures reached your FI number by age 65, and the median age is the middle of those that did. The random numbers are seeded from your inputs, so the same inputs always give the same result.
Why the median future trails the expected path. The return you enter is treated as the average yearly return. When returns vary, a typical (median) path compounds a little more slowly than the average — at 7% with 15% volatility, roughly 5.8% a year — so the median FI age is usually somewhat later than the expected one.
5. Coast FIRE
Your Coast number is what you'd need invested today so that, with no more contributions, it grows into your FI number by your target age.
The planner shows the age you're projected to cross that line at your current contributions. The Coast FIRE calculator explains it in more depth.
6. The other calculators
- Barista FIRE: the portfolio covers spending minus part-time income, divided by the withdrawal rate.
- Savings rate: spending is take-home pay × (1 − savings rate); the years are found with the same monthly projection.
- How much do I need to retire: the monthly amount that grows today's money plus new savings into your FI number by the age you pick.
7. How we check the math
Before a formula goes on the site we write down the expected results, computed independently in a separate program, and our automated tests compare every calculator against them. A few of those reference results:
| Inputs | Result | Expected |
|---|---|---|
| $48,000/yr spending, 4% withdrawal | FI number | $1,200,000 |
| Age 35, $50,000 invested, $1,000/mo, 7% | Financial freedom at | Age 61.7 |
| Same plan, retire at 65 | Coast number today | $157,641 |
| Same plan + $20,000/yr guaranteed income | FI number · freedom at | $700,000 · Age 55 |
| Part-time income $24,000/yr | Barista FIRE number | $600,000 |
| Saving 50% of $80,000, from $0, 5% | Years to FI | 16.4 |
8. What LuniBound leaves out
- Taxes and fees. Not modeled. Lowering your expected return a little is a simple way to allow for fund fees, and withdrawals from pre-tax accounts are taxed.
- Social Security timing. Guaranteed income is treated as starting the year you stop working. Social Security usually starts between 62 and 70, so include it only if that matches your plan.
- Sequence of returns. Monte Carlo covers the build-up years; it doesn't yet simulate the withdrawal years, when a bad market early in retirement matters most.
- Changes in spending. One spending figure is used for every retirement year.
LuniBound is an educational calculator. Its results are estimates based on the numbers and assumptions you enter — not financial, tax, or investment advice.
9. Your data
Every calculation runs in your browser. The numbers you enter are kept only in your browser's local storage so the page remembers them; they are never sent to Lunibyte or anyone else, and we never put them in page addresses. Files you export, calendar files and moon cards are created on your device. Read the privacy policy.
10. Who makes LuniBound
LuniBound is made by Lunibyte, an independent software studio in Houston, Texas, that builds privacy-first tools. Questions or corrections are welcome at support@lunibyte.com.
See your own numbers
Open the planner — it runs entirely in your browser, with no account and no bank linking.
Open LuniBound