Das Paket rugarch

GARCH-Modelle in R

Kris Boudt

Professor of finance and econometrics

Das normale GARCH(1,1)-Modell mit konstanter Mitte

Das normale GARCH-Modell

$$ R_t = \mu + e_t $$ $$ e_t \sim N(0, \sigma^2_t) $$ $$ \sigma^2_t = \omega + \alpha e^2_{t-1} + \beta \sigma^2_{t-1} $$

  • Vier Parameter: $\mu, \omega, \alpha, \beta$.
  • Schätzung per Maximum Likelihood: finde die Parameterwerte, für die das GARCH-Modell die beobachtete Renditereihe am wahrscheinlichsten erzeugt hat.
GARCH-Modelle in R

Alexios Ghalanos

library(rugarch)
citation("rugarch")

Zum Zitieren des Pakets rugarch verwende bitte: Alexios Ghalanos (2018). rugarch: Univariate GARCH models. R package version 1.4-0.
GARCH-Modelle in R

Workflow

  • Drei Schritte:

    • ugarchspec(): Lege fest, welches GARCH-Modell du nutzt (Mittelwert $\mu_t$, Varianz $\sigma^2_t$, Verteilung von $e_t$).

      • ugarchfit(): Schätze das GARCH-Modell auf deiner Rendite-Zeitreihe $R_1,...,R_T$.

      • ugarchforecast(): Nutze das geschätzte GARCH-Modell, um Volatilität für $R_{T+1}$,... zu prognostizieren.

GARCH-Modelle in R

Workflow in R

ugarchspec() legt fest, welches GARCH-Modell du verwenden willst.

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                           variance.model = list(model = "sGARCH"),
                           distribution.model = "norm")

ugarchfit() schätzt das GARCH-Modell.

garchfit <- ugarchfit(data = sp500ret, spec = garchspec)

ugarchforecast() prognostiziert die Volatilität künftiger Renditen.

garchforecast <- ugarchforecast(fitORspec = garchfit, n.ahead = 5)
GARCH-Modelle in R

ugarchfit-Objekt

  • ugarchfit liefert ein Objekt mit allen Ergebnissen zur Schätzung des GARCH-Modells.
  • Methoden coef, uncvar, fitted und sigma:
# Koeffizienten
garchcoef <- coef(garchfit)
# Unbedingte Varianz
garchuncvar <- uncvariance(garchfit)
# Prognostizierter Mittelwert
garchmean <- fitted(garchfit) 
# Prognostizierte Volatilitäten
garchvol <- sigma(garchfit)

GARCH-Modelle in R

GARCH-Koeffizienten für tägliche S&P-500-Renditen

print(garchcoef)
          mu        omega       alpha1        beta1 
5.728020e-04 1.220515e-06 7.792031e-02 9.111455e-01 

$$ R_{t} = 5{,}7 \times 10^{-4} + e_{t} $$ $$ e_{t} \sim N(0, \hat{\sigma}^{2}_{t}) $$ $$ \hat{\sigma}^{2}_{t} = 1{,}2 \times 10^{-6} + 0{,}08 e^{2}_{t-1} + 0{,}91 \hat{\sigma}^{2}_{t-1} $$

sqrt(garchuncvar)
0.01056519
GARCH-Modelle in R

Geschätzte Volatilitäten

garchvol <- sigma(garchfit)
plot(garchvol)

GARCH-Modelle in R

Wie steht es um die zukünftige Volatilität?

tail(garchvol, 1)
2017-12-29 0.004862908

Wie sieht die Volatilität für die Tage nach dem Ende der Zeitreihe aus?

GARCH-Modelle in R

h-Tage-Vorhersagen der Volatilität

  • Wende sigma() auf das ugarchforecast-Objekt an, um Volatilitätsprognosen zu erhalten:
sigma(garchforecast)
      2017-12-29
T+1  0.005034754
T+2  0.005127582
T+3  0.005217770
T+4  0.005305465
T+5  0.005390797
GARCH-Modelle in R

h-Tage-Vorhersagen der Volatilität

Wende fitted() auf das ugarchforecast-Objekt an, um Mittelwertsprognosen zu erhalten:

fitted(garchforecast)
      2017-12-29
T+1  0.000572802
T+2  0.000572802
T+3  0.000572802
T+4  0.000572802
T+5  0.000572802
GARCH-Modelle in R

Anwendung auf taktische Asset-Allokation

Ein Portfolio, das einen Anteil $w$ in eine risikoreiche Anlage (mit Volatilität $\sigma_t$) investiert und $1-w$ zinsfrei hält, hat die Volatilität

$$ \sigma_p = w \sigma_t$$

Wie setzt man $w$? Ein Ansatz ist Volatility Targeting: Wähle $w$ so, dass die prognostizierte annualisierte Portfoliovolatilität einem Ziel, z. B. 5 %, entspricht. Dann gilt:

$$ w^* = 0.05 /\sigma_t $$

Da sich GARCH-Volatilitäten ändern, ändert sich auch das optimale Gewicht.

GARCH-Modelle in R

Lass uns mit rugarch spielen!

GARCH-Modelle in R

Preparing Video For Download...