R
用 GARCH 估計 VaR 的問題
我目前正在嘗試弄清楚如何使用 R 中的 rugarch 包來估計風險價值。我得出了一個結果,但這似乎有點過分。這是我的程式碼:
install.packages("PerformanceAnalytics") install.packages("fGarch") install.packages("rugarch") library(fGarch) library(PerformanceAnalytics) library(rugarch) #Daten runterladen db<- get.hist.quote(instrument = "DB", start = "2005-11-21", quote = "AdjClose") sys<- get.hist.quote(instrument = "^STOXX50E", start = "2005-11-21", quote = "AdjClose") #Returns retdb<-diff(log(db)) retsys<-diff(log(sys)) #GARCH-Modell spezifizieren spec2 = ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1), submodel = NULL, external.regressors = NULL, variance.targeting = FALSE), mean.model=list(armaOrder=c(1,0)), distribution.model="sstd" ) #GARCH-Modell fitten fit<-ugarchfit(spec=spec2, data=retdb) fit2<-ugarchfit(spec=spec2, data=retsys) #var berechnen var1<-quantile(fit,0.99) var1sys<-quantile(fit2,0.99) #plot var plot(var1) lines(var1sys,col="red")
這是我得到的圖像(紅色–> Eurostoxx VaR,黑色–> DB VaR):
而且,老實說,無論這是否合理,我都缺乏經驗……
在此先感謝,理查德
1)您正在計算“實際”VaR,因為您沒有預測它以查看您的VaR模型是否能夠估計它,而您只是在計算“已經發生”的VaR。要獲得波動率預測(樣本內或樣本外),您可以使用“ugarchforecast”函式。
2)我認為您在分佈的錯誤一側估計了 VaR:您採用 0.99 分位數而不是 0.01 分位數。
- 一個更有意義的情節是你的回報系列連同各自的 VaR:在那裡,你可以用眼睛看到它的表現。
4)計算您的 VaR 的失敗次數(返回過程超過您 VaR 的次數)並將其除以觀察次數,以獲得失敗率:它應該接近 0.01(更一般地說,接近所需的覆蓋率水平,比如你的 0.01;其他常見的水平有 0.005、0.05 或 0.1)
5)還有很多其他的測試可以檢查你的模型是否在 VaR 估計中是好的:動態分位數測試、條件和無條件覆蓋測試;其他措施是各種損失函式(例如,公司損失函式),用於比較各種模型的性能。在本工作論文中,您可以找到計算 VaR 的各種技術(也包括 GARCH)與眾多測試和比較方法之間的比較。