A steady projection compounds the pot and adds each contribution:
Vₘ = Vₘ₋₁ × (1 + r) + c
r = monthly return = annual ÷ 12 · c = monthly contribution
But real returns aren't steady, so the tool runs 1,500 simulations where each month's return is drawn at random around the expected rate:
rₘ = μ + σ·Z where μ = annual ÷ 12, σ = volatility ⁄ √12
Z is a standard normal random draw (generated by the Box–Muller transform). Dividing volatility by √12 converts an annual figure to monthly — variance scales with time, so standard deviation scales with its square root.
Sorting all 1,500 outcomes each month gives the percentile bands; the median is the middle outcome, and the 5th–95th range holds 90% of them. The probability of hitting your target is simply the share of runs finishing at or above it.
Note: the simulation is seeded, so identical inputs always give identical results. That's for consistency between visits — not because the future is predictable.