Making Monte Carlo cheaper: control variates for SDE simulation
Stochastic differential equations rarely have closed-form solutions, so if you want for some functional of the solution, you simulate: discretize the equation, generate many paths, average. That gives you two separate errors. Discretization contributes a bias of order , and averaging finitely many paths contributes a statistical error of order .
The second rate is the annoying one. It doesn’t care about the dimension of the problem, which is why Monte Carlo is used at all — but it is slow. Cutting the error by a factor of ten costs a hundred times more paths. Since the cost per path is fixed, buying accuracy by brute force stops being viable very quickly.
The root mean squared error of the estimator is
and sits in the denominator, but sits in the numerator. This is the whole idea behind my seminar paper: instead of pushing up, push down.
The setup
Take an Itô process
and approximate it with the Euler–Maruyama scheme on a uniform grid :
The Monte Carlo estimator is unbiased for the discretized target ; its bias relative to the true is exactly the weak error of the scheme, which for Euler–Maruyama is . Those are two different knobs — controls the bias, and everything below is about the variance.
Control variates
The trick is to pair each simulation output with a second quantity computed on the same path, whose expectation you happen to know exactly. Then for any fixed ,
and averaging gives . Since , the correction term has mean zero, so the estimator stays unbiased no matter what you pick. What changes is the variance:
minimized at
Two things worth noticing. First, is literally the slope of a linear regression of on — the method is regressing out the part of the noise that the control can explain. Second, the payoff is entirely governed by : a control correlated at buys you 25% of the variance, while one correlated at buys you 98%. Weak controls are nearly worthless, and good ones are dramatic.
In practice is unknown and gets estimated from the same sample as . That reintroduces a small bias of order — and the term it multiplies are no longer independent — but it is dominated by the standard error and is normally ignored.
A small example first: estimating
Throw points uniformly into the unit square and count how many land in the quarter disc. The scaled indicator has mean . As a control, take the average squared distance from the origin, , whose expectation is — no simulation needed, just two integrals.

The middle panel is the point: the empirical and the control move together, and the fitted regression line is . Subtracting that fitted component removes about 64% of the variance with points per trial over trials — for the cost of one extra sum per point.
A martingale as the control
For SDEs there’s a natural source of controls with known expectations: martingales. A martingale satisfies , so its expectation is pinned to its starting value — the “known expectation” requirement comes for free. And if you build one from the same Brownian increments that drive your simulation, it picks up the same noise, which is where the correlation comes from.
The concrete case in the paper is a European call under geometric Brownian motion. The asset follows , and the target is the discounted payoff . (There is a closed-form answer here, of course; the point is to pretend there isn’t and check the method against something verifiable.)
Consider the discounted price and apply Itô’s formula. Since is linear in , the second-order term vanishes:
The drift cancels exactly. What’s left is a pure Itô integral, which is a martingale, so .
There is one detail that matters in practice. The simulation doesn’t produce , it produces the Euler–Maruyama approximation , so the control that actually gets used is — and its expectation is not . Taking expectations through the scheme with gives
which is again known exactly, in closed form. Using the discrete expectation rather than the continuous one is what keeps the corrected estimator unbiased with respect to the discretized target instead of picking up a fresh bias through the back door.
What it does, and where it stops working
Simulating paths with steps, , , , , and sweeping the strike:
| Strike | Var (plain) | Var (with CV) | Reduction | |
|---|---|---|---|---|
| 40 | 0.994 | 52.6 | 0.61 | 98.8% |
| 45 | 0.967 | 41.5 | 2.69 | 93.5% |
| 50 | 0.895 | 25.0 | 4.97 | 80.1% |
| 55 | 0.767 | 11.5 | 4.75 | 58.8% |
| 60 | 0.603 | 4.24 | 2.70 | 36.4% |
| 65 | 0.431 | 1.35 | 1.10 | 18.6% |
| 70 | 0.283 | 0.40 | 0.37 | 8.0% |

Deep in the money, the control removes 99% of the variance — the same accuracy for roughly 1% of the paths. That is a much better deal than anything you get by increasing .
But the effect decays fast, and the reason is structural rather than numerical. When is well below , the option almost always pays out, the payoff is essentially minus a constant, and the discounted price tracks it almost perfectly. As rises, the starts clipping more and more paths to zero. The payoff stops being a linear function of the terminal price, the correlation collapses, and with it — quadratically — the benefit. By the control is doing almost nothing.
That failure mode is what makes the last observation interesting. The optimal coefficient is a regression slope, and the method is a linear projection onto a single hand-picked control. Nothing forces it to stay linear or hand-picked: for payoffs too awkward to handle analytically, you could train a model to produce a control that is highly correlated with the payoff and whose expectation is still known. That’s the direction I’d like to take this next.
Full write-up, with the definitions, proofs and references: Monte Carlo Simulation of SDEs and Variance Reduction via Control Variates (PDF).