Zastosowanie zwalidowanego modelu GARCH w produkcji

Modele GARCH w R

Kris Boudt

Professor of finance and econometrics

Zastosowanie produkcyjne

Rozkład dziennych stóp zwrotu według roku

Modele GARCH w R

Nowe funkcje

  • Użyj ugarchfilter() do analizy bieżącej dynamiki średniej i zmienności
  • Użyj ugarchforecast() na obiekcie ugarchspec (zamiast ugarchfit()) do prognozowania przyszłej średniej i zmienności
Modele GARCH w R

Przykład na danych MSFT

  • msftret: dzienne stopy zwrotu za lata 1999–2017.
  • Model dopasowano na podstawie stóp zwrotu dostępnych na koniec 2010 roku.
  • Model ten jest używany na koniec 2017 roku do analizy przeszłej dynamiki zmienności i prognozowania przyszłej zmienności.
Modele GARCH w R

Krok 1: Definiowanie finalnej specyfikacji modelu

Dopasowanie najlepszego modelu na danych msftret dostępnych na koniec 2010 roku:

# Specify AR(1)-GJR GARCH model with skewed student t distribution
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),
 variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
# Estimate the model
garchfit <- ugarchfit(data = msftret["/2010-12"], spec = garchspec)

Definicja progarchspec jako specyfikacji produkcyjnej z instrukcją setfixed(progarchspec) <- as.list(coef(garchfit)):

progarchspec <- garchspec
setfixed(progarchspec) <- as.list(coef(garchfit))
Modele GARCH w R

Krok 2: Analiza dynamiki średniej i zmienności

Użycie funkcji ugarchfilter():

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

Rozkład dziennych stóp zwrotu według roku

Modele GARCH w R

Krok 3: Prognozowanie przyszłych stóp zwrotu

garchforecast <- ugarchforecast(data = msftret,
                                fitORspec = progarchspec, 
                                n.ahead = 10) # Make predictions for next ten days
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
Modele GARCH w R

Zastosowanie w symulacji

Zamiast stosować pełny model do analizy zaobserwowanych stóp zwrotu, można go użyć do symulacji sztucznych logarytmicznych stóp zwrotu:

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

Przydatne do oceny losowości przyszłych stóp zwrotu i wpływu na ceny, ponieważ przyszła cena wynosi:

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

Modele GARCH w R

Krok 1: Kalibracja modelu symulacyjnego

Użycie logarytmicznych stóp zwrotu w estymacji

# Compute log returns
msftlogret <- diff(log(MSFTprice))[-1]

Estymacja modelu i przypisanie parametrów do modelu symulacyjnego

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

# Set that estimated model as the model to be used in the simulation
simgarchspec <- garchspec
setfixed(simgarchspec) <- as.list(coef(garchfit))
Modele GARCH w R

Krok 2: Uruchomienie symulacji z `ugarchpath()`

Symulacja za pomocą funkcji ugarchpath() wymaga określenia:

  • spec: w pełni zdefiniowany model GARCH
  • m.sim: liczba szeregów czasowych symulowanych stóp zwrotu
  • n.sim: liczba obserwacji w symulowanym szeregu (np. 252)
  • rseed: dowolna liczba ustalająca ziarno losowości (potrzebna do odtwarzalności)
simgarch <- ugarchpath(spec = simgarchspec, m.sim = 4,
                       n.sim = 10 * 252, rseed = 12345)
Modele GARCH w R

Krok 3: Analiza symulowanych stóp zwrotu

Metoda fitted() zwraca symulowane stopy zwrotu:

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

Symulowane stopy zwrotu

Modele GARCH w R

Analiza symulowanej zmienności

plot.zoo(sigma(simgarch))

Symulowana zmienność

Modele GARCH w R

Analiza symulowanych cen

Wykres 4 symulacji cen akcji przez 10 lat, przy cenie początkowej równej 1:

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

Symulowane ceny

Modele GARCH w R

Czas na ćwiczenia z `setfixed()`, `ugarchfilter()`, `ugarchforecast()` i `ugarchpath()`

Modele GARCH w R

Preparing Video For Download...