Monte Carlo Simulation Calculator

RISK · GEOMETRIC BROWNIAN MOTION WITH CONTRIBUTIONS AND WITHDRAWALS

Thousands of simulated paths for a portfolio with contributions or withdrawals: the spread of final values and the chance of running out, instead of one number.

The amount in "Add per period" lands at the end of each period; a negative number is a withdrawal. Return is the expected growth, volatility the yearly standard deviation, both in percentage points. The same seed gives the same result. The account cannot go below zero.

How much do you start with, and what do you add or take out each period?

One average hides how wide the outcomes are

A plan that saves $500 a month at 7% a year ends at one number on a spreadsheet. Real returns do not arrive as 7% every year: they wander. A Monte Carlo simulation draws thousands of possible futures from the same assumptions and shows how far apart they land, so you see the bad ending as well as the middle one, and how likely each is.

The model

The value follows geometric Brownian motion. In each period of dt years, with expected return μ, volatility σ and a standard normal draw Z, then a contribution C added at the end of the period:

  • V′ = V · exp((μ − σ²/2) · dt + σ · √dt · Z) + C
  • a value below 0 is set to 0 and stays there

Each path repeats that for every period. The percentiles are read from the sorted final values of all paths (linear interpolation between neighbours). The generator is seeded, so the same inputs always give the same numbers.

Worked example

Start with $10,000, add $500 a month for 20 years, 7% return, 18% volatility, 2,000 paths, seed 1. You put in $130,000 in total.

  • Median ending value: $252,072
  • 5th to 95th percentile: $109,079 to $662,133
  • Ends below the $130,000 put in: 10.5% of paths
  • Exact expected value $301,663, higher than the median because a few paths run far ahead

What it assumes

Return and volatility are two constant numbers you supply. Real markets have fat tails, jumps and changing volatility, so the bad end here is likely milder than a bad real decade. There are no fees, taxes or inflation, and every figure from a sample carries sampling error, which shrinks as you add paths. It is a model of spread, not a forecast. The output was checked against the same random stream replayed in an independent Python script, against two million numpy paths from a different generator, and against closed forms for the mean and for the no-contribution case.

Where to go next

Sizing a single trade instead of a plan? Run it through the Pre-Trade Check. Want the chance of ever losing half a bankroll at a given bet size? Use the Kelly Growth-Security Frontier.

Use via API or MCP

This simulation is available as a deterministic API call: useful for bots or AI agents that need a spread of outcomes, with the same seed giving the same answer every time.

EMBED ON YOUR SITE

<!-- TradingCalc widget: please keep the link below exactly as given (address and words) -->
<div class="tradingcalc-widget" data-widget="monte-carlo-simulation-calculator"><a href="https://tradingcalc.io/monte-carlo-simulation-calculator?utm_source=embed&amp;utm_medium=backlink&amp;utm_campaign=monte-carlo-simulation-calculator">Monte Carlo Simulation Calculator by TradingCalc.io</a></div>
<script async src="https://tradingcalc.io/embed.js"></script>

Free, no signup. Keep the text link in the code exactly as given, with its address and its words: it is the attribution and it points visitors to the full calculator. Change colors, size and start values or read the installation guide and FAQ.

FAQ
Q.01

What does a Monte Carlo simulation show that a normal projection does not?

A normal projection applies one fixed return every year and gives one ending number. A Monte Carlo run draws thousands of random return sequences from the same assumptions, so it shows the range of endings and how likely each part of the range is, including the bad ones.

Q.02

How many paths are enough?

Every figure from a sample has sampling error that shrinks with the square root of the number of paths. 2,000 paths gives a stable median and 5th to 95th percentile; the extreme tails need more. The result shows the standard error of the average so you can judge it.

Q.03

Why is the average higher than the median?

Returns compound, so a few very good paths end far ahead and pull the average up while most paths end lower. The median is the typical outcome; the average is the exact expected value, which the result shows next to the sampled one.

Q.04

Can I model withdrawals in retirement?

Yes. Enter a negative number in "Add per period". The account is floored at zero and stays there, and the "ends a period at or below" line gives the share of paths that finished any period at your ruin level or lower, not only the last one.

Q.05

Is this a forecast?

No. It assumes a constant return and volatility, no fees, taxes or inflation, and no jumps or fat tails. It shows how wide the outcomes of those assumptions are, which a single projection cannot.

Q.06

Why does the same input always give the same result?

The random draws come from a seeded generator. Change the seed to see a different sample of paths, or keep it to reproduce a number exactly.