Zonder moeite geen resultaat

GARCH-modellen in R

Kris Boudt

Professor of finance and econometrics

GARCH-in-mean-model

  • Kwantificeer de risk-reward trade-off.
  • Risico: $\sigma^2_t$. Beloning: $\mu_t$.
  • GARCH-in-mean-model:

$$ \mu_{t} = \mu + \lambda \sigma^2_{t} $$

$\lambda > 0$ is de risk/reward-parameter: toename in verwachte return per eenheid variantierisico.

GARCH-modellen in R

Hoe?

Wijzig het argument mean.model in ugarchspec() van list(armaOrder = c(0, 0)) naar list(armaOrder = c(0, 0), archm = TRUE, archpow = 2):

garchspec <- ugarchspec(
              mean.model = list(armaOrder = c(0, 0)),
              variance.model = list(model = "gjrGARCH"),
              distribution.model = "sstd")
garchspec <- ugarchspec(
               mean.model = list(armaOrder = c(0, 0), archm = TRUE, archpow = 2),
               variance.model = list(model = "gjrGARCH"),
               distribution.model = "sstd")
GARCH-modellen in R

Toepassing op dagelijkse S&P 500-rendementen

Schatting

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

Inspectie van de geschatte gemiddeldecöefficiënten

round(coef(garchfit)[1:2], 4)
    mu  archm 
0.0002 1.9950

Voorspelde gemiddelde rendementen

$$ \hat{\mu}_{t} = 0.0002 + 1.9950 \hat{\sigma}^2_{t} $$

GARCH-modellen in R

Tijdreeks van voorspelde rendementen

  • Plot in R
    plot(fitted(garchfit))
    
GARCH-modellen in R

Het rendement van vandaag voorspelt dat van morgen

  • GARCH-in-mean gebruikt de financiële theorie van de risk-reward trade-off om een conditioneel gemiddelde te modelleren.
  • Laten we nu statistiek gebruiken om een model te bouwen dat de correlatie tussen het rendement van vandaag en morgen benut.
  • Het populairste model is AR(1):
    • AR(1) staat voor autoregressief model van orde 1.
    • Het voorspelt het volgende rendement met de afwijking t.o.v. de langetermijn-mean $\mu$:

$$ \mu_{t} = \mu + \rho(R_{t-1} - \mu) $$

GARCH-modellen in R

Een positieve autoregressiecoëfficiënt

$$ \mu_{t} = \mu + \rho(R_{t-1} - \mu) $$

  • $\rho > 0$:
    • Een hoger (resp. lager) dan gemiddeld rendement wordt gevolgd door een hoger (resp. lager) dan gemiddeld rendement.
    • Mogelijke verklaring: markten onderreageren op nieuws, dus er is momentum in rendementen.
  • $|\rho|<1$: Mean reversion: de afwijkingen van $R_t$ t.o.v. $\mu$ zijn tijdelijk.
GARCH-modellen in R

Een negatieve autoregressiecoëfficiënt

$$ \mu_{t} = \mu + \rho(R_{t-1} - \mu) $$

  • $\rho < 0$:
    • Een hoger (resp. lager) dan gemiddeld rendement wordt gevolgd door een lager (resp. hoger) dan gemiddeld rendement.
    • Mogelijke verklaring: markten overreageren op nieuws, dus er is reversie in rendementen.
GARCH-modellen in R

Toepassing op dagelijkse S&P 500-rendementen

Specificatie en schatting van AR(1)-GJR GARCH met sst-verdeling

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

Schattingen van het AR(1)-model

round(coef(garchfit)[1:2], 4)
     mu     ar1     
 0.0003 -0.0292
GARCH-modellen in R

MA(1) en ARMA(1,1)

Het Moving Average-model van orde 1 gebruikt de afwijking van het rendement t.o.v. zijn conditionele gemiddelde:

$$ \mu_{t} = \mu + \theta(R_{t-1} - \mu_{t-1}) $$

ARMA(1,1) combineert AR(1) en MA(1):

$$ \mu_{t} = \mu + \rho(R_{t-1} - \mu) + \theta(R_{t-1} - \mu_{t-1}) $$

GARCH-modellen in R

Hoe?

MA(1)

garchspec <- ugarchspec( 
          mean.model = list(armaOrder = c(0, 1)),
          variance.model = list(model = "gjrGARCH"),
          distribution.model = "sstd")

ARMA(1, 1)

garchspec <- ugarchspec( 
          mean.model = list(armaOrder = c(1, 1)),
          variance.model = list(model = "gjrGARCH"),
          distribution.model = "sstd")
GARCH-modellen in R

Jij past het mean.model-argument aan

GARCH-modellen in R

Preparing Video For Download...