Table of contents
- The pricing problem
- From expectation to estimator
- A small implementation
- Precision has a price
- Conclusion
The pricing problem
A Monte Carlo price is an estimate, not an oracle. The useful output is therefore a pair: the price we estimated and how noisy that estimate is. Consider a European call under the usual lognormal model,
The discounted payoff is . Under the risk-neutral measure, the option value is simply . Simulation replaces that expectation with an average of independent draws.
From expectation to estimator
For paths, the natural estimator and its standard error are
The second expression is what turns a number into a measurement. A rough 95% interval is . It describes simulation uncertainty under the model—not uncertainty about whether the model itself is right.
A small implementation
The code mirrors the notation closely. Keeping the discounted payoff vector also makes diagnostics easy.
import numpy as np
def european_call_mc(
spot: float,
strike: float,
rate: float,
volatility: float,
maturity: float,
n_paths: int,
seed: int = 7,
) -> tuple[float, float]:
rng = np.random.default_rng(seed)
z = rng.standard_normal(n_paths)
terminal = spot * np.exp(
(rate - 0.5 * volatility**2) * maturity
+ volatility * np.sqrt(maturity) * z
)
discounted = np.exp(-rate * maturity) * np.maximum(
terminal - strike, 0.0
)
price = discounted.mean()
stderr = discounted.std(ddof=1) / np.sqrt(n_paths)
return float(price), float(stderr)
Two implementation details matter. First, the random seed makes the experiment reproducible. Second, ddof=1 estimates the payoff variance from the sample rather than treating the simulated paths as the full population.
The convergence is not monotone. More paths reduce the scale of the noise, but any single sequence may wander above and below the target. That is why plotting only the point estimate can be misleading.
Precision has a price
Because standard error scales like , cutting it in half requires roughly four times as many paths. That square-root law is both comforting and expensive. It gives us a predictable budget, but brute-force precision arrives slowly.
Variance-reduction methods can improve precision without merely increasing the path count.1 The important discipline is to measure the gain with the same care as the original estimator.
Conclusion
A simulation result should be reported as an estimate, an error bar, the number of paths, and the randomization method. Those four facts make the calculation auditable and prevent false precision. Monte Carlo is powerful precisely because its uncertainty is measurable.
Footnotes
-
Antithetic variates pair each normal draw with . Their effectiveness depends on the payoff and estimator, so the reduction in variance should be checked rather than assumed. ↩