0

我的印象是涉及几何布朗运动的模拟不应该产生负数。但是,我在 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 时,有很多负面条目,这不应该是这种情况。有人知道为什么会这样吗?

谢谢。

4

1 回答 1

-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

于 2018-06-16T05:58:41.097 回答