我更像是R中的新手,并且一直在尝试使用简单的蒙特卡洛模拟(无回归等(来为美国类型选项(呼叫或put(建立一个公式。虽然该代码适合欧洲类型选项,但它似乎超过了美国类型的选项(与二项式/三项树木和其他定价模型相比(。
我非常感谢您的投入!
我采取的步骤在下面概述。
1。(模拟N股票价格路径M 1步(几何布朗运动(:
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(put(。黑色学者通话价格(由于没有股息收益(为39.42。
正如我所说,任何投入都非常感谢。非常感谢您!
所有最好的!
我认为您的问题是一个概念上的问题,而不是实际的编码问题。
您的代码目前要做的是,在事后最佳时间点需要在整个模拟股票价格路径上行使美国选项。它没有考虑到,一旦美国选项的内在价值高于其计算的期权价格,您就可以行使它 - 这意味着您将来有机会在将来锻炼它内在价值和期权价格之间的差异可能更大(取决于实现的股票价格变动(。
因此,您高估了期权价格。