पाठ 16 / 25

Monte Carlo Simulation

A distribution instead of a single number.

Sample all uncertainties together

Sensitivity varies one input at a time; Monte Carlo simulation samples all uncertain inputs together from ranges (for example triangular distributions with low, likely and high values) thousands of times, giving a distribution of outcomes. Report percentiles (P10, median, P90) and the probability of losing money. This is far more honest than a single NPV, and often reveals that a "great" case has a real chance of failing.

Simulating 20,000 scenarios, run

I ran this with plain Python 3. All figures belong to one worked example (an invoice-processing team) with invented but internally consistent numbers; prices are placeholders. With ranges on volume, minutes saved, realisation, error improvement, adoption and costs, the median NPV is about $81,000, far below the $343,000 point estimate, with P10 at about -$26,000 and P90 at $211,000. There is a 17.2% chance of losing money.

import random
rng = random.Random(42)
def tri(lo, mode, hi): return rng.triangular(lo, hi, mode)
results = []
for _ in range(20000):
    volume = tri(8000, 12000, 15000); saved = tri(1.5, 3.81, 4.5); realisation = tri(0.2, 0.6, 0.9)
    error_drop = tri(0.0, 0.025, 0.03); adoption = tri(0.4, 0.8, 1.0)
    monthly_cost = tri(2500, 3016, 6000); one_off = tri(45000, 53000, 90000)
    net = adoption * (volume * saved / 60 * 18.0 * realisation + volume * error_drop * 25.0) - monthly_cost
    results.append(-one_off + sum(net / 1.10 ** (m / 12) for m in range(1, 37)))
results.sort()
p = lambda q: results[int(q * len(results))]
print(f"P10 NPV ${p(0.10):,.0f} | median ${p(0.50):,.0f} | P90 ${p(0.90):,.0f}")
print(f"probability NPV < 0: {sum(r < 0 for r in results) / len(results):.1%}")

Output:

P10 NPV $-25,655 | median $81,300 | P90 $210,874
probability NPV < 0: 17.2%

Lead with the range

Present "median $81k, 1 in 6 chance of a loss" rather than only the most optimistic number.

त्वरित जाँच: Why can the Monte Carlo median be much lower than the point estimate?

  • Point estimates include costs twice
  • Monte Carlo ignores benefits
  • Several uncertain inputs can be below their likely values at the same time, and ranges are skewed
  • Simulations always lose money
Answer

Several uncertain inputs can be below their likely values at the same time, and ranges are skewed — Combined uncertainty matters.