Czy prognozy GARCH dobrze dopasowują się do obserwowanych zwrotów?

Modele GARCH w R

Kris Boudt

Professor of finance and econometrics

Kryterium oceny

  • Zależy od tego, co chcemy ocenić:
    • przewidywaną średnią
    • przewidywaną wariancję
    • przewidywany rozkład zwrotów
Modele GARCH w R

1) Dobroć dopasowania dla prognozy średniej

Na podstawie oszacowanego modelu GARCH mamy:

Implementacja

e <- residuals(tgarchfit) 
mean(e ^ 2)
Modele GARCH w R

2) Dobroć dopasowania dla prognozy wariancji

Model GARCH prowadzi do:

Implementacja

e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2 
mean(d ^ 2)
Modele GARCH w R

Przykład dla zwrotów EUR/USD

tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
   variance.model = list(model = "sGARCH", variance.targeting = TRUE),
   distribution.model = "std")
tgarchfit <- ugarchfit(data = EURUSDret, spec = tgarchspec)
# Compute mean squared prediction error for the mean
e <- residuals(tgarchfit) ^ 2
mean(e ^ 2) # 3.836205e-05
# Compute mean squared prediction error for the variance
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2) # 5.662366e-09
Modele GARCH w R

3) Dobroć dopasowania dla rozkładu

  • Model GARCH dostarcza przewidywany rozkład gęstości dla wszystkich zwrotów w próbie
    • Im wyższa gęstość, tym bardziej prawdopodobny jest zwrot w ramach oszacowanego modelu GARCH
    • Wiarygodność próby jest oparta na iloczynie wszystkich tych gęstości. Mierzy, jak prawdopodobne jest, że obserwowane zwroty pochodzą z oszacowanego modelu GARCH
    • Im wyższa wiarygodność, tym lepiej model dopasowuje się do danych
Modele GARCH w R

Przykład dla zwrotów EUR/USD

likelihood(tgarchfit) # returns 18528.58

Analiza przez porównanie z innymi modelami:

# Complex model with many parameters
flexgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                            variance.model = list(model = "gjrGARCH"),
                            distribution.model = "sstd")
flexgarchfit <- ugarchfit(data = EURUSDret, spec = flexgarchspec)
likelihood(flexgarchfit) # returns 18530.49
Modele GARCH w R

Ryzyko przeuczenia

Uwaga: Stosujemy podejście oceny in-sample, gdzie próba estymacji i próba ewaluacji są tożsame.

Niebezpieczeństwo przeuczenia:

Przeuczenie polega na wyborze nadmiernie złożonych modeli, które dobrze dopasowują się do zwrotów w próbie estymacji, ale nie do przyszłych zwrotów spoza próby.

Modele GARCH w R

Rozwiązanie: Równowaga między dopasowaniem a karą za złożoność

  • Model GARCH jest oszczędny, gdy ma:
    • wysoką wartość funkcji wiarygodności
    • i relatywnie małą liczbę parametrów
Modele GARCH w R

Kryteria informacyjne

  • Oszczędność mierzy się kryteriami informacyjnymi.

kryterium informacyjne = - wiarygodność + kara(liczba parametrów)

  • Im niższa wartość, tym lepiej.

Zasada kciuka:
Wybierz model z najniższym kryterium informacyjnym.

Modele GARCH w R

Wyniki kryteriów informacyjnych

Metoda infocriteria() wyświetla kryteria informacyjne dla różnych kar

infocriteria(tgarchfit)

out Akaike -7.468081 Bayes -7.462833 Shibata -7.468083 Hannan-Quinn -7.466241 `

Interpretacja wymaga porównania z kryteriami informacyjnymi innych modeli.

Modele GARCH w R

Ilustracja na zwrotach EUR/USD

tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
   variance.model = list(model = "sGARCH", variance.targeting = TRUE),
   distribution.model = "std")
tgarchfit <- ugarchfit(data = EURUSDret, spec = tgarchspec)
length(coef(tgarchfit)) # only 5 parameters
likelihood(tgarchfit)   # equals 18528.58
flexgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
   variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
flexgarchfit <- ugarchfit(data = EURUSDret, spec = flexgarchspec)
length(coef(flexgarchfit)) # we now have 8 parameters
likelihood(flexgarchfit) #  18530.49: likelihood increased
Modele GARCH w R

Który model jest najbardziej oszczędny dla zwrotów EUR/USD?

Wyższa wiarygodność jest lepsza. Niższe kryterium informacyjne jest lepsze.

infocriteria(tgarchfit) # Simple model
Akaike       -7.468435
Bayes        -7.464499
infocriteria(flexgarchfit) # Complex model
Akaike       -7.467239
Bayes        -7.456742

Prosty model ma najniższe kryterium informacyjne i powinien być tutaj preferowany.

Modele GARCH w R

Wynik jest specyficzny dla przypadku: zwroty MSFT

tgarchfit <- ugarchfit(data = msftret, spec = tgarchspec)
flexgarchfit <- ugarchfit(data = msftret, spec = flexgarchspec)
infocriteria(tgarchfit)
Akaike       -5.481895
Bayes        -5.477833
infocriteria(flexgarchfit) 
Akaike       -5.489087
Bayes        -5.478255

Złożony model ma najniższe kryterium informacyjne i powinien być tutaj preferowany.

Modele GARCH w R

KISS: Keep it Sophisticatedly Simple

Modele GARCH w R

Preparing Video For Download...