程式

R中的GBM給出負數?

  • June 16, 2018

我的印像是涉及幾何布朗運動的模擬不應該產生負數。但是,我在 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} $ 有很多負麵條目。有人知道為什麼會這樣嗎?

謝謝。

使用如此大的時間步長(每年),您最好使用精確的 GBM 解決方案,而不是離散技術上僅在無窮小的意義上有效的內容。

所以你會使用 $ V_{t_2} = V_{t_1} . e^{(\mu-\frac{\sigma^2}{2})(t_2-t_1)+\sigma(W_{t_2}-W_{t_1})} $

在哪裡 $ W_{t_2}-W_{t_1} \sim N(mean=0,var=t_2-t_1) $

然後,您將只有正值。

不利的一面是指數計算需要更多時間,但我認為這是次要問題。

引用自:https://quant.stackexchange.com/questions/40347