Das validierte GARCH‑Modell in Produktion nutzen

GARCH-Modelle in R

Kris Boudt

Professor of finance and econometrics

Einsatz in der Produktion

Verteilung der Tagesrenditen pro Jahr

GARCH-Modelle in R

Neue Funktionen

  • Verwende ugarchfilter() zur Analyse der aktuellen Dynamik von Mittelwert und Volatilität
  • Verwende ugarchforecast() auf einem ugarchspec‑Objekt (statt auf ugarchfit()), um Vorhersagen für zukünftigen Mittelwert und zukünftige Volatilität zu treffen
GARCH-Modelle in R

Beispiel zu MSFT‑Renditen

  • msftret: Tagesrenditen 1999–2017.
  • Angenommen, die Modellschätzung erfolgte mit den bis Ende 2010 verfügbaren Renditen.
  • Du nutzt dieses Modell Ende 2017, um die vergangene Volatilität zu analysieren und die zukünftige zu prognostizieren.
GARCH-Modelle in R

Schritt 1: Finale Modellspezifikation festlegen

Schätze das beste Modell mit den bis Ende 2010 verfügbaren msftret:

# AR(1)-GJR-GARCH mit schiefer Student-t-Verteilung spezifizieren
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),
 variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
# Modell schätzen
garchfit <- ugarchfit(data = msftret["/2010-12"], spec = garchspec)

Definiere progarchspec als die Spezifikation für den Produktionseinsatz und nutze setfixed(progarchspec) <- as.list(coef(garchfit)):

progarchspec <- garchspec
setfixed(progarchspec) <- as.list(coef(garchfit))
GARCH-Modelle in R

Schritt 2: Analyse von Mittelwert- und Volatilitätsdynamik

Verwende die Funktion ugarchfilter():

garchfilter <- ugarchfilter(data = msftret, spec = progarchspec)
plot(sigma(garchfilter))                                

Verteilung der Tagesrenditen pro Jahr

GARCH-Modelle in R

Schritt 3: Zukunftige Renditen prognostizieren

garchforecast <- ugarchforecast(data = msftret,
                                fitORspec = progarchspec, 
                                n.ahead = 10) # Vorhersagen für die nächsten zehn Tage
cbind(fitted(garchforecast), sigma(garchforecast))
       2017-12-29 2017-12-29
T+1  0.0004781733 0.01124870
T+2  0.0003610470 0.01132550
T+3  0.0003663683 0.01140171
T+4  0.0003661265 0.01147733
T+5  0.0003661375 0.01155238
T+6  0.0003661370 0.01162688
T+7  0.0003661371 0.01170083
T+8  0.0003661371 0.01177424
T+9  0.0003661371 0.01184712
T+10 0.0003661371 0.01191948
GARCH-Modelle in R

Einsatz in Simulationen

Anstatt das komplette Modell auf beobachtete Renditen anzuwenden, kannst du künstliche Log‑Renditen simulieren:

$$ r_{t} = \log(P_{t}) - \log(P_{t-1}) $$

Nützlich, um die Zufälligkeit zukünftiger Renditen und die Auswirkung auf Preise zu beurteilen, da der zukünftige Preis lautet:

$$ P_{t + h} = P_{t} \exp(r_{t + 1} + r_{t + 2} + \ldots + r_{t + h}) $$

GARCH-Modelle in R

Schritt 1: Simulationsmodell kalibrieren

Verwende die Log‑Renditen für die Schätzung

# Log-Renditen berechnen
msftlogret <- diff(log(MSFTprice))[-1]

Schätze das Modell und übertrage die Parameter auf das Simulationsmodell

garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                        variance.model = list(model = "gjrGARCH"),
                        distribution.model = "sstd")
# Modell schätzen
garchfit <- ugarchfit(data = msftlogret, spec = garchspec)

# Das geschätzte Modell als Simulationsmodell setzen
simgarchspec <- garchspec
setfixed(simgarchspec) <- as.list(coef(garchfit))
GARCH-Modelle in R

Schritt 2: Simulation mit `ugarchpath()` ausführen

Für die Simulation mit ugarchpath() wählst du:

  • spec : vollständig spezifiziertes GARCH‑Modell
  • m.sim : Anzahl der simulierten Rendite‑Zeitreihen
  • n.sim: Anzahl der Beobachtungen pro simulierte Zeitreihe (z. B. 252)
  • rseed : beliebige Zahl zur Festlegung des Seeds für die Generierung (für Reproduzierbarkeit)
simgarch <- ugarchpath(spec = simgarchspec, m.sim = 4,
                       n.sim = 10 * 252, rseed = 12345)
GARCH-Modelle in R

Schritt 3: Analyse der simulierten Renditen

Mit fitted() erhältst du die simulierten Renditen:

simret <- fitted(simgarch)
plot.zoo(simret) 

Simulierte Renditen

GARCH-Modelle in R

Analyse der simulierten Volatilität

plot.zoo(sigma(simgarch))

Simulierte Volatilität

GARCH-Modelle in R

Analyse der simulierten Kurse

Vier Simulationen von Aktienkursen über 10 Jahre, Startpreis = 1:

simprices <- exp(apply(simret, 2, "cumsum"))
matplot(simprices, type = "l", lwd = 3)

Simulierte Kurse

GARCH-Modelle in R

Zeit für Praxis mit setfixed(), ugarchfilter(), ugarchforecast() und ugarchpath()

GARCH-Modelle in R

Preparing Video For Download...