GARCH-Modelle in R
Kris Boudt
Professor of finance and econometrics


quantile() auf ein ugarchroll-Objekt anwenden.ugarchspec(): Lege fest, welches GARCH-Modell du nutzt
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "sstd")
ugarchroll(): Schätze das GARCH-Modell auf rollierenden Stichproben
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
quantile(): Berechne das vorhergesagte Quantil
garchVaR <- quantile(garchroll, probs = 0.05)
Du kannst auch andere Verlustwahrscheinlichkeiten wählen: 1% und 2,5% sind ebenfalls üblich
actual <- xts(as.data.frame(garchroll)$Realized, time(garchVaR))
VaRplot(alpha = 0.05, actual = actual, VaR = garchVaR)

Eine VaR-Überschreitung liegt vor, wenn die tatsächliche Rendite kleiner ist als der vorhergesagte Value-at-Risk: $ R_t \ < {VaR}_t$.
Die Häufigkeit der VaR-Überschreitungen heißt VaR-Coverage.
# Berechnung der Coverage für S&P-500-Renditen und 5%-Niveau
mean(actual < garchVaR)
0.05159143
distribution.model = "std" statt distribution.model = "sstd":
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "std")
Rollierende Schätzung und 5%-VaR-Prognose:
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # ergibt 0.05783233
variance.model = list(model = "sGARCH")
statt
variance.model = list(model = "gjrGARCH"):
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "std")
Rollierende Schätzung und 5%-VaR-Prognose:
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # ergibt 0.06074475
refit.every = 1000
statt
refit.every = 100:
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "std")
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 1000)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # ergibt 0.06199293
GARCH-Modelle in R