Évitez la complexité inutile

Modèles GARCH en R

Kris Boudt

Professor of finance and econometrics

Évitez la complexité superflue

  • Si vous savez
    • que la dynamique de la moyenne est négligeable
    • qu'il n'y a pas d'effet d'asymétrie (leverage) dans la variance
    • que la distribution est symétrique à queues épaisses

Alors une moyenne constante, un GARCH(1, 1) standard avec une loi t de Student convient :

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
Modèles GARCH en R

Restreindre l'estimation des paramètres

  • Si vous savez que des paramètres
    • sont égaux à une certaine valeur
    • ou se trouvent dans un intervalle
  • Alors imposez-le dans la spécification avec
    • setfixed()
    • setbounds()
Modèles GARCH en R

Application aux taux de change

Spécification et estimation

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

Résultats d'estimation

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-3.562136e-05  8.005123e-08  3.097322e-02  9.674496e-01  8.821902e+00
Modèles GARCH en R

Exemple de setfixed()

  • Si vous savez que alpha1 = 0.05 et shape = 6 : imposez ces valeurs à l'estimation.
  • Comment ? Utilisez la méthode setfixed() sur un objet ugarchspec
setfixed(garchspec) <- list(alpha1 = 0.05, shape = 6)

Résultat

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

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-4.142922e-05  2.061772e-07  5.000000e-02  9.489622e-01  6.000000e+00
Modèles GARCH en R

Bornes sur les paramètres

  • Les paramètres GARCH peuvent être bornés à un intervalle.
  • Parfois, l'intervalle plausible est large :
    • Pour assurer une variance positive, on exige p. ex. que tous les paramètres de variance ($\omega$, $\alpha$, $\beta$, $\gamma$) soient positifs.
  • Parfois, l'intervalle plausible est plus étroit :
    • Valeurs probables de $\alpha$ entre 0,05 et 0,2
    • Valeurs probables de $\beta$ entre 0,7 et 0,95
  • De telles contraintes de bornes peuvent être imposées avec la méthode setbounds().
Modèles GARCH en R

Exemple de setbounds()

setbounds(garchspec) <- list(alpha1 = c(0.05, 0.2), beta1 = c(0.8, 0.95))
Modèles GARCH en R

Servez-vous de votre intuition pour éviter la complexité superflue.

Exploitez l'information dont vous disposez :

  • pour bâtir des modèles simples (et judicieux)
  • pour fixer des valeurs ou définir des bornes
  • pour rendre la dynamique GARCH réaliste :

    • retour à la moyenne de la volatilité autour de l'écart-type de l'échantillon
      sd(EURUSDret) # retourne une valeur de 0.006194049
      
Modèles GARCH en R

Amas de volatilité et retour à la moyenne de la volatilité

Modèles GARCH en R

Ciblage de la variance

  • Mathématiquement, cela signifie que la variance inconditionnelle implicite des modèles GARCH égale la variance d'échantillon $\hat \sigma^2$.
  • Comment ? En définissant l'argument variance.targeting = TRUE dans variance.model de ugarchspec() :
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                        variance.model = list(model = "sGARCH",
                        variance.targeting = TRUE),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)
all.equal(uncvariance(garchfit), sd(EURUSDret) ^ 2, tol = 1e-4)
TRUE
Modèles GARCH en R

Imposons des contraintes au modèle GARCH

Modèles GARCH en R

Preparing Video For Download...