波動性

通過事前限制控制事後波動

  • June 13, 2014

在共同基金的背景下,KID 指令迫使我們計算(市場)基金的 5 年事後波動率(每週回報)。因此,我們每週回顧過去並使用最後一次計算波動率(年化) $ 5*52 = 260 $ 每週回報。

給定一個 $ 5 $ 一年的歷史以及最近的事後波動 我們如何為市場基金設置事前限制,以免在下一個時期違反一定程度的事後波動?

開始一連串的想法:我們得到回報 $ r_1,\ldots, r_{260} $ 現在和一周後我們得到回報 $ r_2\ldots r_{260} $ 和一個新的回報,我們事前假設它是正態分佈的,具有波動性 $ \sigma $ 那麼未來的事後變異數由下式給出(假設平均回報為 $ 0 $ 為簡單起見)

$$ 1/259 \sum_{i=2}^{260} r_i^2 + 1/259 X^2 \sigma^2/52, $$ 在哪裡 $ X^2 $ 是卡方分佈 $ 1 $ df(因子 $ 1/259 $ 是變異數估計量的常用因子,並且 $ 1/52 $ 將年化變異數縮放為每週)。因此,如果我們希望事後 vol 低於門檻值 $ t $ 我們需要那個 $$ 1/259 \sum_{i=2}^{260} r_i^2 + 1/259 X^2 \sigma^2/52 \le t^2 $$ 因此 $$ X^2 \sigma^2/52 \le 259*t^2-\sum_{i=2}^{260} r_i^2, $$ 我們可以使用這個等式來設置事前交易量的限制。

上面的構想似乎奏效了。我在實現這個的地方發布了一些R程式碼。似乎運作良好。歡迎評論!

r.hist = rnorm(5*52,0,0.18/sqrt(52)) ## 18% vola
limit.vol = 0.2 ## limit 20% vola

## next period 5% confidence

gap = 0.2^2/52*259-sum(r.hist[2:259]^2)
var.treshold = gap/qchisq(0.95, 1)
target.vol = sqrt(var.treshold*52)
cat("Target vola",round(target.vol*100),"%")
## simulate
ex.post.vol = NULL
N = 1000
new.ret = rnorm(N,0,target.vol/sqrt(52))
for (i in 1:N){
r.new = c(r.hist[2:259],new.ret[i])
ex.post.vol = c(ex.post.vol,sd(r.new)*sqrt(52))
}

plot(ex.post.vol,main="Sampled ex-post vol one week later")
quantile(ex.post.vol,0.95)
quantile(ex.post.vol,0.99)

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