我在R中更像是一个新手并且一直在尝试使用简单的蒙特卡罗模拟(没有回归等)来构建一个公式来定价美式类型选项(看涨或看跌)。虽然该代码适用于欧洲类型选项,但它似乎高估了美国类型选项(与二项式/三项式树和其他定价模型的比较)。
我非常感谢您的意见!
我采取的步骤概述如下。
1。)用m + 1步(几何布朗运动)模拟n股票价格路径:
n = 10000; m = 100; T = 5; S = 100; X = 100; r = 0.1; v = 0.1; d = 0
pat = matrix(NA,n,m+1)
pat[,1] = S
dt = T/m
for(i in 1:n)
{
for (j in seq(2,m+1))
{
pat[i,j] = pat[i,j-1] + pat[i,j-1]*((r-d)* dt + v*sqrt(dt)*rnorm(1))
}
}
2。)我计算了看涨期权的支付矩阵,并通过向后归纳来放置期权和折扣:
# Put option
payP = matrix(NA,n,m+1)
payP[,m+1] = pmax(X-pat[,m+1],0)
for (j in seq(m,1)){
payP[,j] = pmax(X-pat[,j],payP[,j+1]*exp(-r*dt))
}
# Call option
payC = matrix(NA,n,m+1)
payC[,m+1] = pmax(pat[,m+1]-X,0)
for (j in seq(m,1)){
payC[,j] = pmax(pat[,j]-X,payC[,j+1]*exp(-r*dt))
}
3。)我将期权价格计算为0时的平均(平均)收益:
mean(payC[,1])
mean(payP[,1])
在上面的示例中,找到了大约44.83的看涨价和3.49的近似看跌价。然而,采用三叉树方法(n = 250步),价格应该更多39.42(看涨)和1.75(看跌)。 Black Scholes认购价(因为没有股息收益率)是39.42。
正如我所说,任何意见都受到高度赞赏。非常感谢你提前!
所有的优点!
答案 0 :(得分:1)
我认为你的问题是一个概念问题,而不是一个实际的编码问题。
您的代码目前所做的是,事后最佳时间点需要在整个模拟股票价格路径上行使美式期权。它没有考虑到,一旦美国期权的内在价值高于其计算的期权价格,你就行使它 - 这意味着,你放弃将来有机会行使它内在价值和期权价格之间的差异可能更大(取决于实现的股票价格变动)。
因此,您高估了期权价格。