在使用R的公式中使用随机生成的数字需要帮助

时间:2017-02-01 02:14:32

标签: r random montecarlo

这是我的下面的代码,我得到的是一个相同值的列表,它似乎不是R正在采用随机生成的值,运行等式然后给我结果。

montecarlo = function(r,v,t,x,k,n) {
   y = rnorm(n)
   stockprice = x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))
   MCOP = exp(-r*t)*(stockprice-k)
   return(MCOP)
}

如果设置n = 100

,此代码的输出只是单个值100次

1 个答案:

答案 0 :(得分:1)

让我们添加一些print()语句(您也可以使用debug(montecarlo)以交互方式逐步执行此功能):

montecarlo = function(r,v,t,x,k,n) {
   y = rnorm(n)
   p = (-v*sqrt(t)*y)+((r-(.5*v^2))*t)
   print(range(p))
   stockprice = x*exp(p)
   print(range(stockprice))   
   MCOP = exp(-r*t)*(stockprice-k)
   return(MCOP)
}

现在尝试功能:

set.seed(101)
m <- montecarlo(.45,65,1,30,29,100)
[1] -2232.440 -1961.294  ## exponent values
[1] 0 0                  ## stockprice values

因此指数函数具有如此大(负)的幅度,指数函数下溢到零。由于随机值仅通过stockprice输入表达式,因此它们将被清零。

看起来这里的主要罪魁祸首是v,你设置为65,所以v^2是一个很大的数字......