Two-Investor Race Simulator

Two hypothetical investors, two start ages, one live chart. Tweak monthly contributions, return rate, and when each one stops contributing — see exactly when time-in-market beats more-money-later.

The race at retirement

Drag any slider to see who's ahead — and by how much.

Early — starts at 22
$0
Contributed $0 across 0 yrs · stops at age —
Late — starts at 32
$0
Contributed $0 across 0 yrs · stops at age —
Set up the race below to see the result at retirement.

Balance over age

Annual return · live
Early Late

Race setup

Both inputs are independent
Early Starts young
Late Starts later
Set up the race to see the catch-up math.

Assumptions

Same for both

Final results

At retirement
Early
End balance
$0
Contributed
$0
Growth
0×
Late
End balance
$0
Contributed
$0
Growth
0×

Settings

How it works

  1. Set up two investors. Each one has its own start age (when they begin contributing), stop age (when they stop adding new money — the balance still keeps compounding), monthly contribution, and an optional starting amount. The defaults — Early starts at 22, Late starts at 32, both put in $300/month until retirement — load on first visit so you have something to play with immediately.
  2. Pick the shared assumptions. The retirement age sets when the race ends; the annual-return slider controls how fast both balances grow. 7% is the long-run inflation-adjusted average for a broad US stock market index — change it to model bonds (~3%), aggressive equities (~10%), or a personalized rate. Flip the today's dollars toggle to discount future balances by the inflation rate, so $1M in 2065 reads as roughly what that buys today.
  3. Watch the chart redraw live. Every input change updates the SVG line chart instantly — no submit button, no waiting. The blue curve is Early, the amber curve is Late, the dashed gold line (when it appears) marks the age at which Late overtakes Early. Small notches on each curve show the age at which that investor stopped contributing.
  4. Read the scoreboard. The hero at the top of the page surfaces the headline numbers: each investor's end balance at retirement, how many years of contributions got them there, and a green winner banner with the dollar and multiplier gap. The catch-up insight tells you the monthly contribution Late would need to tie Early, which is usually a number that's either inspiring or terrifying.
  5. Everything saves locally. Inputs, the inflation toggle, the currency symbol — all stored only in your browser's localStorage. No account, no sign-in, no telemetry. Close the tab and come back tomorrow; your last scenario is still there.

What this trains — and why starting at 22 vs 32 matters

The single most-repeated piece of personal-finance advice — "start investing early" — gets stated as an aphorism roughly a hundred million times a year. It almost never gets demonstrated. Articles describe it; podcasts mention it; finance influencers cite the same Roth IRA chart and move on. What's missing is the interactive version: a tool that lets the reader actually drag the numbers around and feel the asymmetry between time and money. That's the gap this simulator fills.

The textbook example that makes the lesson visceral is two friends with the same income, same return, and same total dollars contributed — but different timing. Alice starts at 22, puts in $300/month for ten years, then stops at 32 and never adds another dollar. Bob waits until 32, puts in $300/month every month from 32 to 65 — three times as much money, three times as long. Plug it into the simulator at a 7% real return and Alice ends up ahead of Bob at retirement, despite contributing roughly $36,000 versus Bob's $118,800. The interactive part of the chart is where the lesson lands: you can see the Alice line sitting on a 33-year compounding tail with no new fuel, while the Bob line is still climbing fast at 65 but can't quite catch the head start.

Why does this happen? Two things compound at once: the dollar contributions, and the time-in-market on dollars already contributed. Alice's first $300 grows for 43 years. Bob's first $300 grows for 33 years. At 7%, that 10-year gap is a factor of about 2× — Alice's earliest dollars are worth twice as much at retirement than Bob's earliest dollars, before either of them adds a single follow-on contribution. The contribution gap is linear (Bob put in 3.3× the dollars), but the compounding gap is exponential — and exponentials win over decades.

The lesson isn't only "start at 22." If you didn't, the simulator is also where the catch-up insight lives: how much would Late need to contribute monthly to tie Early at retirement? It's almost always achievable for an Early who saved modestly, and often unrealistic for an Early who saved aggressively. Either way, seeing the number — instead of being told "more, somehow" — is what changes behavior. This tool exists because the gap between knowing the principle and acting on it is closed by feeling it, and a chart you can drag is the smallest possible "feeling" we can engineer into a web page.

Features

Tips for getting useful answers out of the simulator

Be honest about the annual return. The default 7% is the long-run inflation-adjusted return for a broad US stock-market index — and it's the right number for an average case over a 40-year horizon, but real years swing between –40% and +30%. The simulator is a smooth average; reality is jagged. If your portfolio is mostly bonds, ~3% is closer; if it's all-equity and you can sit through bear markets without selling, 7% real is defensible. A retirement plan built on a 10%+ assumption is fragile.

