好内容值得等待,马上呈现给你~
蒙特卡洛模拟是一种通过重复随机抽样来估计数学期望、概率分布或复杂系统行为的数值方法。
核心思想: 用大量随机实验的结果来逼近真实解。
当试验次数n → ∞时,样本均值 → 总体期望
E[X] ≈ (1/n) × Σ X_i
特别适用于:
代码示例:
import numpy as np
def monte_carlo_european_call(S0, K, T, r, sigma, n_simulations=100000):
# 生成随机路径
Z = np.random.standard_normal(n_simulations)
# 股票终值 (风险中性测度下)
ST = S0 * np.exp((r - 0.5*sigma**2)*T + sigma*np.sqrt(T)*Z)
# 期权收益
payoff = np.maximum(ST - K, 0)
# 折现
price = np.exp(-r*T) * np.mean(payoff)
return price
优势: 可以处理非正态分布和非线性组合
def monte_carlo_var(returns, confidence=0.95, n_simulations=10000):
# 拟合分布参数
mu, sigma = returns.mean(), returns.std()
# 模拟
simulated = np.random.normal(mu, sigma, n_simulations)
# VaR
var = np.percentile(simulated, (1-confidence)*100)
return -var
同时使用Z和-Z
减少方差约50%
利用已知期望的相关变量
Y_adj = Y - c*(X - E[X])
改变抽样分布
增加重要区域的采样