Variance Reduction Techniques in Simulation › Convergence Analysis
Michael BrenndoerferDecember 3, 20253 min read
Quantitative FinanceAll chapters Part 6 of 15Numerical Methods for Derivative Pricing
Variance Reduction Techniques in Simulation › Convergence AnalysisOne section · Sections in this chapter7 / 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
Understanding how variance reduction affects convergence helps in practical deployment. Let's visualize the convergence of different methods.
In[30]:
Code# Convergence analysis
n_values = [1000, 2000, 5000, 10000, 20000, 50000, 100000]
methods = {
"Standard MC": [],
"Antithetic": [],
"Control Variate": [],
"Combined": [],
}
errors = {k: [] for k in methods.keys()}
for n in n_values:
# Standard MC
np.random.seed(42)
Z = np.random.standard_normal(n)
ST = S0 * np.exp((r - 0.5 * sigma**2) * T + sigma * np.sqrt(T) * Z)
payoffs = np.exp(-r * T) * np.maximum(ST - K, 0)
methods["Standard MC"].append(np.mean(payoffs))
errors["Standard MC"].append(np.std(payoffs) / np.sqrt(n))
# Antithetic
p, se = monte_carlo_european_call(S0, K, T, r, sigma, n, antithetic=True)
methods["Antithetic"].append(p)
errors["Antithetic"].append(se)
# Control Variate
res = monte_carlo_call_control_variate(S0, K, T, r, sigma, n)
methods["Control Variate"].append(res["price_cv"])
errors["Control Variate"].append(res["se_cv"])
# Combined
p, se = monte_carlo_call_combined(S0, K, T, r, sigma, n)
methods["Combined"].append(p)
errors["Combined"].append(se)Out[31]:
Visualization
The shaded regions show 95% confidence intervals (two standard errors). Methods with stronger variance reduction have tighter confidence intervals, reaching the same precision with fewer simulations.
Out[32]:
Visualization