Use the today's-dollars toggle when the chart starts surfacing million-dollar numbers. A $2,000,000 nominal balance in 2065 feels like a yacht; at 3% inflation, it's around $700,000 in 2026 purchasing power — comfortable, not extravagant. Most lifestyle planning should be done against real dollars, not nominal. The toggle lets you flip between the two views without losing your inputs.

Resist the urge to set Late's monthly contribution arbitrarily high to "win." The point of the comparison isn't to crown a winner — it's to show that time-in-market is a multiplier even more than money is. The default 22-vs-32 / $300-a-month setup demonstrates the asymmetry on its own; sit with that shape for a minute before customizing. Then ask: what does it take, exactly, to close the gap? Most people are surprised by how much it takes — and equally surprised by how little time-in-market they would have needed to never face that question.

This is a simulator, not a planner. It assumes constant monthly contributions, constant returns, no taxes, no fees, no employer match, no Social Security, no irregular windfalls, and no spending in retirement. It's designed to make the asymmetry of compounding viscerally obvious in five seconds — not to replace a retirement plan. For an actual plan, layer in those moving parts with a financial planner or a more elaborate model.

Frequently asked questions

Do I need to create an account?

No. There is no sign-in, no email field, and no profile. Every input you make is saved only in this browser's localStorage on your own device. Nothing is sent to any server.

How does the math actually work?

Each month, the balance is multiplied by the monthly return rate (the annual-return input converted via (1+r)^(1/12) − 1 for genuine monthly compounding, not r/12) and then the monthly contribution is added — but only if the current age is between the investor's start age and stop age. Once the stop age passes, contributions cease but the balance continues compounding until the retirement age. The chart samples this loop once per month for accuracy, then plots one point per year to keep the SVG smooth.

Why does Early sometimes win even with much less money contributed?

Compounding is exponential and time is the exponent. Early's first dollar gets the longest stretch of compounding — at 7% real, ten extra years roughly doubles a dollar's terminal value. That asymmetry can dominate the linear advantage Late has in raw contributions, especially when Early stops contributing at the moment Late starts — set Early's stop-age slider to 32 to see this exact shape. When both contribute throughout the whole window, raw monthly amount matters more — but Early still has a free 10-year head start.

What does the "crossover" marker mean?

The dashed gold line shows the age at which Late's balance first overtakes Early's balance — that's the moment the gap reverses. If Late never catches up before retirement, the marker is hidden and the legend doesn't show it. If Late starts ahead of Early (e.g. with a large lump sum), the marker won't appear either; the line tracks Late overtaking Early specifically, not the other direction. Look at the chart and the winner banner together to read the full story.

What's a realistic annual return to use?

For long-horizon planning, ~7% real (inflation-adjusted) for a broad equity index is the conventional anchor — it matches the US S&P 500's roughly 10% nominal long-run average minus ~3% inflation. Bonds historically deliver ~1–3% real; cash even less. International equities have varied widely; a global blend has tracked close to the US figure over very long windows. Pick something defensible for your portfolio; reality will deviate year-to-year, but the goal is the right ballpark, not a forecast.

Does this account for taxes, fees, or employer matches?

No. The simulator assumes a tax-advantaged account (Roth IRA, 401(k), or similar) with no annual fee drag and no contribution match. To approximate the after-tax / after-fee picture, lower the annual return by the relevant percentage — e.g., subtract ~0.5% for a typical index-fund expense ratio, or ~15–20% off the return if the account is fully taxable and you trade often. For an employer match, model it by adding the match amount to the monthly contribution.

What if Late catches up at retirement by contributing more?

The catch-up insight below the inputs computes exactly that: the monthly amount Late would need to put in to tie Early at the retirement age, holding everything else constant. If the number is below ~$5,000/month it's surfaced directly; above that it's flagged as out-of-reach, because at that contribution level real-world income constraints usually dominate the math.

Why don't the results look like a Roth IRA chart I saw online?

Articles often use different defaults — $6,000/year instead of $300/month, 8% return instead of 7%, or different stop ages. Drag the sliders to match the article's assumptions and the numbers will line up. The simulator uses monthly compounding (which is slightly more generous than annual compounding for the same nominal rate) and discrete monthly contributions, which is the most accurate model for a real recurring deposit.

Can I export the chart or my inputs?

Not at the moment. The inputs live in browser localStorage under a single key (tirs-data-v1) — power users can copy the JSON value from the browser's storage inspector. For the chart, use a screenshot — the SVG is responsive and prints cleanly. A dedicated export UI may land in a future revision.

What happens if I clear my browser data?

The simulator resets to the default 22-vs-32 scenario, because inputs are stored locally rather than in an account. Switching browsers, switching devices, or using private browsing has the same effect.

Does it work offline?

Once the page has finished loading, every calculation runs locally — no internet connection needed. Reconnecting is only required to load the page initially or to visit other pages on OmniAppHub.