GARCH-Modelle in R
Kris Boudt
Professor of finance and econometrics
Ändere das Argument distribution.model von ugarchspec() von "norm" auf "sstd":
garchspec <- ugarchspec( mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "norm")
$$ \downarrow$$
garchspec <- ugarchspec( mean.model = list(armaOrder = c(0, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "sstd")
Unter den Modellannahmen
$$ R_{t} = \mu_{t} + e_{t} $$ $$ e_{t} \sim N(0, \sigma^{2}_{t}) $$
folgt, dass
$$ \frac{R_{t} - \mu_{t}}{\sigma_{t}} \sim N(0, 1) $$
$$ Z_{t} = \frac{R_{t} - \hat{\mu_{t}}}{ \hat{\sigma_{t}}} $$
Berechnung in R
# Obtain standardized returns
stdret <- residuals(garchfit, standardize = TRUE)
library(PerformanceAnalytics)
chart.Histogram(sp500ret, methods = c("add.normal", "add.density"),
colorset = c("gray", "red", "blue"))


Eine realistische Verteilung muss daher Folgendes abbilden:
In rugarch geht das mit der schiefen Student‑t‑Verteilung:
garchspec <- ugarchspec(distribution.model = "sstd")
Gegenüber der Normalverteilung hat die schiefe Student‑t‑Verteilung zwei Extra-Parameter:
shape): je kleiner $\nu$, desto fetter die Schwänze.skew): bei $\xi=1$: Symmetrie. Bei $\xi<1$: negative Schiefe. Für $\xi>1$: positive Schiefe.Spezialfälle:




Setze distribution.model auf "sstd"
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
variance.model = list(model = "sGARCH"),
distribution.model = "sstd")
Schätze das Modell
garchfit <- ugarchfit(data = sp500ret, spec = garchspec)
coef(garchfit)
mu omega alpha1 beta1 skew shape
5.669200e-04 6.281258e-07 7.462984e-02 9.223701e-01 9.436331e-01 6.318621e+00
GARCH-Modelle in R