Skip to content
StockMarketAgent
HomeToolsInvestment time to goal
§ Tools / Series 03 · Personal finance

Investment time to goal calculator

The inverse of a future-value calculator. Instead of “given a rate and a time, what's the value?”, it answers “given a target, an initial investment, and an expected return, how long do I wait?” with explicit compounding convention, an honest inflation mode, and three structured outcomes instead of a NaN.

§ It can fail — and says so

A time solve has real failure modes: a return at or below zero never reaches a higher target, and a return that doesn't beat inflation is unreachable in real terms. Those come back as a clear unreachable status, not a misleading number. If your initial already exceeds the target, you get already_reached.

3
Statuses
6
Compounding modes
2×–10×
Milestones
5×5
Sensitivity grid
v1
Methodology
§ Start with a preset
Three product-neutral starting points — adjust anything after.
Inputs
Independent units for the target and the initial investment · everything recomputes instantly.
Ticker prefill Professional+Workbooks Individual+
01Target & initial
02Expected return
03Inflation
04Advancedrate Effective annual · fee 0.2% · tax 0% · cap 100y
computed

Reachable. Solved in real terms (target is today's money).

Time to goal
50.55 yrs
$100,000 $1,000,000 at 8% (real, 3% inflation) · 607 months.
Growth multiple needed10.00×
Net annual return7.80%
Real annual return4.66%
§ Projected path

Balance climbing toward the target line

Solid: projected balance. Dashed gold: the target (rising with inflation). The crossing is the goal.
Y0Y7Y14Y21Y28Y35Y42Y49Y51
Projected balance Target line Target reached
§ Milestones

Time to double, triple, 5× and 10× the initial

Nominal net growth. The 2× row is the practical rule-of-72 check.
2×
9y 3m
9.23 yrs
3×
14y 8m
14.63 yrs
5×
21y 5m
21.43 yrs
10×
30y 8m
30.66 yrs
§ Scenarios

Bear, base, bull — 4% either side of 8%

Bear4.0%
297.61 yrs
297y 7m
Base8.0%
50.55 yrs
50y 7m
Bull12.0%
28.09 yrs
28y 1m
§ Sensitivity

Return × target multiple — years to reach each

Rows: expected return ±. Columns: target as a multiple of the initial. Greener = faster.
Return \ Multiple2×3×5×10×20×
5.0%14.8y23.4y34.3y49.1y63.9y
6.5%11.3y18.0y26.3y37.7y49.0y
8.0%base9.2y14.6y21.4y30.7y39.9y
9.5%7.8y12.4y18.1y25.9y33.7y
11.0%6.8y10.7y15.7y22.5y29.2y
§ Year-by-year schedule

The path, not just the endpoint

YearOpeningGrowthFee dragClosing% of target
Y1$100,000+$7,800$200$107,80010%
Y2$107,800+$8,408$232$116,20811%
Y3$116,208+$9,064$267$125,27311%
Y4$125,273+$9,771$306$135,04412%
Y5$135,044+$10,533$350$145,57713%
Y6$145,577+$11,355$400$156,93213%
Y7$156,932+$12,241$454$169,17314%
Y8$169,173+$13,196$515$182,36914%
Y9$182,369+$14,225$583$196,59315%
Y10$196,593+$15,334$658$211,92816%
Y11$211,928+$16,530$741$228,45817%
Y12$228,458+$17,820$833$246,27817%
Y13$246,278+$19,210$936$265,48718%
Y14$265,487+$20,708$1,049$286,19519%
Y15$286,195+$22,323$1,174$308,51920%
Y16$308,519+$24,064$1,313$332,58321%
Y17$332,583+$25,941$1,466$358,52522%
Y18$358,525+$27,965$1,635$386,48923%
Y19$386,489+$30,146$1,822$416,63624%
Y20$416,636+$32,498$2,028$449,13325%
Y21$449,133+$35,032$2,255$484,16626%
Y22$484,166+$37,765$2,506$521,93127%
Y23$521,931+$40,711$2,782$562,64129%
Y24$562,641+$43,886$3,086$606,52730%
Y25$606,527+$47,309$3,420$653,83631%
Y26$653,836+$50,999$3,789$704,83633%
Y27$704,836+$54,977$4,194$759,81334%
Y28$759,813+$59,265$4,639$819,07836%
Y29$819,078+$63,888$5,129$882,96637%
Y30$882,966+$68,871$5,667$951,83839%
Y31$951,838+$74,243$6,258$1,026,08141%
Y32$1,026,081+$80,034$6,907$1,106,11543%
Y33$1,106,115+$86,277$7,620$1,192,39245%
Y34$1,192,392+$93,007$8,402$1,285,39947%
Y35$1,285,399+$100,261$9,260$1,385,66049%
Y36$1,385,660+$108,081$10,201$1,493,74152%
Y37$1,493,741+$116,512$11,234$1,610,25354%
Y38$1,610,253+$125,600$12,365$1,735,85356%
Y39$1,735,853+$135,397$13,606$1,871,24959%
Y40$1,871,249+$145,957$14,965$2,017,20762%
Y41$2,017,207+$157,342$16,454$2,174,54965%
Y42$2,174,549+$169,615$18,085$2,344,16468%
Y43$2,344,164+$182,845$19,871$2,527,00971%
Y44$2,527,009+$197,107$21,826$2,724,11574%
Y45$2,724,115+$212,481$23,967$2,936,59678%
Y46$2,936,596+$229,055$26,309$3,165,65181%
Y47$3,165,651+$246,921$28,872$3,412,57285%
Y48$3,412,572+$266,181$31,676$3,678,75289%
Y49$3,678,752+$286,943$34,742$3,965,69593%
Y50$3,965,695+$309,324$38,095$4,275,01998%
Y51$4,275,019+$333,451$41,761$4,608,470102%
Historical target-hit backtest Enterprise
Answer “when would this initial actually have becomethe target?” for a real ticker — first target-hit date, max drawdown along the way, and an honest target_never_reachedwhen it didn't.
Unlock
§ Formula trace
every output, derived
  1. target = 1 × millions = 1000000.00 USD
  2. initial = 100 × thousands = 100000.00 USD
  3. growthFactor = 1 + 7.80% = 1.078000 per year (after 0.2% fee)
  4. t = ln(1000000 / 100000) / ln(1.0780 / 1.0300) = 50.5522 yrs
§ Input audit
no input silently ignored
adjustInflationused
compoundingused
currencyused
expectedReturnPctused
feePctused
inflationPctused
initialAmountused
initialUnitused
maxYearsdefaulted
rateConventionused
returnVariancePctused
startDatedefaulted
targetAmountused
targetBasisused
targetUnitused
taxModedefaulted
taxPctdefaulted
§ Warnings
  • The smooth projection is not a forecast. Returns are assumptions; tax and fee handling is simplified.
§ Golden references · locked in tests
Four cases pinned in backend + frontend tests so the convention and inflation handling can't silently change.
500→1000 · 12% annual
6.1163y · 74m
Same · monthly nominal
5.8051y · 70m
10k→100k · 8% annual
29.9188y · 360m
Real · 12% / 5% infl
10.7401y · 129m
The 4-month gap between annual-effective (6.1163y) and monthly-nominal (5.8051y) on the same “12%” is the convention, nothing else. The jump to 10.74y in real mode is the cost of acknowledging inflation.
§ Same engine, headlessly

The deterministic time solve, sensitivity matrix, and milestone table are reachable as stateless REST endpoints and MCP tools. The three statuses are returned as structured fields, never error codes. Premium ticker prefill and the historical backtest sit behind scoped API keys.

POST/api/v1/financial-calculators/investment-time-to-goal/calculate
POST/api/v1/financial-calculators/investment-time-to-goal/sensitivity
GET/api/v1/financial-calculators/investment-time-to-goal/schema
GET/api/v1/stocks/{ticker}/financial-calculators/investment-time-to-goal/defaults · enterprise
POST/api/v1/stocks/{ticker}/financial-calculators/investment-time-to-goal/backtest · enterprise
MCP toolscalculate_investment_time_to_goal · backtest_investment_time_to_goal
methodology_version = financial-calculators.v1 · canonical = /en/tools/investment-time-to-goal-calculator
§ FAQ

Four things worth knowing

Q01Why does the same “12%” give two different times-to-goal?+
Because there are two ways to read 12%. Effective annual treats it as the already-compounded yield, so the growth factor is 1.12. Nominal APR compounded monthly produces (1 + 0.12/12)^12 = 1.126825 — a slightly larger annual factor, which reaches the target faster. For ₹500 → ₹1,000 that is 6.1163 years (effective) vs 5.8051 years (nominal monthly), about four months on the same input. Historical CAGR is always effective annual, so prefilled returns use that convention.
Q02What does “adjust for inflation” actually change?+
When the target is in today's money, your future balance has to outrun inflation, not just grow. The solver divides the growth factor by (1 + inflation): t = ln(target/initial) / ln(factor / (1+inflation)). For ₹500 → ₹1,000 at 12% with 5% inflation that pushes the answer from 6.12 to 10.74 years. Bolting inflation on after the solve, as most free tools do, is mathematically wrong.
Q03What are the three statuses?+
computed — the target is reachable, and you get years, months, and a goal date. already_reached — your initial investment already meets the effective target, so duration is zero. unreachable — the net return is zero or negative, or in real-target mode the return doesn't beat inflation. Failure modes are surfaced as a structured status, never as a NaN or an infinity.
Q04When should I gross up for tax?+
Use gross-up when the target is what you want to keep after tax. The solver raises the pre-tax target to initial + (target − initial) / (1 − tax) and solves for that instead, so the after-tax value lands on your original goal. Display-only mode leaves the target alone and just shows the after-tax value at the goal date.