基于蒙特卡洛模拟的R语言美式期权定价结果偏高求助
嗨,我明白你现在遇到的问题——用无回归的简单蒙特卡洛做美式期权定价时,估值总是比二叉树、三叉树这些模型偏高,而欧式的效果却不错。这其实是这类 naive 蒙特卡洛方法的常见坑,我来给你拆解下原因和具体的改进建议:
美式期权的核心是提前行权的最优性:在每个时间点,你需要比较「立即行权的内在价值」和「继续持有期权的期望价值」,取较大的那个作为当前期权的价值。而无回归的简单蒙特卡洛通常没有准确计算后者——你可能只是直接拿后续路径的到期价值平均来代替“继续持有价值”,但这忽略了后续时间点也可以提前行权的可能性,导致你错误地认为“现在行权更划算”,最终高估了期权价值。
1. 引入最小二乘蒙特卡洛(LSM)——行业标准方案
这是目前用蒙特卡洛定价美式期权的主流方法,核心是用回归来估计每个时间点的继续持有价值。具体步骤和R语言示例如下:
- 先模拟所有股价路径到到期日
- 从后往前倒推:对每个时间点,筛选出实值路径,用当前股价的多项式(比如二次、三次)作为自变量,后续的期权价值(折现后)作为因变量做回归,得到继续持有价值的估计
- 比较内在价值和回归得到的继续持有价值,取最大值更新当前路径的期权价值
- 一直倒推到初始时刻,所有路径的平均就是美式期权的价值
R语言LSM示例代码(美式看跌期权)
library(MASS) # 参数设置 S0 <- 100 # 初始股价 K <- 100 # 行权价 r <- 0.05 # 无风险利率 sigma <- 0.2 # 波动率 T <- 1 # 到期时间 m <- 50 # 时间步数 n <- 10000 # 路径数量 dt <- T/m # 模拟几何布朗运动路径 set.seed(123) Z <- matrix(rnorm(n*m), nrow=n, ncol=m) S <- matrix(S0, nrow=n, ncol=m+1) for (t in 1:m) { S[,t+1] <- S[,t] * exp( (r - 0.5*sigma^2)*dt + sigma*sqrt(dt)*Z[,t] ) } # 初始化到期日期权价值 V <- pmax(K - S[,m+1], 0) # 从后往前倒推计算美式期权价值 for (t in m:1) { # 筛选实值路径(看跌期权:股价 < 行权价) itm_paths <- which(S[,t] < K) if (length(itm_paths) > 0) { # 构造回归自变量(常数项+股价+股价平方) X <- cbind(rep(1, length(itm_paths)), S[itm_paths,t], S[itm_paths,t]^2) # 后续期权价值折现到当前时间点 discounted_future_value <- V[itm_paths] * exp(-r*dt) # 最小二乘回归估计继续持有价值 beta <- ginv(t(X) %*% X) %*% t(X) %*% discounted_future_value continuation_value <- X %*% beta # 比较内在价值和继续持有价值,取最大值 intrinsic_value <- K - S[itm_paths,t] V[itm_paths] <- pmax(intrinsic_value, continuation_value) } # 折现到前一个时间点 V <- V * exp(-r*dt) } # 计算美式期权价格 american_price <- mean(V) cat("美式看跌期权价格:", round(american_price, 4), "\n") # 欧式看跌期权价格作为对比 european_price <- exp(-r*T) * mean(pmax(K - S[,m+1], 0)) cat("欧式看跌期权价格:", round(european_price, 4), "\n")
2. 优化路径模拟的准确性
先确保你的几何布朗运动模拟是正确的,风险中性测度下的离散化公式是:S_t = S_{t-1} * exp( (r - 0.5*sigma²)*dt + sigma*sqrt(dt)*Z )
注意漂移项里的-0.5*sigma²,这是修正几何布朗运动离散化的关键,如果漏掉这一项,会导致股价模拟偏高,进而影响期权估值。
另外,增加路径数量n和时间步数m可以降低估值的方差,让结果更稳定——样本量不足也可能导致估值偏离合理区间。
3. 用边界情况验证逻辑
比如对于无股息的美式看涨期权,提前行权是完全不划算的,此时美式看涨的价值应该和欧式看涨几乎一致。你可以用这个场景测试你的代码:如果无股息时你的美式看涨估值明显高于欧式,那说明你的提前行权判断逻辑肯定有问题,需要修正。
无回归蒙特卡洛高估美式期权的核心问题是没有准确估计“继续持有期权的期望价值”,LSM方法通过回归解决了这个问题,是目前最成熟的方案。同时,确保路径模拟正确、用边界场景验证,能帮你快速定位代码里的问题。
内容的提问来源于stack exchange,提问作者novice1337




