You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于蒙特卡洛模拟的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

火山引擎 最新活动