Variance Reduction Techniques in Simulation › Control Variates
Quantitative FinanceAll chapters Variance Reduction Techniques in Simulation › Control VariatesOne section · Sections in this chapter4 / 12 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Control variates adjust Monte Carlo estimates by exploiting information from related quantities with known expected values. This section presents the mathematical framework and demonstrates practical applications to option pricing.
The Core Intuition
Control variates use a different strategy: instead of modifying how we sample, we adjust our estimate using information from a related quantity whose expected value we know exactly. The idea is analogous to using a calibration standard in measurement. If we know exactly what a reference measurement should be, we can use any deviation to correct our target measurement.
To make this intuition concrete, consider a situation where you want to estimate the average height of students in a university. Suppose you also know the exact average age of all students from registration records. When you sample students, you measure both their height and age. If your sample happens to include more older students than average, the sample average height might be biased high if older students tend to be taller. But since you know the true average age, you can detect this bias in your age measurements and use it to correct your height estimate. This is precisely what control variates do.
Suppose we want to estimate but don't know its exact value. However, we have access to another random variable that is correlated with and whose expected value we do know. During each simulation, we observe both and . If happens to be above its known expected value, and and are positively correlated, then is probably also above its expected value. We can use this information to adjust our estimate of downward.
The beauty of this approach is that it exploits known information without changing the simulation procedure. We still generate the same random samples, but we extract more information from each sample by using the relationship between the target quantity and the control variable.
Mathematical Foundation
The mathematical framework for control variates formalizes the intuition of using known information to correct our estimates. The control variate estimator for is:
where:
- : control variate estimator
- : sample mean of the target variable
- : sample mean of the control variable
- : known expected value of the control variable
- : adjustment coefficient
This formula has an elegant interpretation. The term measures how much our sample of deviates from its known expectation. This deviation is a diagnostic: it tells us whether our particular sample is biased high or low relative to the true population. The coefficient determines how strongly we use this diagnostic information to correct our estimate of . We use this deviation to correct our estimate of .
The expected value of this estimator is:
where:
- : control variate estimator
- : sample means of target and control
- : adjustment coefficient
- : expected value of control variable
- : expected value of target variable
The estimator is unbiased for any choice of since . This unbiasedness gives us freedom in choosing . No matter what coefficient we select, the expected value of our estimator equals the true quantity we seek. This means we can choose to minimize variance without worrying about introducing bias.
Now we analyze the variance of the control variate estimator to understand how to choose the optimal coefficient. The variance of the control variate estimator is:
where:
- : variance of the control variate estimator
- : variance of
- : variance of
- : covariance between and
- : adjustment coefficient
- : number of simulations
This expression reveals the trade-off in choosing . The first term is the variance of standard Monte Carlo. The second term adds variance proportional to how aggressively we use the control. The third term subtracts variance when and the covariance have the same sign. The optimal choice of balances the benefit of using the control against the cost of adding its variability.
To minimize variance, we take the derivative with respect to and set it to zero:
where:
- : control variate coefficient
- : number of simulations
- : variance of the control variable
- : covariance between target and control
Solving for :
where:
- : optimal control variate coefficient
- : covariance between and
- : variance of
This optimal coefficient is precisely the slope from regressing on . This connection to regression provides both intuition and practical implementation. The regression slope measures how much changes per unit change in , which is exactly what we need to know to correct for deviations in from its mean. In practice, we can estimate by running an ordinary least squares regression of on using our simulation data.
Variance Reduction with Optimal Coefficient
Having derived the optimal coefficient, we can now determine exactly how much variance reduction the control variate method achieves. Substituting back into the variance formula:
where:
- : variance of the optimized control variate estimator
- : variance of the standard Monte Carlo estimator
- : correlation between target and control
This elegant result shows that the variance is reduced by a factor of compared to standard Monte Carlo. The variance reduction factor is:
where:
- : Variance Reduction Factor
- : correlation between target and control
This formula reveals that variance reduction depends entirely on the squared correlation between and . A control variate with correlation yields a variance reduction factor of . With , the factor jumps to approximately 50. The squared correlation appearing in this formula explains why finding highly correlated controls is so valuable: the benefit grows rapidly as correlation approaches 1.
Notice that the sign of the correlation does not matter because we square it. Whether the control is positively or negatively correlated with the target, the optimal coefficient will have the appropriate sign to correct for deviations. What matters is the strength of the relationship, not its direction.

