Variance Reduction Techniques in Simulation › Combining Variance Reduction Techniques
Michael BrenndoerferDecember 3, 20253 min read
Quantitative FinanceAll chapters Part 6 of 15Numerical Methods for Derivative Pricing
Variance Reduction Techniques in Simulation › Combining Variance Reduction TechniquesOne section · Sections in this chapter6 / 12 ↓
Sections in this chapter12
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
The techniques we've covered are not mutually exclusive. In practice, combining multiple methods can yield variance reduction factors far exceeding what any single technique achieves alone.
Antithetic Variates + Control Variates
In[26]:
Codedef monte_carlo_call_combined(S0, K, T, r, sigma, n_simulations):
"""
Price a European call using both antithetic variates and control variates.
"""
np.random.seed(42)
# Generate half as many random numbers for antithetic pairs
n_pairs = n_simulations // 2
Z = np.random.standard_normal(n_pairs)
# Original and antithetic terminal prices
ST_orig = S0 * np.exp((r - 0.5 * sigma**2) * T + sigma * np.sqrt(T) * Z)
ST_anti = S0 * np.exp((r - 0.5 * sigma**2) * T + sigma * np.sqrt(T) * (-Z))
# Discounted payoffs
payoff_orig = np.exp(-r * T) * np.maximum(ST_orig - K, 0)
payoff_anti = np.exp(-r * T) * np.maximum(ST_anti - K, 0)
# Average of antithetic pairs
payoff_av = (payoff_orig + payoff_anti) / 2
# Control variate: average of discounted terminal prices
cv_orig = np.exp(-r * T) * ST_orig
cv_anti = np.exp(-r * T) * ST_anti
cv = (cv_orig + cv_anti) / 2
E_cv = S0 # Known expected value
# Optimal coefficient
c_opt = np.cov(payoff_av, cv)[0, 1] / np.var(cv)
# Combined estimate
payoff_combined = payoff_av - c_opt * (cv - E_cv)
price = np.mean(payoff_combined)
std_error = np.std(payoff_combined) / np.sqrt(n_pairs)
return price, std_errorIn[27]:
Codecombined_price, combined_se = monte_carlo_call_combined(
S0, K, T, r, sigma, 100000
)Out[28]:
ConsoleCombined Variance Reduction Results ================================================== Black-Scholes Price: \$10.4506 Method Price Std Error VRF -------------------------------------------------- Standard MC \$10.4739 0.0466 1.00x Antithetic \$10.4529 0.0329 2.01x Control Variate \$10.4586 0.0177 6.90x Combined (AV + CV) \$10.4513 0.0087 28.42x
The combined method achieves variance reduction factors that exceed the sum of individual improvements, showing how these techniques complement each other.
Out[29]:
Visualization