程式
R中的GBM給出負數?
我的印像是涉及幾何布朗運動的模擬不應該產生負數。但是,我在 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) $
然後,您將只有正值。
不利的一面是指數計算需要更多時間,但我認為這是次要問題。