Variance Reduction in Monte Carlo Pricing
A Monte Carlo price wobbles, and brute force is an expensive cure — four times the paths only halves the error. Variance reduction buys the same accuracy from far fewer paths by pairing random draws and borrowing quantities whose true value you already know.
Prerequisites: Monte Carlo Option Pricing, Variance, Intuitively, The Law of Large Numbers
A Monte Carlo pricer is an averaging machine: it invents thousands of possible futures, works out what the option would have paid in each, and reports the average. The awkward part is that the answer wobbles. Run the same pricer twice with different random numbers and you get two different prices, and the wobble shrinks agonisingly slowly — four times the paths only halves it. For a book of exotics that must reprice before the open, brute force is a bill nobody can afford.
Picture measuring the average height of a packed stadium by sampling a few hundred people. Two habits make that sampling far better. The first is pairing: whenever your list sends you to an unusually tall person, also measure someone at the mirror-image position, so the sample cannot drift accidentally tall or short. The second is borrowing a fact you already know: suppose ticketing tells you the exact average shoe size in the building. Feet and height travel together, so if the people you measured have bigger feet than that known average, they were probably a tall bunch, and you should shave your estimate down to match.
Those two habits are, almost word for word, antithetic variates and control variates.
Variance reduction does not make the simulation faster. It makes each path more informative, so fewer paths give the same error bar. The honest yardstick is therefore variance multiplied by runtime, never variance alone.
The wobble you are fighting
Run independent paths and let be the discounted payoff on path — what that imagined future would have handed you, dragged back into today's money. The price estimate and its typical error are
Reading the symbols: (say "P-hat") is the estimated price, the number of paths, one path's discounted payoff, ("sigma") the standard deviation of a single path's payoff, and the standard error. In plain English: the typical gap between your simulated price and the truth is one path's payoff spread divided by the square root of how many paths you ran.
Two things follow. Cutting the error by a factor of costs times the paths. And since sits in the numerator, shrinking the spread of what you average is worth as much as multiplying the path count — halving equals four times the paths, far cheaper.
Drag the volatility slider below and watch the paths fan out. Every endpoint is a payoff you must average, and the width of that fan is the you are fighting.
Because some tricks cost extra work per path, the fair scorecard is efficiency, , with the computing time one path costs: a trick is worth it only if variance falls by more than runtime rises.
Antithetic variates: use every draw twice
A path is built from standard normal draws — the random shocks, one per time step. If is a valid draw from a symmetric bell curve, so is . So build a free twin from the flipped shocks and score the pair as one:
In plain English: run the market up, then run the identical market down, and count the two as one observation. Whatever luck the first path had, the twin has the opposite luck.
Write ("rho") for the correlation between the twin payoffs and . Then
Two genuinely independent paths, averaged, would give . In plain English: pairing beats two independent paths exactly when the twins are negatively correlated. At the pair carries 20 percent of one path's variance instead of 50 percent; at you have gained nothing.
Worked example 1 — antithetic pairing by hand
Price a one-year at-the-money call: spot and strike both $100, volatility 20 percent, rate zero. Each terminal price is and the payoff is . Take four draws and their twins.
| payoff | twin | twin | twin payoff | pair average | ||
|---|---|---|---|---|---|---|
| 108.33 | 8.33 | 88.69 | 0.00 | 4.17 | ||
| 77.11 | 0.00 | 124.61 | 24.61 | 12.31 | ||
| 140.49 | 40.49 | 68.39 | 0.00 | 20.25 | ||
| 104.08 | 4.08 | 92.31 | 0.00 | 2.04 |
The four draws average , so this sample is luckily bullish, and the crude estimate sits far above the true Black-Scholes value of $7.97. The antithetic estimate averages the pair column instead: , much closer, because the eight draws now average exactly zero by construction. Counting work fairly, eight crude draws give a standard error near against for the four pairs — a 1.6-fold better error bar from the same eight random numbers.
Control variates: borrow something you already know
This is the shoe-size trick. Find a quantity you can compute on the same paths and whose true expected value you know exactly from a formula. Its simulated average will miss that known truth by some amount, and that miss measures how lucky this batch of paths was:
Here is the crude simulated price, the simulated average of the control, its exact known value, and a tuning number setting how hard to apply the correction. In plain English: if the paths made the thing you can check come out too high, they probably pushed the thing you cannot check too high as well, so knock it back down. The best , and what survives:
is covariance, variance, the correlation between control and payoff. In plain English: what survives is the fraction of the payoff the control cannot explain. Correlation is everything and enters squared — removes 81 percent of the variance, removes 96 percent.
Worked example 2 — an Asian option with a geometric control
An arithmetic-average Asian call has no clean formula, but its geometric-average cousin does, and the two move almost in lockstep. Run 10,000 paths, recording both on each.
- Crude estimate , sample standard deviation , so the standard error is .
- The control on the same paths: , , correlation , and the closed-form truth .
- Best multiplier: .
- Corrected price: .
- New spread: , so the standard error is .
The error bar fell from 0.090 to 0.018, a factor of five. Brute force would need times the paths — 250,000 instead of 10,000 — for a correction costing a few extra multiplications.
Below is the sampling distribution of that estimate. Set the standard deviation to 0.09 for the crude estimator, then 0.018 for the controlled one: the centre holds while the curve collapses onto the answer.
The rest of the toolkit
Importance sampling aims the simulation at the region that actually pays, essential for deep out-of-the-money options where nearly every path contributes a zero (Importance Sampling). Stratified sampling forces the draws to cover the distribution evenly. Quasi-Monte Carlo swaps randomness for deliberately spread-out Sobol points. Common random numbers reuse one fixed set of draws across two pricings, so when you bump the spot for a delta the difference is nearly noise-free.
Stack them. Antithetic pairing, a geometric control and Sobol points compose happily in one pricer and their reductions roughly multiply. Add one at a time and measure the error bar after each.
What this means in practice
This is the difference between an exotics book that reprices in two minutes and one that takes an hour. Overnight risk runs, intraday re-marks and calibration loops all live on paths-per-second, and variance reduction is the cheapest lever available — a few dozen lines of code, not a bigger machine. It also decides whether your Greeks are usable: a delta taken as the difference of two independently simulated prices is often pure noise, while the same delta under common random numbers is clean to three decimals. And always quote the error bar with the price; a Monte Carlo number without a standard error cannot be audited.
Antithetic variates are not automatic improvement. They rely on the payoff being monotone in the shocks, so flipping the shocks flips the luck. For a straddle, a butterfly or a variance swap, a big move either way pays, so the twin moves the same direction, turns positive, and pairing makes variance worse for the same work. Measure the correlation on a pilot run before trusting it.
Variance reduction shrinks the error bar around the number your scheme is converging to; it does not remove bias. If your Euler discretisation is a cent low, a hundred-fold variance reduction gives a beautifully precise number that is still a cent low. Bias is cured with smaller time steps, variance with the tricks above. Keep the two problems separate.
Related concepts
Practice in interviews
Further reading
- Glasserman, Monte Carlo Methods in Financial Engineering (Ch. 4)
- Boyle, Broadie and Glasserman (1997), Monte Carlo Methods for Security Pricing
- Jäckel, Monte Carlo Methods in Finance (Ch. 10)