๐ŸŽฒ Monte Carlo Simulation

Definition: A computational technique that uses repeated random sampling to obtain numerical results โ€” modeling the probability distribution of outcomes when inputs are uncertain. Instead of a single โ€œbase caseโ€ estimate, it shows a range of possible outcomes and their likelihoods.

Named after the Monte Carlo casino in Monaco โ€” reflecting the role of randomness Used in: Finance, operations, supply chain, project management, risk assessment


๐Ÿ”‘ The Core Idea

Traditional analysis problem: Inputs (growth rate, margins, market size) are uncertain, but we plug in a single โ€œbest estimateโ€ and get one output.

Monte Carloโ€™s solution: Define inputs as probability distributions, then simulate thousands of random draws to build a distribution of outcomes.

TRADITIONAL:
Single point estimate โ†’ Single output (DCF value = $52/share)

MONTE CARLO:
Revenue growth = N(12%, ฯƒ=4%)  โ”
EBITDA margin  = N(22%, ฯƒ=3%)  โ”œโ”€โ†’ Run 10,000 simulations
WACC           = N(9%, ฯƒ=1%)   โ”˜
                                
Result: Distribution of outcomes
โ†’ Mean = $52/share
โ†’ 10th percentile = $38/share (downside)
โ†’ 90th percentile = $67/share (upside)
โ†’ P(value > $60) = 28%

๐Ÿ› ๏ธ How to Run a Monte Carlo

Step 1: Build the Base Model

Create your spreadsheet model (DCF, project plan, etc.) with clear input cells.

Step 2: Define Input Distributions

For each uncertain input, choose a distribution type:

DistributionWhen to UseExample
NormalSymmetric uncertaintyRevenue growth rate
TriangularMin/most likely/max knownProject duration
UniformEqual probability in rangeCommodity price
Log-normalStrictly positive, right-skewedStock prices
DiscreteSpecific scenariosRegulatory outcomes (0/1)

Step 3: Define Correlations

Inputs often move together (e.g., if growth is high, margins are probably better too). Need to specify correlations between inputs.

Step 4: Run Simulations

  • Typically 1,000โ€“100,000 iterations
  • Tools: @Risk (Excel plugin), Crystal Ball, Python NumPy/SciPy, R

Step 5: Interpret Output Distribution

  • Mean / Median outcome
  • Standard deviation (spread)
  • Percentiles (P10, P50, P90)
  • Probability of specific outcomes (P(NPV > 0))

๐Ÿ“Š Business Applications

1. DCF Valuation Under Uncertainty

Input uncertainty:

  • Revenue growth rate: N(8%, 3%)
  • EBIT margin: N(15%, 2%)
  • Terminal growth rate: N(2.5%, 0.5%)
  • WACC: N(9%, 1%)

Output: Distribution of equity value per share โ†’ more honest โ€œbull/base/bearโ€ case than point estimate.

2. Project Risk Assessment (PMO)

  • Project duration inputs are uncertain (construction, software dev)
  • Monte Carlo gives probability that project finishes by a date, within budget
  • Outputs: P80 (budget that has 80% probability of not being exceeded)

3. Supply Chain Risk

  • Demand uncertainty, supplier lead time variability, yield uncertainty
  • Monte Carlo shows inventory stockout probability at different safety stock levels

4. Option Pricing (Black-Scholes)

  • Underlying asset prices follow geometric Brownian motion
  • Monte Carlo simulates price paths โ†’ values path-dependent options (Asian, barrier)

๐Ÿงฎ Simple Python Example

import numpy as np
 
# Model: Simple DCF with uncertain growth and WACC
np.random.seed(42)
n = 10_000
 
# Input distributions
revenue_growth = np.random.normal(0.10, 0.03, n)  # 10% mean, 3% st dev
ebitda_margin  = np.random.normal(0.20, 0.02, n)  # 20% mean, 2% st dev
wacc           = np.random.normal(0.09, 0.01, n)  # 9% mean, 1% st dev
terminal_growth = 0.025  # fixed
 
# Year 1 EBITDA
base_revenue = 100  # $100M
ebitda = base_revenue * (1 + revenue_growth) * ebitda_margin
 
# Simplified terminal value
terminal_value = ebitda / (wacc - terminal_growth)
ev = ebitda / (1 + wacc) + terminal_value / (1 + wacc)
 
# Results
print(f"Mean EV: ${ev.mean():.1f}M")
print(f"P10 EV:  ${np.percentile(ev, 10):.1f}M")
print(f"P90 EV:  ${np.percentile(ev, 90):.1f}M")
print(f"P(EV > $300M): {(ev > 300).mean():.1%}")

โš ๏ธ Limitations

LimitationCaution
GIGOGarbage in, garbage out โ€” quality of distributions matters
Correlation structure hard to modelIgnoring correlations understates tail risk
Black swans not capturedHistorical distributions miss unprecedented events
False precision10,000 simulations look rigorous but depend on assumptions

๐Ÿ”— Connected Concepts

  • DCF Valuation โ€” Monte Carlo makes DCF probabilistic
  • A-B Testing โ€” Both statistical; A/B tests reality, Monte Carlo models uncertainty
  • Regression Analysis โ€” Can use regression outputs as Monte Carlo inputs
  • Break-Even Analysis โ€” Monte Carlo shows probability of hitting break-even
  • WACC โ€” Key uncertain input in financial Monte Carlo

โ† ๐Ÿ“‰ Data & Analytics MOC | Related: DCF Valuation ยท Regression Analysis ยท WACC