Monte Carlo Retirement Simulator

Private.
Deterministic.
Yours.

Offline retirement simulation for analytical DIY planners who want to see the math, reproduce results, and audit every assumption.

No account No cloud No telemetry Fixed-seed reproducibility macOS + Windows + Linux soon
Buy & Download — $79
$79 One-time · launch price
Retirement Risk Lab
Results — Run Overview
Survival probability
70.59%
to age 100
Depletion prob.
29.41%
before age 100
Trial quality
good
2,000,000 trials
Wilson 95% CI (survival) 70.5233% → 70.6496% ±0.06 pp
p90 p50 p10 66 83 100

90 seconds.
The full picture.

Watch demo — 90 sec

Built for planners who
want to verify the math

01
Deterministic fixed-seed runs
Set a seed and get identical results every run on the same build. Change one assumption, rerun, and you know exactly what moved and why. Most tools give you a different number each time with no way to isolate changes.
Reproducibility
02
Wilson 95% CI and trial quality label
Every result shows a confidence interval around the survival estimate and a precision label: good, fair, or low confidence. You know how much to trust the number you're looking at. No other consumer retirement tool shows this.
Statistical rigor
03
Math transparency output
Every run produces a full transparency block: the exact formulas, locked operation order, monthly conversion equations, and a worked example with your actual inputs substituted in. You can audit exactly what the engine computed.
Auditability
04
Saved run artifacts and compare workflow
Save scenarios and run outputs as versioned JSON files. Load two runs and see B − A deltas instantly — no rerunning, no manually diffing numbers. Schema-versioned so files remain readable across releases.
Workflow

Everything in the
current baseline

Simulation engine
Normal return model with a locked RNG stack and deterministic seeding. Annual and monthly timestep modes with locked monthly conversion formulas. The step order is fixed and documented in every run output.
// RNG stack xoshiro256** + SplitMix64 seeding + Box-Muller normal // Monthly conversion (locked) step_mean = (1 + annual_mean)^(1/12) - 1 step_stddev = annual_stddev / sqrt(12) // Operation order per step (locked) contribution → return draw → clamp → apply → withdrawals → social security → depletion check
Outputs and metrics
Every run produces a full results panel covering survival probability, confidence interval, ending balance distribution, depletion timing, and a complete math transparency block.
  • Survival and depletion probability to four decimal places
  • Wilson 95% CI for both survival and depletion estimates
  • Trial quality label based on CI half-width
  • p10 / p50 / p90 / min ending balances with plain-English labels
  • Failed trial count and median depletion age
  • Monthly depletion month (monthly mode, when failures exist)
  • Fan chart — p10/p50/p90 path percentiles over time
  • Path table — same data as checkpoints, toggle from chart
  • Math transparency block with worked example
Analysis workflow
Tools for iterating toward a plan: goal seek to target a success probability, compare mode to isolate assumption changes, and CSV export for downstream analysis.
  • Goal seek: target success % and adjust spending or Social Security
  • Fast goal-seek mode: get recommendation without full render, then run final simulation
  • Compare two run artifacts: structured B − A delta summary
  • Compare fan chart: visual overlay when both runs include path data
  • Export path table to CSV (single run or compare mode)
  • Assumption warnings panel for aggressive or inconsistent inputs
Scenario and run artifacts
All inputs and outputs are saveable as versioned JSON files. Schema contracts are validated in CI on every release so your saved files remain readable across versions.
  • Save scenario (inputs only) — schema retire-risk.scenario v2
  • Load scenario — validated on import with explicit error codes
  • Save run artifact (inputs + full outputs + seed + conventions) — schema retire-risk.run v2
  • Load run artifact without rerunning
  • Legacy v1 run snapshot files remain loadable
  • CLI runner for headless / scripted execution
Offline licensing
License verification uses an embedded Ed25519 public key. No background network calls are made for simulation or license validation. No machine binding. No expiration logic.
  • Activate by importing license file or pasting JSON in-app
  • No network required — works fully in airplane mode
  • No machine binding — use on your own machines
  • No expiration — valid for the major version you purchased
  • License stored locally: %APPDATA%\RetirementRiskLab\ or ~/Library/Application Support/RetirementRiskLab/
  • Remove license and reset local state at any time

Results you can
read and verify

Run Overview panel showing survival probability, Wilson 95% CI, and trial quality label
Confidence interval on every result
Survival probability with Wilson 95% CI bounds and a half-width expressed in percentage points. You always know how much to trust the estimate.
Fan chart showing p10, p50 and p90 portfolio paths from age 66 to 100
p10 / p50 / p90 across the full horizon
The fan chart makes uncertainty visible — upside, median, and downside at every age checkpoint, from retirement through end age.
Ending balance distribution showing p10, p50, p90 with plain-English labels
Plain-English ending balance distribution
Every label is written out — "90% of runs ended above this" rather than bare percentile notation. The distribution is immediately readable.
Math Transparency block and path checkpoint table showing formulas and worked example
Math transparency — auditable by design
Every run documents the locked formulas, operation order, and a worked example with your actual inputs substituted in. Not a black box.

