Monte Carlo mode
Run your whole plan on randomized return paths instead of historical windows, with your own iteration count.
By default FIREproof replays real market history: each cycle is a different starting year, and your portfolio lives through the actual sequence of returns and inflation that followed. Monte Carlo mode replaces those historical windows with randomized return paths, so you can run thousands of iterations instead of the roughly 150 start years history gives you.
Monte Carlo is a Pro feature. Open it from Monte Carlo in the left sidebar. Everything lives on that one page: the mode switch, iteration count, per-class assumptions, inflation, custom assets, and a Run button.
What the mode changes (and what it does not)
The mode drives the four built-in asset classes. A custom asset is its own engine and is never overridden by the mode, in any direction:
| Returns mode | Equities / Bonds / Cash / Gold | Custom assets |
|---|---|---|
| Historic | Real sequences, one per start year | Their own Monte Carlo draws |
| Constant | Fixed rates you type in | Their own Monte Carlo draws |
| Monte Carlo | Randomized draws per class, per iteration | Their own Monte Carlo draws, unchanged |
Your account allocations are untouched either way. Switching between Historic and Monte Carlo is one setting, not a re-entry of every account's asset mix, and you can flip back and forth without losing anything.
What the mean and standard deviation mean
The Mean you enter for Equity, Bond, Cash and Gold is a nominal, arithmetic average of yearly returns:
- Nominal. It is the return before inflation. Inflation is drawn separately (see Inflation below) and is never subtracted from these draws, so enter the number you would quote in today's market terms, not a real return.
- Arithmetic. It is the simple average of the yearly returns on each path, not a compound annual growth rate (CAGR). Every path's yearly returns average exactly the mean you entered.
Because returns compound, volatility drags growth below the arithmetic mean. A useful rule of thumb is CAGR ≈ mean − (std dev)² / 2, and the Monte Carlo page's ≈ CAGR column applies it to your own numbers as you type. Next to it, Typical year is mean ± 1 std dev, the range most years land in. With the default assumptions:
| Class | Mean | Std Dev | Approximate CAGR (nominal) |
|---|---|---|---|
| Equities | 10% | 18% | 10 − 0.18² / 2 ≈ 8.4% |
| Bonds | 5% | 4% | 5 − 0.04² / 2 ≈ 4.9% |
| Cash | 2% | 4% | 2 − 0.04² / 2 ≈ 1.9% |
| Gold | 4% | 18% | 4 − 0.18² / 2 ≈ 2.4% |
To get a rough real (after-inflation) growth rate, subtract inflation from the CAGR column. If you are starting from a CAGR or a real return you read somewhere, convert it before typing it in: add inflation back for a real figure, then add (std dev)² / 2 for a CAGR.
- Equities are a total return. The mean covers price growth plus dividends. The engine sets the price target to your mean minus the expected dividend yield, so the two together land on your number.
- Very high return-to-risk inputs are capped. If (mean − 2%) / std dev comes out above 1.2 for Equities, or above 1.0 for Bonds, Cash or Gold, the engine lowers the mean until it meets the cap. Example: Bonds at 8% with a 4% std dev would give 1.5, so they run at 2% + 1.0 × 4% = 6%. For Equities the cap applies to the price part, before dividends. The defaults sit well under these limits.
Iterations
In Historic mode the iteration count is fixed to the historical sample, because there are only so many start years in the data. In Monte Carlo mode nothing binds it, so you choose: anywhere from 10 to 5,000, with 250 / 1,000 / 5,000 presets.
- Every Monte Carlo run happens in the background, with a progress bar. Before the iteration counter starts moving, the panel names what it is doing: Preparing market scenarios while it builds the randomized paths, then Calibrating your guardrails if your plan uses Risk-Based Guardrails. You can watch it finish; the Proof view opens when it is done. Small runs finish in a few seconds, large ones take longer. When the server is busy with other people's analyses, the panel says how many are ahead of yours instead, and yours starts on its own when its turn comes.
- More iterations means a smoother distribution and a longer wait, not a "better" plan. The success rate stops moving much well before 5,000.
- If your spending plan is Risk-Based Guardrails, the two setup steps above are most of the run: the guardrails are re-solved for every iteration. 1,000 is usually plenty there, and higher counts mostly add setup time before the counter starts.
Same inputs, same result
Monte Carlo runs in FIREproof are reproducible. Every draw is derived from the iteration number, so running the same saved simulation twice gives you the same success rate to the last decimal, and opening the year-by-year detail for iteration 1,742 shows the exact path that iteration took in the summary run.
That is deliberate: a success rate that wobbles by a point every time you press Run is impossible to make decisions with. If you want a wider sample of the distribution, raise the iteration count rather than re-rolling the same one.
Inflation
The hub page offers two inflation choices that pair naturally with Monte Carlo returns:
- Monte Carlo (fit to historical CPI) - randomized inflation paths whose average and volatility are fit to real CPI history. You can scale each draw (Percentage of CPI) or shift it (Offset from CPI) if you want a persistently hotter or cooler world.
- Constant - one fixed rate every year.
Custom assets still work the way they always did
Custom assets (gold, BTC, an emerging-markets sleeve, your own tilt) have always been Monte Carlo generated from their own mean, volatility, shape and correlation. Turning the mode on does not change them, and turning it off does not disable them. Two workflows both stay valid:
- Historical core, Monte Carlo satellites - leave the mode off, add custom sleeves.
- Everything randomized - turn the mode on; your custom sleeves keep their own parameters alongside.
The Custom Asset manager now lives behind the Custom Assets row on the Monte Carlo page (it used to be its own sidebar item). Nothing about the manager itself changed.
Limits worth knowing
- Per-series tilts are ignored outside Historic mode. If you have mapped an account to a specific market series (small blend, EAFE, REITs, an uploaded series), Monte Carlo mode draws that money as its parent class instead. When you need a distinct randomized sleeve, define it as a custom asset. This matters most for the stable value series: in Monte Carlo they are drawn as ordinary bonds, price losses included.
- Comparisons and What-Ifs stay synchronous. Side-by-side comparison runs and What-If overlays re-run on the request rather than on the background worker, so at 5,000 iterations they are slow. Drop the iteration count while exploring those.
- Randomized paths skip real regimes. Monte Carlo does not carry 1970s stagflation or 2008 as sequences the way replayed history does. It samples volatility, not history. Reading both modes is more informative than trusting either alone.
Reading the results
In Monte Carlo mode the Proof view stops naming calendar start years, because an iteration does not have one. Cycle pickers read "Iteration 42 of 1,000", the chart x-axis counts simulation years (Year 1, Year 2, …), and Plan Diagnostics reports failures as "fails in N of M iterations". Everything else (success rate, ending-balance distribution, the year-by-year deep dive) works exactly as it does for a historical run.
Related
For sim-specific issues, open Plan Diagnostics from the Proof view. For everything else, reach out to support.