The optimal coefficient for control variates equals the regression slope of on . In practice, we estimate this coefficient from our simulation data using ordinary least squares, which introduces a small bias but typically provides near-optimal variance reduction.
Choosing Control Variates for Option Pricing
The most natural control variate for option pricing is the underlying asset itself. For a call option, define:
- = discounted call option payoff =
- = discounted terminal asset price =
Under risk-neutral pricing, we know that (the current stock price). This provides a perfect control variate since:
- We observe in every simulation (we need it to compute the payoff anyway)
- The expected value is known exactly
- is highly correlated with the call payoff
The first point is particularly important from a computational perspective. Using the terminal stock price as a control adds zero additional simulation cost because we already compute to evaluate the option payoff. The information is free; we just need to use it intelligently. The second point provides the anchor that makes control variates work: the martingale property of discounted prices under the risk-neutral measure gives us exact knowledge of . The third point ensures substantial variance reduction because the call payoff is a monotonically increasing function of the terminal stock price.
Implementation for European Options
def monte_carlo_call_control_variate(S0, K, T, r, sigma, n_simulations):
"""
Price a European call option using control variate technique.
Uses the discounted terminal stock price as the control variate.
"""
np.random.seed(42)
Z = np.random.standard_normal(n_simulations)
ST = S0 * np.exp((r - 0.5 * sigma**2) * T + sigma * np.sqrt(T) * Z)
# Discounted payoffs
X = np.exp(-r * T) * np.maximum(ST - K, 0) # Option payoff
Y = np.exp(-r * T) * ST # Control variate
# Known expected value of control variate
E_Y = S0
# Estimate optimal coefficient using regression
cov_XY = np.cov(X, Y)[0, 1]
var_Y = np.var(Y)
c_optimal = cov_XY / var_Y
# Control variate adjusted estimate
X_adjusted = X - c_optimal * (Y - E_Y)
price = np.mean(X_adjusted)
std_error = np.std(X_adjusted) / np.sqrt(n_simulations)
# Also compute standard MC for comparison
price_std = np.mean(X)
std_error_std = np.std(X) / np.sqrt(n_simulations)
return {
"price_cv": price,
"se_cv": std_error,
"price_std": price_std,
"se_std": std_error_std,
"optimal_c": c_optimal,
"correlation": np.corrcoef(X, Y)[0, 1],
}# Run control variate simulation
results = monte_carlo_call_control_variate(
S0, K, T, r, sigma, n_simulations=100000
)Control Variate Method Results ================================================== Black-Scholes Price: \$10.4506 Standard Monte Carlo: Price: \$10.4739 Standard Error: \$0.0466 Control Variate: Price: \$10.4586 Standard Error: \$0.0177 Optimal Coefficient c*: 0.6738 Correlation (X, Y): 0.9247 Variance Reduction Factor: 6.90x
The control variate method achieves impressive variance reduction because the terminal stock price is highly correlated with the call option payoff.

Delta-Based Control Variates
For more sophisticated control variates, we rely on the martingale property of the discounted asset price. Since is a martingale under the risk-neutral measure, the stochastic integral of the delta-hedging strategy with respect to the discounted price process has zero expectation:
where:
- : time to expiration
- : option delta at time
- : asset price at time
- : risk-free interest rate
- : change in the discounted asset price
This formula represents the expected profit from a continuously rebalanced delta hedge. The delta is the sensitivity of the option price to the underlying asset price at each instant. A perfect delta hedge should have zero expected gain because it perfectly offsets the option's risk. This theoretical result from continuous-time finance provides an ideal control variate.
Discretizing this integral gives us a control variate based on the option's delta. The intuition is that a delta-hedged option position should have zero expected gain, and gives a strong control. In practice, we simulate the hedging strategy by computing the delta at each time step using the Black-Scholes formula, then accumulating the gains and losses from the hedge as the stock price evolves along the simulated path. The discrepancy between the hedge outcome and zero can be used to correct our option price estimate.
def monte_carlo_call_delta_control(
S0, K, T, r, sigma, n_simulations, n_steps=252
):
"""
Price a European call option using delta-based control variate.
"""
np.random.seed(42)
dt = T / n_steps
# Initialize paths
S = np.zeros((n_simulations, n_steps + 1))
S[:, 0] = S0
# Generate paths
Z = np.random.standard_normal((n_simulations, n_steps))
for t in range(n_steps):
S[:, t + 1] = S[:, t] * np.exp(
(r - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * Z[:, t]
)
# Compute delta at each time step
def bs_delta(S, K, tau, r, sigma):
if tau <= 0:
return np.where(S > K, 1.0, 0.0)
d1 = (np.log(S / K) + (r + 0.5 * sigma**2) * tau) / (
sigma * np.sqrt(tau)
)
return norm.cdf(d1)
# Control variate: sum of delta * (dS - r*S*dt)
control = np.zeros(n_simulations)
for t in range(n_steps):
tau = T - t * dt
delta = bs_delta(S[:, t], K, tau, r, sigma)
dS = S[:, t + 1] - S[:, t]
control += np.exp(-r * (t + 1) * dt) * delta * (dS - r * S[:, t] * dt)
# Option payoff
payoff = np.exp(-r * T) * np.maximum(S[:, -1] - K, 0)
# Optimal coefficient (expected value of control is 0)
c_optimal = np.cov(payoff, control)[0, 1] / np.var(control)
payoff_adjusted = payoff - c_optimal * control
price = np.mean(payoff_adjusted)
se = np.std(payoff_adjusted) / np.sqrt(n_simulations)
se_std = np.std(payoff) / np.sqrt(n_simulations)
return price, se, se_stddelta_price, delta_se, delta_se_std = monte_carlo_call_delta_control(
S0, K, T, r, sigma, n_simulations=50000, n_steps=100
)Delta-Based Control Variate Results ================================================== Black-Scholes Price: \$10.4506 Delta CV Price: \$10.4519 Standard Error (CV): \$0.002905 Standard Error (no CV): \$0.0658 Variance Reduction Factor: 513.5x
The delta-based control variate provides dramatic variance reduction because it exploits the martingale structure of the risk-neutral pricing framework.