#蒙特卡洛法计算欧式看涨期权
payoff_call=function(price,X)
{
return(max(0,price-X))
}
price_simulate=function(S,r,sigma,t)
{
R=(r-0.5*sigma^2)*t
sd=sigma*sqrt(t)
return(S*exp(R+sd*rnorm(1)))
}
mc_eurocall=function(S,X,r,sigma,t,n)
{
s_t=numeric(n)
sum_payoffs=numeric(n)
for(i in 1:n)
{
s_t=price_simulate(S,r,sigma,t)
sum_payoffs=payoff_call(s_t,X)
}
s=sum(sum_payoffs)
return(exp(-r*t)*(s/n))
}
S
X
r
sigma
t
n
res2=mc_eurocall(S,X,r,sigma,t,n)
res2
#每次运行结果都不同,同样的代码实际运行收敛到10.4左右,参考文献(同前)是14.8左右
|
|