Inspect the arithmetic

Cost of Waiting to Invest Calculator

This page documents the formulas, solvers, and assumptions used to compare an early-stop investor with a later-start investor.

No opinions. No hidden assumptions. Just arithmetic.

Back to Calculator

1. What the calculator answers

The calculator compares two contribution calendars that share the same effective annual return and the same retirement age. Each investor can use a different monthly contribution:

  • Early investor: contributes from a start age to a stop age, then lets the balance compound with no further contributions.
  • Later investor: starts later and contributes from a start age to a stop age, then lets the balance compound with no further contributions.

It then solves two catch-up questions for the later investor, finds any shared break-even return, and shows the early investor's continued-contribution scenario.

2. Rate convention

The user-entered annual return ra is an effective annual return. The equivalent monthly rate is:

r_m = (1 + r_a)^(1/12) − 1

The annual return is not divided by 12. Any effective annual return must be greater than −100%.

3. Ordinary annuity

Contributions occur at the end of each month. For a constant monthly contribution P over n months:

FV = P × ((1 + r_m)^n − 1) / r_m
If r_m = 0: FV = P × n

The engine uses expm1 and log1p for numerical stability near zero. Internals keep full precision; the page rounds only for display.

4. Early and later investors

n_E = (early stop age − early start age) × 12
n_C = (retirement age − early stop age) × 12
n_L = (later stop age − later start age) × 12
n_LC = (retirement age − later stop age) × 12

FV_E,stop = ordinary annuity(P_E, r_m, n_E)
FV_E = FV_E,stop × (1 + r_m)^n_C
FV_L,stop = ordinary annuity(P_L, r_m, n_L)
FV_L = FV_L,stop × (1 + r_m)^n_LC

C_E = P_E × n_E
C_L = P_L × n_L
Investment growth = ending value − total contributed

5. Catch-up solvers

Required return: hold the later investor's contribution window, retirement age, and later monthly contribution PL fixed. Solve FVL(r) = FVE for the later investor's effective annual return. The solver is a monotonic bisection on r > −100% and is allowed to return a negative rate.

Required contribution: hold ages and the shared return fixed. Because ending value is linear in the later monthly contribution:

P*_L = FV_E / (annuity factor(r_m, n_L) × (1 + r_m)^n_LC)

6. Break-even return

The break-even return is the shared effective annual return at which FVE(r) = FVL(r) given each investor's contribution calendar and monthly amount. The engine scans a useful range (approximately −50% to +300%) for a sign change, then bisects.

If one cash-flow pattern strictly contains the other, or the two calendars are identical, there may be no meaningful finite root. The calculator reports that instead of inventing a number.

7. Continued contributions

n_EC = (retirement age − early start age) × 12
FV_EC = ordinary annuity(P_E, r_m, n_EC)

This is a secondary illustration only. The primary chart shows the two core investors and uses the same projection functions as the headline results.

8. Engine location

All financial math lives in:

calculators/cost-of-waiting-to-invest/engine.js

The page UI reads engine results. It does not re-implement the formulas.

9. Assumptions

  • Nominal dollars; inflation is not included.
  • Constant contributions; no indexation.
  • End-of-month contributions; no starting lump sum.
  • No taxes, fees, withdrawals, or account-type rules.
  • Results are illustrations, not forecasts.