Locked conventions.
Visible math.

Every simulation parameter is documented and every formula is shown with your actual inputs substituted in. The Math Transparency section is not a summary — it is the full derivation.

Monthly conversion formulas, operation order, Wilson CI calculation, and percentile method are all locked, versioned, and included in every saved run artifact.

This is the difference between a number and a reproducible result.

Math Transparency (v1) — current run
Operation order per step: contribution → return draw → clamp → apply → withdrawals → social security → depletion check Annual → monthly step conversion: step_mean = (1+0.057900)^(1/12)-1 = 0.470150% step_stddev = 0.120000 / sqrt(12) = 3.464102% Worked example — first retirement step: illustrative_B_pre = 1,198,321.37 B_after_return = 1,203,955.28 spending_step = 7,500.00 social_security_step = 4,299.00 illustrative_B_end = 1,200,754.28 Wilson 95% CI: p_hat = 1411729 / 2000000 = 70.5864% CI = [70.5233%, 70.6496%] half-width = ±0.06 percentage points

A simulation lab,
not a sales funnel

✓ Built for
  • Engineers and analytically-minded DIY investors who want to understand the model
  • Bogleheads-style planners who care about assumptions and methodology transparency
  • Privacy-sensitive users who don't want retirement data in a cloud database
  • Spreadsheet modelers who want reproducible, comparable runs
  • Anyone who has read a retirement calculator result and wondered "how confident should I be in this number?"
× Not built for
  • One-click answers without needing to understand assumptions
  • Full tax-law bracket modeling or Roth conversion optimization
  • Multi-account aggregation or brokerage account linking
  • Advisor-client management or presentation generation
  • Historical bootstrap or sequence-of-returns replay (on the roadmap)

Your data stays
on your machine

No account required
Download, install, and run. No email, no login, no profile.
No background network calls
Simulation and license verification run fully offline. No background calls for validation or analytics. Only user-initiated purchase or support links open in your browser.
No telemetry
No usage analytics, no crash reporting to a remote server, no tracking of any kind.
No cloud dependency
Your scenarios and run artifacts are local JSON files. No server to go down, no subscription to lapse.

Up and running
in four steps

01
Purchase on Lemon Squeezy
One-time payment. You'll receive a download link and your license file by email.
02
Download for your platform
macOS, Windows x64, and Windows ARM64 builds included. Linux coming soon.
03
Activate offline
File → Enter License → Import the license file we send you. No network needed.
04
Load baseline and run
Click Load Baseline, set your assumptions, and run your first simulation.

One price.
Everything included.

Retirement Risk Lab
Personal license · macOS + Windows
$79
One-time · launch price
  • macOS, Windows x64, and Windows ARM64 downloads — Linux coming soon, free to existing buyers
  • Full simulation: annual and monthly timestep modes
  • Wilson CI, trial quality, Math Transparency on every run
  • Goal seek, compare runs, fan chart, path table, CSV export
  • Scenario and run artifact save/load (versioned JSON schemas)
  • Offline license activation — no network, no machine binding
  • Free updates within v1.x
  • Email support
Buy on Lemon Squeezy →
Introductory price for early adopters.
Future price: $129. Offline activation. No subscription.

Common questions

Can I reproduce an exact result?
Yes. Set Seed Mode = fixed and the same seed value and you'll get bit-identical results on the same build and platform. Cross-platform differences can occur due to floating-point behavior.
Does it require an internet connection?
No. Simulation and license verification both run fully offline. There are no network calls anywhere in the app. It works in airplane mode.
What are the tax and RMD assumptions?
Tax rate, RMD start age/rate, and healthcare cost are simplified placeholders for directional stress testing. They are not a full tax-law engine. A complete tax module is a planned future feature.
Why did the run get blocked?
If trials × timestep × horizon would exceed safe path-memory limits for percentile output, the run is blocked with RR_ERR_TRIALS_OUT_OF_RANGE. The fix is to reduce trial count, especially in monthly mode with long horizons.
Does it use historical return sequences?
Not yet. The current engine uses a parametric normal return model. Historical bootstrap and sequence-of-returns replay are planned and will be added if demand supports it.
What is the license model?
One-time purchase, offline Ed25519-signed license file, no machine binding, no expiration, no network calls. Valid for all v1.x releases. Activate by importing the license file or pasting JSON in-app.
Is this financial advice?
No. Retirement Risk Lab is a statistical simulation tool for scenario analysis and planning support. Outputs are probability estimates under stated assumptions, not guarantees or financial recommendations.
What platforms are supported?
macOS and Windows (x64 and ARM64). All three builds are included with your purchase. A Linux build is in progress and will be distributed to existing buyers at no extra charge when available.