Monte Carlo Option Pricing Calculator
Calculator help
Hi! Ask me anything about using this calculator: what an input means, where to find a value, or why you got a result.
An AI assistant (Claude) that reads this page. It can make mistakes: check important numbers, and confirm design decisions with a licensed engineer.
Methodology, equations and examples
Monte Carlo pricing values an option by simulating many possible paths of the underlying price, computing the option's payoff on each, and discounting the average payoff at the risk-free rate. It works for any payoff that can be computed from a path, including ones with no closed-form price, such as an option on the arithmetic average price. Its answer is an estimate, so it always comes with a standard error that says how far it could be from the exact value.
The simulated paths
Under the risk-neutral measure, the measure used for pricing in which every asset is expected to grow at the risk-free rate, the underlying follows geometric Brownian motion. Its price is sampled at M equal steps of length Δt = T / M:
S(t + Δt) = S(t) exp[(r − q − σ²/2) Δt + σ √Δt Z]
- S – Underlying price
- T – Time to expiration in years, taken as calendar days / 365
- r – Risk-free rate, continuously compounded
- q – Dividend yield, continuously compounded
- σ – Volatility, per year
- Z – A standard normal random number, drawn fresh for each step of each path
This step is exact for geometric Brownian motion at any Δt, so a European option needs only one step. More steps matter for payoffs that depend on the path, because the average, the barrier and the extremes are checked only at the M sampled dates. A barrier option monitored daily is worth a little more (knock-out) or less (knock-in) than one monitored continuously, since the price can cross the barrier between samples unseen.
The random numbers come from a seeded generator, so the same seed always gives the same paths. That makes a result reproducible from its link, and it means two payoffs priced with one seed see identical paths.
The payoffs
With w = 1 for a call and −1 for a put, and S₁ … S_M the sampled prices:
- European: max[w(S_M − K), 0]
- Asian, arithmetic average: max[w(A − K), 0], with A = (S₁ + … + S_M) / M
- Asian, geometric average: max[w(G − K), 0], with G = (S₁ × … × S_M)^(1/M)
- Barrier: the European payoff if the barrier H was reached (knock-in) or never reached (knock-out) on a sampled date, otherwise zero
- Lookback, floating strike: S_M − min S for a call and max S − S_M for a put, the extremes taken over today's price and the M samples
The estimate and its error
With N independent payoffs Y₁ … Y_N, the price and its standard error are
Price = e^(−rT) × mean(Y)
Standard error = e^(−rT) × s_Y / √N
where s_Y is the sample standard deviation of the payoffs. The 95 % confidence interval is the price ± 1.96 standard errors. The error falls as 1/√N, so halving it takes four times as many paths. That is why variance reduction, which shrinks s_Y instead, is worth having.
Variance reduction
Antithetic variates pair each path with its mirror image, the path built from −Z instead of Z. The pair's average payoff is one sample. Because the two paths move in opposite directions, their payoffs are negatively correlated and the average varies less than either one.
A control variate corrects each payoff by a related quantity whose exact value is known. For the arithmetic Asian option the control is the geometric Asian payoff X on the same path, whose price has a closed form. Each sample becomes
Y − b (X − E[X])
with b = cov(Y, X) / var(X) estimated from the run. The two averages are so closely related that this removes almost all of the error.
The geometric Asian price used as the control, and shown beside the geometric estimate, is the discrete closed form of Kemna and Vorst. ln G is normal with mean μ = ln S + (r − q − σ²/2) Δt (M + 1)/2 and variance σ_G² = σ² Δt (M + 1)(2M + 1)/(6M), so
Price = e^(−rT) w [e^(μ + σ_G²/2) N(w d₁) − K N(w d₂)], with d₁ = (μ − ln K + σ_G²)/σ_G and d₂ = d₁ − σ_G
where N(x) is the cumulative standard normal distribution.
Example
The example is the six-month call in Hull, Options, Futures, and Other Derivatives: S = $42, K = $40, r = 10 %, σ = 20 %, no dividend. Its Black-Scholes price is $4.7594. With M = 50 steps, Δt = 0.01 years, so each step has a drift of (0.10 − 0.20²/2) × 0.01 = 0.0008 and a volatility of 0.20 × √0.01 = 0.02.
With 50,000 paths, seed 1 and no variance reduction, the estimate is $4.7578 with a standard error of $0.0223. The exact price is 0.07 standard errors away, well inside the 95 % interval of $4.7142 to $4.8015. Turning antithetic variates on, with the same 50,000 paths, gives $4.7542 with a standard error of $0.0109, about half the error for the same work.
Change the payoff to the arithmetic Asian call on the same stock, which has no closed form. Without variance reduction the estimate is $3.2549 ± $0.0260 (95 %). Antithetic variates bring the standard error from $0.0133 to $0.0052. Adding the geometric control variate brings it to $0.0003, giving $3.2673 ± $0.0005: more than 2,500 times less variance than the plain run, from the same paths. The geometric Asian call itself estimates at $3.2060 against its closed form of $3.2088, within one standard error.