程式
通過改變投資組合成分權重來測試 VaR 的嚴重性
假設我有一個包含兩個組件的投資組合:$$ \omega_i = 0.3 $$ $$ \omega_j = 0.7 $$
我也有兩個損益向量, $ v_i $ 和 $ v_j $ 每個包含 1000 個損益表。我想玩弄權重並在投資組合/總水平上測試 VaR 95%。如果我想將此練習擴展到 $ n $ 組件而不是只有兩個?
請注意,要找到投資組合損益,我只需將每個損益乘以每個組件的權重,然後將它們相加:$$ PnL_t = \omega_i \times v_{i,t} + \omega_j \times v_{j,t} $$
在 R 中,通過預定義數量的投資組合組合進行暴力破解的最簡單方法是簡單地迭代它們:
set.seed(42) returns <- matrix(rnorm(200),40,5) weights <- list(c(1,0,0,0,0), c(0,1,0,0,0), c(0,0,1,0,0), c(0,0,0,1,0), c(0,0,0,0,1)) conf <- 0.99 sapply(weights,function(w){ quantile( rowSums( sweep( returns, 2, w, "*")), 1-conf) })
這將導致
1% 1% 1% 1% 1% -2.572220 -2.359415 -1.582364 -1.840156 -1.686373
當然,您將需要使用各種權重,或者將它們儲存在矩陣而不是列表中並進行迭代;同樣的結果。
這有幫助嗎?