Monte Carlo distribution of portfolio outcomes
simulate_portfolio_outcomesRuns a Monte Carlo simulation over a portfolio balance and returns the distribution of possible end values: percentiles, mean, median, and if you give a goal amount, the share of simulated paths that reached it. Returns are drawn from a normal distribution using the expected return and volatility you supply.
Use when the user asks about the range or probability of outcomes rather than a single projected number, for example the odds of reaching a target, or how much volatility widens the spread. Do not use it to value a company (use calculate_dcf_value or get_stock_valuation), and do not use it for retirement withdrawal, tax, or drawdown-sequencing questions, which it does not model.
The simulation propagates the assumptions you give it. Normally distributed returns understate real market tail risk, and the output is a property of the inputs, not a prediction about any real portfolio.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| years | Yes | How many years to simulate forward. | |
| goal_amount | No | Optional target end value. When set, the result reports the share of simulated paths that finished at or above it. | |
| simulations | No | Number of simulated paths. Defaults to 10000. More paths stabilise the tails and cost more time. | |
| fee_rate_pct | No | Annual fee drag in percent, for example a fund expense ratio. Defaults to 0. | |
| current_balance | Yes | Starting portfolio value in currency units. | |
| inflation_rate_pct | No | Annual inflation in percent. When set above 0, results are expressed in today's purchasing power. Defaults to 0. | |
| monthly_contribution | No | Amount added every month. Defaults to 0. | |
| annual_volatility_pct | Yes | Annual standard deviation of returns in percent. Pass 15 for 15 percent. Broad equity indices have historically run in the mid teens. | |
| expected_annual_return_pct | Yes | Expected average annual return in percent. Pass 7 for 7 percent. |