-1
我用R來模擬波動率爲0.25的股票的價格路徑,然後我計算那些模擬路徑的波動率。我發現,當模擬步驟的數量很少,例如少於75步時,模擬價格路徑的波動性實際上小於0.25。當我增加步數時,它逐漸收斂到0.25。任何人都可以解釋這一點,我怎樣才能生成具有固定波動性的價格路徑,而不管步驟的數量。謝謝。 R蒙特卡羅模擬價格路徑收斂波動問題
#----------------------- code -----------------------
#number of simulation runs
nSims = 1000
S = 100
r = 0
q = 0
volatility = 0.25
#drift term
mu = r - q
#every trading day increment
dt = 1/365
vol_vec = vector()
for (tDays in 1:365) {
# standard normal distribution random number
z = rnorm(tDays*nSims, mean=0, sd=1)
# generate log-normal return matrix
return_matrix = matrix(exp((mu - 0.5 * volatility^2) * dt + volatility * sqrt(dt) * z), ncol=nSims)
# return value: price path matrix
path = rbind(matrix(rep(S,nSims),ncol=nSims), S*apply(return_matrix,2,cumprod))
# calculate the volatility of path
vol = mean(apply(path, 2, function(x){sqrt(365*mean(diff(log(x),n=1)^2))}))
vol_vec = c(vol_vec, vol)
}
plot(vol_vec, type="l", col="blue")
abline(h=volatility, col="black", pch=22, lty=2)
這看起來像初始化偏差。你的數據是否有序列相關? – pjs 2014-09-20 18:37:38
@pjs不,數據是使用rnorm()隨機生成的。謝謝。 – 2607 2014-09-21 11:43:17
你的'z's是iid,但它們不是輸出數據。不是一個R程序員,我無法弄清楚你正在做什麼來使'z's進入'vol_vec'。如果'vol_vec'值是連續相關的,他們會受到你的起始條件的影響 - 它看起來像你從零開始並且向上漂移。 – pjs 2014-09-21 16:50:16