Valideer je aannames over gemiddelde en variantie

GARCH-modellen in R

Kris Boudt

Professor of finance and econometrics

Check 1: Gemiddelde en sd van gestandaardiseerde returns

Formule gestandaardiseerde returns

$$ Z_{t} = \frac{R_{t} - \hat{\mu_{t}}}{ \hat{\sigma_{t}}} $$

  • Eerste validatiecheck:
    • Steekproefgemiddelde van gestandaardiseerde returns $\approx$ 0
    • Steekproefstandaarddeviatie van gestandaardiseerde returns $\approx$ 1
GARCH-modellen in R

Check 2: Tijdreeksplot van gestandaardiseerde returns

  • Tweede validatiecheck:
    • tijdreeksplot van gestandaardiseerde returns
    • gestandaardiseerde returns moeten constante variabiliteit hebben
GARCH-modellen in R

GARCH-modellen in R

GARCH-modellen in R

Check 3: Geen voorspelbaarheid in absolute gestandaardiseerde returns

  • Derde validatiecheck:

    • controleer dat er geen correlatie is tussen de vorige absolute gestandaardiseerde return en de huidige.
    • dus: $ Corr(|Z_{t-k}|, |Z_{t}|) \approx 0 $ voor $k>0$
  • Waarom?

    • De grootte van de absolute gestandaardiseerde return moet constant zijn $\rightarrow$ geen correlaties in de absolute gestandaardiseerde returns.
GARCH-modellen in R

Autocorrelaties

  • Zulke correlaties binnen tijdreeksen heten autocorrelaties van orde k
    • $k=1$: $Corr(|Z_{t-1}|, |Z_{t}|)$: Correlatie tussen de huidige absolute gestandaardiseerde return en de vorige.
    • $k=2$: $Corr(|Z_{t-2}|, |Z_{t}|)$: Correlatie tussen de huidige absolute gestandaardiseerde return en die van twee perioden geleden.
    • ...
  • Al deze moeten 0 zijn. Behalve:
    • $k=0$: $Corr(|Z_{t}|, |Z_{t}|)$: Correlatie van de absolute gestandaardiseerde return met zichzelf: gelijk aan 1.
GARCH-modellen in R

acf()

  • In R bereken je deze autocorrelaties met de autocorrelatiefunctie acf()
    • Input: tijdreeks, maximale orde
    • Output: het correlogram: plot met waarden van de autocorrelatie voor ordes $k = 0, 1, ...$.
GARCH-modellen in R

Toepassing op MSFT

garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                        variance.model = list(model = "gjrGARCH"),
                        distribution.model = "sstd")
garchfit <- ugarchfit(data = msftret, spec = garchspec)
stdmsftret <- residuals(garchfit, standardize = TRUE)
acf(abs(msftret), 22)
acf(abs(stdmsftret), 22)
GARCH-modellen in R

GARCH-modellen in R

Check 4: Ljung-Box-test

  • Vierde validatiecheck:
    • Ljung-Box-test dat de eerste k autocorrelaties in de absolute gestandaardiseerde returns $|Z_t$| nul zijn: $$ H_0: Corr(|Z_t|,|Z_{t-1}|) = Corr(|Z_t|,|Z_{t-2}|) = ... = Corr(|Z_t|,|Z_{t-k}|) = 0 $$
    • Vergelijkbaar met een $t$-toets voor significantie van parameters, maar hier willen we 0 voor een goed model.

Vuistregel: p-waarde < 5% duidt op een ongeldig model.

GARCH-modellen in R

Ljung-Box-test in R

  • In R: functie Box.test() met 3 argumenten:
    • reeks
    • maximale orde waarvoor autocorrelaties nul zijn
    • type = "Ljung-Box"

Voorbeeld:

Box.test(abs(stdmsftret), 22, type = "Ljung-Box")
  • Output: p-waarde
    • Vuistregel: p-waarde < 5% duidt op een ongeldig model.
GARCH-modellen in R

Box.test met absolute gestandaardiseerde MSFT-returns

Test op absolute gestandaardiseerde returns:

Box.test(abs(stdmsftret), 22, type = "Ljung-Box")
    Box-Ljung test
data:  abs(stdmsftret)
X-squared = 25.246, df = 22, p-value = 0.2855

Let op: p-waarde is 28,55% > 5%. We kunnen niet verwerpen dat: $$ H_0: Corr(|Z_t|,|Z_{t-1}|) = Corr(|Z_t|,|Z_{t-2}|) = ... = Corr(|Z_t|,|Z_{t-22}|) = 0 $$

GARCH-modellen in R

Laten we de absolute gestandaardiseerde returns diagnosticeren.

GARCH-modellen in R

Preparing Video For Download...