Quant Memo
Core

Control Variates In Option Pricing

If you know a friend's exact time on a similar race, you can use the gap between their measured and true time to correct your own — that's exactly how a control variate squeezes noise out of a Monte Carlo option price.

Prerequisites: Monte Carlo Option Pricing, Antithetic Variates and Control Variates, The Black-Scholes Model

Price an option by Monte Carlo and every simulated path adds noise around the true answer — run 10,000 paths and the standard error only shrinks as 1/N1/\sqrt{N}, so halving the error means quadrupling the paths. A control variate shrinks that error for free, using information you already have: if a second, closely related payoff has a known closed-form price, the gap between its simulated average and its true value shows exactly how much noise this batch of random paths generated — and that noise can be subtracted straight out of the option you actually care about.

Racing with a friend whose time you already know

Imagine timing your own 10K with an unreliable stopwatch, while a friend with an identical pace ran the same route yesterday and you know their official, exactly-measured time. If your stopwatch clocks your friend's replayed pace at 2% slower than their known time, that 2% is almost certainly your stopwatch's error — so you correct your own measured time by the same 2%. A control variate works the same way: simulate a payoff whose true price you already know, see how far the simulation average missed it by, and use that miss to correct the price of the option you don't.

C^cv=C^β(Y^E[Y])\hat{C}_{\text{cv}} = \hat{C} - \beta\left(\hat{Y} - \mathbb{E}[Y]\right)

In plain English: C^\hat{C} is the raw Monte Carlo average for the option you're pricing, YY is the payoff of a related instrument whose true expected value E[Y]\mathbb{E}[Y] is known in closed form, Y^\hat{Y} is that same instrument's simulated average from the identical random paths, and β\beta is a scaling factor (chosen to minimise variance; β=1\beta=1 is a common simple choice when CC and YY move closely together). Whatever error Y^\hat{Y} shows relative to its known truth gets subtracted, scaled by β\beta, from the option price you actually wanted.

Worked example 1: an Asian call controlled by a European call. Price an Asian call (payoff on the average stock price, no closed form) from 5 simulated paths for a stock starting at $100, using an ordinary European call on the same paths (payoff on the final price, which has a closed form) as the control. Say the 5 simulated Asian payoffs are 8,11,6,14,98, 11, 6, 14, 9 (average C^=9.60\hat C = 9.60), the European payoffs on those same paths are 10,15,5,18,1210, 15, 5, 18, 12 (average Y^=12.00\hat Y = 12.00), and the true Black-Scholes price of that European call is E[Y]=11.20\mathbb{E}[Y]=11.20. With β=1\beta=1: C^cv=9.60(12.0011.20)=9.600.80=8.80\hat{C}_{\text{cv}} = 9.60 - (12.00 - 11.20) = 9.60 - 0.80 = 8.80, i.e. $8.80. The European control overshot its known truth by $0.80 on this batch — almost certainly these 5 paths trending a bit high overall — so that same $0.80 is subtracted from the Asian estimate too, since both payoffs share the same paths and the same random error.

Path explorer
13243time →
end (bold path) 90.35spread of ends 63.336 independent paths, same settings

The Asian and European payoffs above come from the exact same simulated paths — that shared randomness is why an error in one is informative about the error in the other.

Worked example 2: how much variance this removes. The corrected estimator's variance is roughly Var(C^)β2Var(Y^)ρ2\text{Var}(\hat C) - \beta^2\text{Var}(\hat Y)\,\rho^2, where ρ\rho is the correlation between the two payoffs across paths. If ρ=0.9\rho=0.9 (plausible, since both depend on the same path), the variance reduction factor is 1ρ2=10.81=0.191-\rho^2=1-0.81=0.19 — the corrected estimator's variance is only 19% of the uncorrected one's, equivalent to roughly 1/0.195.3×1/0.19 \approx 5.3\times as many raw simulations, for free.

simulated $\hat Y$ true $\mathbb{E}[Y]$ simulated $\hat C$ corrected $\hat C_{cv}$
The gap between the control's simulated and known-true value is subtracted from the target payoff's simulated average, on the assumption the same random paths caused a similar error in both.

What this means in practice

Control variates are the workhorse variance-reduction technique whenever a complex, closed-form-free payoff (Asian, basket, barrier options under stochastic volatility) is close in behaviour to something simpler that does have a closed form — a plain vanilla call is the most common choice, and combining a control variate with antithetic sampling (see Antithetic Variates and Control Variates) is standard practice for production pricers.

A control variate only helps if it's genuinely correlated with the target payoff — an unrelated instrument with a known price adds nothing (the ρ2\rho^2 term above would be near zero) and can even slightly hurt if β\beta is mis-estimated from a small sample. Picking the control is a judgment call about which known payoff moves most closely with the one you're actually trying to price, not an automatic step.

A control variate subtracts the Monte Carlo error observed on a related, exactly-known payoff from the estimate of an unknown one, on the logic that the same random paths that biased one estimate biased the other in the same direction — turning free information you already had into a sharper price.

Related concepts

Practice in interviews

Further reading

  • Glasserman, Monte Carlo Methods in Financial Engineering (Ch. 4)
  • Boyle, Broadie & Glasserman (1997), Monte Carlo Methods for Security Pricing
ShareTwitterLinkedIn