R中几何布朗运动的蒙特卡罗模拟给出负数

时间:2018-06-16 04:28:36

标签: r montecarlo stochastic-process

我的印象是,涉及几何布朗运动的模拟不应该产生负数。但是,我在R中尝试以下蒙特卡罗模拟GBM,其中我的初始资产价格是:$ 98.78 $,$ \ mu = 0.208 $,$ \ sigma = 0.824 $。我初始化了我的数据框架:(我只是在5年内完成1000次模拟,每年模拟价格)

V = matrix(0, nrow = 1000, ncol = 6)
V_df = data.frame(V)

然后:

V[, 1] <- 98.78

然后我执行模拟(dt = 1):

for (i in 1:1000) {
        for (j in 1:5) {
            V_df[i,j+1] <- V_df[i,j]*(mu*dt + sigma*sqrt(dt)*rnorm(1)) + V_df[i,j]
        }
    }    

当我检查V_df时,有许多负面条目,但不应该是这种情况。有人会知道为什么会这样吗?

感谢。

1 个答案:

答案 0 :(得分:-1)

您对GBM的解决方案不正确。一步应该阅读

V_df[i,j+1] <- V_df[i,j]*exp((mu - sigma^2/2)*dt + sigma*sqrt(dt)*rnorm(1))

然而,使用双循环执行此操作非常低效。您可以创建随机数矩阵,并使用cumprodcumsum生成路径。您使用哪种功能取决于您何时选择exp

另见https://en.m.wikipedia.org/wiki/Geometric_Brownian_motion