Monte Carlo Simulation
How do I run a Monte Carlo simulation for financial modeling?
Definition
Monte Carlo simulation is a computational technique that uses repeated random sampling from defined probability distributions to model the range of possible outcomes for a process with uncertain inputs. In financial modeling, it replaces single-point estimates with probability distributions — running the model thousands of times with randomly drawn input values to produce a distribution of outputs rather than a single number. [src1]
Key Properties
- Core mechanism: Define distributions → draw random samples → run model → repeat 1,000-10,000+ times → analyze output distribution [src1]
- Common distributions: Normal (returns), lognormal (prices), triangular (expert estimates), uniform (bounded unknowns) [src3]
- Key outputs: Mean, median, standard deviation, percentiles (P5/P95), probability of threshold [src2]
- Tools: Excel add-ins (@Risk, Crystal Ball), Python (numpy, scipy), R, MATLAB [src3]
- Applications: Portfolio VaR, option pricing, project NPV, credit risk, retirement planning [src2]
Constraints
- Distribution selection is critical: Using normal for prices (should be lognormal) or assuming symmetry for skewed variables produces misleading output. [src1]
- Correlation must be modeled: Treating correlated inputs as independent narrows the output distribution unrealistically. [src3]
- Underestimates tail risk: Simulations based on historical data assume the future resembles the past, systematically underestimating Black Swans. [src2]
- Computational requirements: 1,000+ iterations for stable means, 10,000+ for stable tail percentiles. [src4]
- False precision risk: "73.4% probability of profitability" looks precise but depends entirely on input assumptions. [src1]
Framework Selection Decision Tree
START — User needs to model financial uncertainty
├── How many uncertain inputs?
│ ├── 1-2 variables → Sensitivity Analysis
│ ├── 3-5 discrete scenarios → Scenario Analysis
│ └── 5+ continuous uncertain inputs → Monte Carlo (this unit)
├── What output format?
│ ├── Single-point estimate → Not Monte Carlo
│ ├── Probability distribution → Monte Carlo
│ ├── Input sensitivity ranking → Sensitivity Analysis first
│ └── Discrete comparison → Scenario Analysis
├── Are distributions defensible?
│ ├── YES (historical data, calibration) → Proceed
│ └── NO → Scenario Analysis instead
└── Audience comfortable with probabilistic outputs?
├── YES → Monte Carlo with confidence intervals
└── NO → Scenario Analysis with 3-5 cases
Application Checklist
Step 1: Identify uncertain variables and assign distributions
- Inputs needed: Model inputs with uncertainty, historical data or expert judgment
- Output: Distribution type and parameters per variable
- Constraint: Do not default to normal — match distribution to variable characteristics [src1]
Step 2: Define correlations between inputs
- Inputs needed: Historical correlation data or logical assessment
- Output: Correlation matrix for uncertain inputs
- Constraint: Omitting correlations produces artificially narrow output distributions [src3]
Step 3: Run the simulation (1,000-10,000+ iterations)
- Inputs needed: Model with distribution-assigned inputs, correlation matrix, software
- Output: Raw output distribution
- Constraint: If 5K vs 10K iterations changes the mean by 1%+, more iterations needed [src4]
Step 4: Analyze and present results
- Inputs needed: Output distribution
- Output: Summary statistics (mean, P5-P95), probability of thresholds, histogram
- Constraint: Present as ranges and probabilities, not single numbers [src1]
Anti-Patterns
Wrong: Using normal distributions for all inputs
Assigning normal distributions to revenue allows negative values — which is impossible. [src1]
Correct: Matching distributions to variable characteristics
Use lognormal for prices/revenues, triangular for expert estimates, uniform for bounded unknowns. [src3]
Wrong: Running Monte Carlo without modeling correlations
Simulating interest rates, exchange rates, and commodities independently understates risk. [src3]
Correct: Building a correlation matrix
Define correlations using historical data or expert judgment. Even approximate correlations are better than independence. [src1]
Wrong: Presenting output as a single number
Reporting only the mean discards all information about risk, range, and tail outcomes. [src2]
Correct: Presenting the full distribution
Show histogram, percentiles (P5, P50, P95), and probability of key thresholds. [src1]
Common Misconceptions
Misconception: Monte Carlo is only for quantitative finance and options pricing.
Reality: Used in project finance, corporate budgeting, retirement planning, and any domain with multiple uncertain inputs. [src2]
Misconception: More iterations always mean better results.
Reality: Means converge at ~1,000 iterations; tails at ~10,000. Beyond that, improvement is marginal. Input quality is the binding constraint. [src4]
Misconception: Monte Carlo accounts for all risks, including Black Swans.
Reality: Simulations only reflect the distributions you define. Fat-tail events require explicit fat-tailed distributions. [src2]
Comparison with Similar Concepts
| Concept | Key Difference | When to Use |
|---|---|---|
| Monte Carlo Simulation | Thousands of random trials, output distributions | Many uncertain inputs, need probability of outcomes |
| Scenario Analysis | Discrete scenarios with coherent assumptions | Few key uncertainties, discrete cases preferred |
| Sensitivity Analysis | One variable at a time, others constant | Identifying which inputs matter most |
When This Matters
Fetch this when a user asks about Monte Carlo simulations, modeling financial uncertainty with probability distributions, calculating VaR, generating NPV distributions, or stress-testing with random sampling.