我的印象是,涉及几何布朗运动的模拟不应该产生负数。但是,我在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时,有许多负面条目,但不应该是这种情况。有人会知道为什么会这样吗?
感谢。
答案 0 :(得分:-1)
您对GBM的解决方案不正确。一步应该阅读
V_df[i,j+1] <- V_df[i,j]*exp((mu - sigma^2/2)*dt + sigma*sqrt(dt)*rnorm(1))
然而,使用双循环执行此操作非常低效。您可以创建随机数矩阵,并使用cumprod
或cumsum
生成路径。您使用哪种功能取决于您何时选择exp
。