Dans cette étude, nous utiliserons différents modèles GARCH paramétriques pour modéliser la volatilité des rendements du bitcoin. Les données utilisées sont le cours de clôture du Bitcoin car il réflète toutes les activités du Bitcoin pour chaque jour de bourse. Le cours de clôture journalier historique du bitcoin a été extrait du 07/11/2018 au 24/03/23 http://finance.yahoo.com.
Notre jeu de données contient 6 variables:
Open (Prix d’ouverture):Il s’agit du prix auquel le
Bitcoin a commencé la journée de négociation.
Prix de clôture (Close) : Il représente le prix du
Bitcoin à la fin de la journée de négociation.
Prix le plus élevé (High) : Ce chiffre montre le
prix le plus élevé atteint par le Bitcoin au cours de la journée.
Prix le plus bas (Low) : C’est le prix le plus bas
atteint par le Bitcoin au cours de la journée.
Volume de négociation (Volume) : Cette valeur
indique la quantité d’échanges de Bitcoin effectués au cours de la
journée. Plus le volume est élevé, plus il y a de liquidité sur le
marché.
Etant donné que nous voulons prédire la volatilité des rendements, nous allons créer dans notre dataset une nouvelle colonne contenant les rendements de notre série.
library(dplyr)
library(tseries)
library(e1071)
library(forecast)
library(rugarch)
#Chargement des données
bitcoin_data <- read.csv("C:\\Users\\Hp\\OneDrive\\Documents\\BTC-USD.csv")
# Étape 2 : Extraction des 1600 premières observations de la colonne "Close"
close_vector <- head(bitcoin_data$Close, 1600)
# Étape 3 : Création de la série temporelle
start_date <- as.Date("2018-11-07") # Date de début
frequency <- 365 # Fréquence quotidienne
Prix_de_clôture <- ts(close_vector, start = 2018, frequency = 365)
# Calcul du rendement journalier
bitcoin_data <- bitcoin_data %>%
mutate(rendement = Close / lag(Close))
rendement_test = head(bitcoin_data$rendement, 1600)
# Afficher les premières lignes pour vérification
head(bitcoin_data)
## Date Open High Low Close Adj.Close Volume rendement
## 1 2018-11-07 6468.50 6552.16 6468.31 6530.14 6530.14 4941260000 NA
## 2 2018-11-08 6522.27 6536.92 6438.53 6453.72 6453.72 4665260000 0.9882974
## 3 2018-11-09 6442.60 6456.46 6373.37 6385.62 6385.62 4346820000 0.9894479
## 4 2018-11-10 6386.13 6437.28 6385.31 6409.22 6409.22 3705320000 1.0036958
## 5 2018-11-11 6413.63 6423.25 6350.17 6411.27 6411.27 3939060000 1.0003198
## 6 2018-11-12 6411.76 6434.21 6360.47 6371.27 6371.27 4295770000 0.9937610
rendement_test= ts(rendement_test, start = 2018, frequency = 365)
En supposant que \(P_t\) et \(P_{t-1}\) représentent respectivement le prix du jour en cours et le prix du jour précedent de Bitcoin, nous avons obtenu la série de rendement \((R_t)\) comme suit:
summary(rendement_test)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.6283 0.9854 1.0009 1.0016 1.0177 1.1875 1
rendement_test= na.omit(rendement_test)
skewness(rendement_test, na.rm = TRUE)
## [1] -0.3918655
kurtosis(rendement_test, na.rm = TRUE)
## [1] 8.627542
sd(rendement_test, na.rm = TRUE)
## [1] 0.03749489
result_test <- jarque.bera.test(rendement_test)
result_test
##
## Jarque Bera Test
##
## data: rendement_test
## X-squared = 5016.9, df = 2, p-value < 2.2e-16
Le tableau suivant regroupe les différentes statistiques obtenues
| Moyenne | Min | Max | Sd | Skew | Kurt | JB |
|---|---|---|---|---|---|---|
| 1.0009 | 0.6283 | 1.1875 | 0.03749 | -0.39186 | 8.6275 | 5016.9 |
Nous avons également effectué le test de normalité Jarque-Bera dont la statistique est calculée comme suit
\[JB = T. \left( \dfrac{skew^2}{6}+ \dfrac{(kurt -3)^2}{24}\right)\] où T est la taille de l’échantillon sont respectivement l’asymétrie et l’aplatissement de l’échantillon. Sous l’hypothèse nulle les données suivent la loi normale, JB est distribuée asymptotiquement en chi carré avec 2 degrés de liberté.
Nous avons obtenu pour le test de Jarque-Bera une p-value \(p<2.2e-16\) . Nous rejettons donc l’hypothèse nulle de normalité des données (rendements).
La valeur négative (-0.39186) de l’asymétrie indique que la série des rendements du bitcoin est négativement asymétrique, ce qui voudra dire que la distribution des séries de rendements Bitcoin est asymétrique vers la gauche.
L’aplatissement est égale à 8.6275 , une valeur supérieure à 3 nous indiquant que la distribution des rendements Bitcoin est leptokurtique.
hist(rendement_test, main = "Histogramme des rendements", xlab = "rendement")
qqnorm(rendement_test)
qqline(rendement_test)
L’application du modèle GARCH exige la présence de variance conditionnelle. Nous allons donc effectuer différents tests pour prouver l’applicabilité du modèle GARCH sur nos rendements. Ces différents tests regroupent la présence d’effets de stationnarité et d’ hétéroscédasticité conditionnel auto-regressif (ARCH).
Test de Ljung box
ljung_box_test <- Box.test(rendement_test, type = "Ljung-Box")
ljung_box_test
##
## Box-Ljung test
##
## data: rendement_test
## X-squared = 3.845, df = 1, p-value = 0.0499
Ce test est utilisé pour tester la présence d’effets ARCH dans les données . L’hypothèse nulle d’absence d’autocorrélation sera rejetée au niveau de signification 5%. Ce qui voudra dire qu’il existe une dépendance dans la série de rendements du Bitcoin. Les résultats de ce test nous permettent déjà de conclure que l’effet ARCH de la volatilité est très présent dans la série de rendement.
Test Augmented Dickey Fuller(ADF)
adf.test(rendement_test)
## Warning in adf.test(rendement_test): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: rendement_test
## Dickey-Fuller = -11.212, Lag order = 11, p-value = 0.01
## alternative hypothesis: stationary
Il est utilisé pour tester la stationnarité . La p-value obtenue à l’issue de ce test est \(p=0.01 < 0.05\) . On rejette donc l’hypothèse nulle de non stationnarité. Par conséquent il n’est pas nécessaire de différentier les séries de rendement.
Avec la fonction checkresiduals de la bibliothèque forecast nous allons vérifier graphiquement les résultats de nos tests précédents
checkresiduals(rendement_test)
##
## Ljung-Box test
##
## data: Residuals
## Q* = 307.1, df = 320, p-value = 0.6881
##
## Model df: 0. Total lags used: 320
Il ressort des différents graphiques que les résidus issus des rendements du Bitcoin ont une distribution non normale, sont stationnaires et présentent des autocorrélation.
Au vu de ces résultats on peut donc utiliser les modèles GARCH pour modéliser les données des séries des rendements du bitcoin.
Les statistiques descriptives des données indiquent qu’un modèle approprié de volatilité des rendements Bitcoin devrait tenir compte de sa nature variable dans le temps et de l’écart par rapport à la normalité dans la distribution des rendements Bitcoin. Toutes les estimations et les calculs sont effectués dans R Statistical Environment (R, 2008) en utilisant le package R “rugarch” développé par et Ghalanos (2013) le package R “KernSmooth” développé par Wand et Ripley (2007). Les modèles paramétriques GARCH sont estimés avec la méthode du quasi-maximum de vraisemblance de Bollerslev et Wooldridge (1992) qui donne des erreurs-types robustes.
Modèle GARCH
Le modèle GARCH (Generalized Autoregressive Conditional Heteroskedasticity) est une méthode couramment utilisée pour modéliser la volatilité des séries chronologiques financières. Il a été introduit par Tim Bollerslev en 1986. L’idée centrale derrière le modèle GARCH est de capturer l’hétéroscédasticité conditionnelle, c’est-à-dire la variation conditionnelle de la volatilité dans le temps.
La formule générale du modèle GARCH est la suivante :
\[ \sigma_t^2 = \omega + \alpha_1 \varepsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2 \]
où :
- \( \sigma_t^2 \) est la variance conditionnelle de la période \( t \).
- \( \omega \) est la constante.
- \( \alpha_1 \) est le coefficient associé à la volatilité au carré à la période précédente (\( \varepsilon_{t-1}^2 \)).
- \( \beta_1 \) est le coefficient associé à la variance conditionnelle à la période précédente (\( \sigma_{t-1}^2 \)).
Dans cette formule, \( \varepsilon_{t-1}^2 \) représente l’erreur au carré à la période précédente, qui est la différence entre la valeur observée à la période précédente et la valeur attendue à la période précédente. Ainsi, le modèle GARCH prend en compte les erreurs passées pour estimer la volatilité future.
Le terme \( \omega \) est souvent appelé terme constant ou drift, et il représente la moyenne de la variance conditionnelle. Les termes \( \alpha_1 \) et \( \beta_1 \) sont les paramètres du modèle qui sont estimés à partir des données.
Le modèle GARCH est souvent étendu pour inclure plus de termes, par exemple en utilisant des ordres plus élevés (GARCH(p, q)), pour mieux capturer la complexité de la structure de volatilité. Ces modèles sont largement utilisés dans la modélisation financière et l’analyse des séries chronologiques financières.
Specification du modèle GARCH(1,1)
garch_spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)))
# Adaptation du modèle aux données
garch_fit <- ugarchfit(spec = garch_spec, data = rendement_test)
# Affichage d'un résumé du modèle ajusté
show(garch_fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 1.002142 0.000880 1138.5154 0e+00
## omega 0.000120 0.000027 4.4646 8e-06
## alpha1 0.077363 0.016825 4.5981 4e-06
## beta1 0.840111 0.029097 28.8731 0e+00
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 1.002142 0.000897 1117.2551 0.000000
## omega 0.000120 0.000048 2.5202 0.011727
## alpha1 0.077363 0.031221 2.4779 0.013216
## beta1 0.840111 0.045872 18.3141 0.000000
##
## LogLikelihood : 3031.533
##
## Information Criteria
## ------------------------------------
##
## Akaike -3.7868
## Bayes -3.7733
## Shibata -3.7868
## Hannan-Quinn -3.7818
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.07858 0.7792
## Lag[2*(p+q)+(p+q)-1][2] 0.54551 0.6726
## Lag[4*(p+q)+(p+q)-1][5] 2.37938 0.5319
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.02159 0.8832
## Lag[2*(p+q)+(p+q)-1][5] 1.56675 0.7235
## Lag[4*(p+q)+(p+q)-1][9] 2.80953 0.7900
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.8247 0.500 2.000 0.3638
## ARCH Lag[5] 2.6377 1.440 1.667 0.3468
## ARCH Lag[7] 3.3186 2.315 1.543 0.4555
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 0.8177
## Individual Statistics:
## mu 0.21949
## omega 0.13507
## alpha1 0.08536
## beta1 0.13857
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.07 1.24 1.6
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.49604 0.6199
## Negative Sign Bias 0.02478 0.9802
## Positive Sign Bias 0.58591 0.5580
## Joint Effect 1.52053 0.6775
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 223.0 8.615e-37
## 2 30 247.4 1.600e-36
## 3 40 259.1 2.716e-34
## 4 50 300.3 8.232e-38
##
##
## Elapsed time : 0.264796
Interprétation
Ces résultats sont issus de l’ajustement d’un modèle GARCH(1,1) avec une distribution normale aux données de notre série de rendements. Voici une interprétation des résultats clés :
1. GARCH Model : Il s’agit d’un modèle GARCH(1,1), ce qui signifie qu’il inclut une composante GARCH d’ordre 1 (indiquée par “alpha1”) et une composante ARCH d’ordre 1 (indiquée par “beta1”).
2. Mean Model : Le modèle de moyenne ARFIMA(0,0,0) indique que nous n’avons pas inclus de composante ARMA dans le modèle. Cela signifie que le modèle suppose que la moyenne des rendements est constante.
3. Distribution : Le modèle suppose une distribution normale pour les erreurs.
4. Paramètres optimaux:
-\(\omega\) (Variance constante) : La variance constante estimée est d’environ 0.000120. Cela indique qu’il y a une volatilité constante dans les rendements.
-\(\alpha_1\) (GARCH) : Le coefficient GARCH estimé est d’environ 0.077363. Cela indique que les carrés des résidus passés ont un impact significatif sur la volatilité conditionnelle.
5. Robust Standard Errors : Ces estimations de paramètres sont suivies de leurs erreurs-types robustes. Elles sont utilisées pour tester la significativité des coefficients. Dans nos résultats, les estimations des coefficients ont des erreurs standard robustes légèrement différentes des erreurs standard classiques. Cependant, ces différences ne semblent pas être excessivement grandes. Les valeurs des erreurs standards robustes ne sont pas excessivement plus grandes que les erreurs standards classiques. Cela suggère que, dans ce contexte spécifique, les estimations des coefficients paraissent relativement stables.
6. LogLikelihood : La log-vraisemblance du modèle est d’environ 3031.533.
7. Weighted Ljung-Box Test on Standardized Residuals : Cela teste l’autocorrélation des résidus standardisés. Les résultats montrent que les retards d’autocorrélation ne sont pas significatifs, indiquant qu’il n’y a pas de corrélation sérielle importante dans les résidus.
8. Weighted Ljung-Box Test on Standardized Squared Residuals : Cela teste l’autocorrélation des carrés des résidus standardisés. Les résultats montrent que les retards d’autocorrélation ne sont pas significatifs, ce qui suggère que le modèle GARCH capture bien la volatilité.
9. Weighted ARCH LM Tests: Cela teste l’hypothèse d’autocorrélation des carrés des résidus. Les résultats montrent que les retards d’autocorrélation ne sont pas significatifs.
10. Nyblom Stability Test : Cela teste la stabilité du modèle GARCH. Les résultats montrent que le modèle est stable.
11. Sign Bias Test: Cela teste la présence de biais dans les résidus. Les résultats ne montrent pas de biais significatif.
12. Adjusted Pearson Goodness-of-Fit Test: Cela teste l’ajustement global du modèle. Les résultats indiquent que le modèle est un bon ajustement pour les données.
Globalement, le modèle GARCH(1,1) avec une distribution normale semble bien capturer la volatilité conditionnelle dans nos données, et il n’y a pas de problèmes significatifs d’autocorrélation, d’autocorrélation des carrés des résidus ou de biais dans les résidus.
Modèle TGARCH
Le modèle TGARCH (Threshold GARCH) est une extension du modèle GARCH qui introduit la notion de seuil dans la modélisation de la volatilité. Le modèle TGARCH permet à la volatilité de varier en fonction de certains seuils ou conditions spécifiques. La formule générale du modèle TGARCH inclut une fonction de seuil qui conditionne la volatilité en fonction de la réalisation d’un certain événement. Voici la formule générale du modèle TGARCH :
\[ \sigma_t^2 = \omega + \alpha_1 \varepsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2 + \gamma_1 I_{t-1} \varepsilon_{t-1}^2 + \delta_1 I_{t-1} \sigma_{t-1}^2 \]
où :
- \( \sigma_t^2 \) est la variance conditionnelle de la période \( t \).
- \( \omega \) est la constante.
- \( \alpha_1 \) est le coefficient associé à la volatilité au carré à la période précédente (\( \varepsilon_{t-1}^2 \)).
- \( \beta_1 \) est le coefficient associé à la variance conditionnelle à la période précédente (\( \sigma_{t-1}^2 \)).
- \( \gamma_1 \) est le coefficient associé à l’interaction entre l’erreur au carré à la période précédente et une variable indicatrice (\( I_{t-1} \)) qui prend la valeur de 1 si une condition seuil est satisfaite à la période précédente, et 0 sinon.
- \( \delta_1 \) est le coefficient associé à l’interaction entre la variance conditionnelle à la période précédente et la variable indicatrice.
La variable indicatrice \( I_{t-1} \) est définie en fonction de la réalisation d’un événement seuil spécifique à la période \( t-1 \). Cette fonction de seuil permet au modèle de réagir de manière différente en fonction des conditions du marché, capturant ainsi des changements brusques de volatilité.
Comme pour le modèle GARCH, les coefficients \( \omega, \alpha_1, \beta_1, \gamma_1, \) et \( \delta_1 \) sont estimés à partir des données. Le modèle TGARCH offre une flexibilité supplémentaire pour capturer des modèles de volatilité plus complexes qui peuvent varier en fonction de certains événements ou conditions du marché.
Spécification du modèle TGARCH(1,1)
tgarch_spec <- ugarchspec(variance.model = list(model = "fGARCH", submodel = "TGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(0, 0)))
tgarch_fit <- ugarchfit(spec = tgarch_spec, data = rendement_test)
# Affichage d'un résumé du modèle ajusté
show(tgarch_fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : fGARCH(1,1)
## fGARCH Sub-Model : TGARCH
## Mean Model : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 1.001381 0.000890 1125.3678 0.0e+00
## omega 0.003814 0.000819 4.6546 3.0e-06
## alpha1 0.096597 0.016696 5.7856 0.0e+00
## beta1 0.830730 0.029550 28.1126 0.0e+00
## eta11 0.406372 0.097178 4.1817 2.9e-05
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 1.001381 0.000962 1040.9479 0.000000
## omega 0.003814 0.001424 2.6789 0.007385
## alpha1 0.096597 0.027187 3.5530 0.000381
## beta1 0.830730 0.045568 18.2303 0.000000
## eta11 0.406372 0.252239 1.6111 0.107166
##
## LogLikelihood : 3039.645
##
## Information Criteria
## ------------------------------------
##
## Akaike -3.7957
## Bayes -3.7789
## Shibata -3.7957
## Hannan-Quinn -3.7894
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.06862 0.7934
## Lag[2*(p+q)+(p+q)-1][2] 0.72929 0.5950
## Lag[4*(p+q)+(p+q)-1][5] 2.60566 0.4838
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.005613 0.9403
## Lag[2*(p+q)+(p+q)-1][5] 1.200715 0.8128
## Lag[4*(p+q)+(p+q)-1][9] 2.737841 0.8013
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.6583 0.500 2.000 0.4172
## ARCH Lag[5] 2.1169 1.440 1.667 0.4460
## ARCH Lag[7] 3.3752 2.315 1.543 0.4456
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 1.0388
## Individual Statistics:
## mu 0.2832
## omega 0.2542
## alpha1 0.1921
## beta1 0.2451
## eta11 0.0947
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.28 1.47 1.88
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.004425 0.9965
## Negative Sign Bias 0.084156 0.9329
## Positive Sign Bias 0.492070 0.6227
## Joint Effect 0.323811 0.9555
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 221.3 1.913e-36
## 2 30 237.7 1.227e-34
## 3 40 266.8 9.867e-36
## 4 50 265.8 1.499e-31
##
##
## Elapsed time : 0.549051
Interprétation
D’après les résultats du modèle GARCH(1,1) spécifié avec une distribution normale et une sous-modélisation TGARCH, voici quelques points clés à noter :
Paramètres optimaux
- \(\mu\) (terme de moyenne) : L’estimation est de 1.001381 avec une erreur standard de 0.000890, ce qui suggère que la moyenne des rendements est d’environ 1.001381.
- \(\omega\) (terme de variance constante) : L’estimation est de 0.003814 avec une erreur standard de 0.000819, indiquant que la composante constante de la variance est d’environ 0.003814.
- \(\alpha_1\) (coefficient de l’ARCH) : L’estimation est de 0.096597 avec une erreur standard de 0.016696, suggérant une ARCH relativement faible.
- \(\beta_1\) (coefficient GARCH) : L’estimation est de 0.830730 avec une erreur standard de 0.029550, indiquant un effet GARCH plus prononcé. Les erreurs standard robustes sont légèrement plus élevées.
- \(\eta_{11}\) (paramètre du modèle TGARCH) : L’estimation est de 0.406372 avec une erreur standard de 0.097178. Les erreurs standard robustes sont plus élevées, mais il n’est pas possible de conclure si ce coefficient est significatif.
Tests de Diagnostic :
- Les tests de Ljung-Box sur les résidus standardisés ne montrent pas de preuves de corrélation sérielle significative pour les délais 1, 2, et 4. Cela suggère que les résidus standardisés semblent être indépendants.
- Les tests de Ljung-Box sur les carrés des résidus standardisés indiquent également l’absence de corrélation sérielle significative pour les délais 1, 5 et 9.
- Les tests de l’ARCH ne montrent pas de signes significatifs d’autocorrélation conditionnelle.
- Le test de stabilité de Nyblom suggère que les coefficients du modèle semblent stables.
- Le test de signes ne montre pas de biais significatif dans les résidus standardisés.
Globalement, les estimations des coefficients du modèle semblent relativement stables, bien que les erreurs standard robustes soient légèrement plus élevées que les erreurs standard classiques pour certains coefficients. Les tests de diagnostic suggèrent que le modèle semble bien capturer les caractéristiques de la série temporelle. Cependant, il est toujours important de considérer d’autres modèles et de vérifier la validité des hypothèses sous-jacentes au modèle GARCH.
Modèle EGARCH
Le modèle EGARCH (Exponential GARCH) est une autre extension du modèle GARCH qui permet de modéliser la volatilité des séries chronologiques financières. La principale différence réside dans la façon dont l’EGARCH capture l’asymétrie dans la réponse de la volatilité aux chocs positifs et négatifs. Contrairement au modèle GARCH, l’EGARCH permet aux chocs positifs et négatifs d’avoir un impact différent sur la volatilité conditionnelle.
La formule générale du modèle EGARCH est la suivante :
\[ \log(\sigma_t^2) = \omega + \sum_{i=1}^{q}\alpha_i|z_{t-i}| + \sum_{j=1}^{p}\beta_j\log(\sigma_{t-j}^2) \]
où :
- \( \sigma_t^2 \) est la variance conditionnelle de la période \( t \).
- \( \omega \) est la constante.
- \( \alpha_i \) sont les coefficients associés aux chocs \( z_{t-i} \) (résidus standardisés) des périodes précédentes, et \( |z_{t-i}| \) représente la valeur absolue de ces chocs.
- \( \beta_j \) sont les coefficients associés aux log-transformées des variances conditionnelles des périodes précédentes (\( \log(\sigma_{t-j}^2) \)).
L’EGARCH permet de capturer l’asymétrie dans la réponse de la volatilité aux chocs. Si \( \alpha_i \) est significativement différent de zéro, cela indique que les chocs positifs ont un impact différent sur la volatilité que les chocs négatifs. En d’autres termes, une augmentation de la volatilité due à un choc positif peut être différente de celle due à un choc négatif de même magnitude.
Comme pour le modèle GARCH, les coefficients \( \omega, \alpha_i, \) et \( \beta_j \) sont estimés à partir des données. L’EGARCH est souvent utilisé pour modéliser les données financières en raison de sa capacité à capturer l’asymétrie dans la volatilité conditionnelle.
Spécification du modèle EGARCH(1,1)
# Spécification du modèle EGARCH(1,1) avec ugarchspec
egarch_spec <- ugarchspec(variance.model = list(model = "eGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(0, 0)))
egarch_fit <- ugarchfit(spec = egarch_spec, data = rendement_test)
# Affichage d'un résumé du modèle ajusté
show(egarch_fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : eGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 1.001385 0.000998 1003.5424 0.000000
## omega -0.647136 0.167830 -3.8559 0.000115
## alpha1 -0.066682 0.019988 -3.3362 0.000849
## beta1 0.899340 0.025707 34.9843 0.000000
## gamma1 0.173479 0.030607 5.6680 0.000000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 1.001385 0.001433 698.6420 0.000000
## omega -0.647136 0.355931 -1.8181 0.069042
## alpha1 -0.066682 0.046437 -1.4360 0.151008
## beta1 0.899340 0.054444 16.5186 0.000000
## gamma1 0.173479 0.055050 3.1513 0.001625
##
## LogLikelihood : 3040.573
##
## Information Criteria
## ------------------------------------
##
## Akaike -3.7968
## Bayes -3.7800
## Shibata -3.7969
## Hannan-Quinn -3.7906
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.1210 0.728
## Lag[2*(p+q)+(p+q)-1][2] 0.7141 0.601
## Lag[4*(p+q)+(p+q)-1][5] 2.4805 0.510
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.01122 0.9156
## Lag[2*(p+q)+(p+q)-1][5] 1.19882 0.8133
## Lag[4*(p+q)+(p+q)-1][9] 2.56603 0.8279
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.6939 0.500 2.000 0.4048
## ARCH Lag[5] 2.0800 1.440 1.667 0.4538
## ARCH Lag[7] 3.1356 2.315 1.543 0.4883
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 1.0273
## Individual Statistics:
## mu 0.28369
## omega 0.24864
## alpha1 0.08566
## beta1 0.24737
## gamma1 0.14365
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.28 1.47 1.88
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.01892 0.9849
## Negative Sign Bias 0.12339 0.9018
## Positive Sign Bias 0.47042 0.6381
## Joint Effect 0.30734 0.9586
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 221.7 1.608e-36
## 2 30 240.9 2.928e-35
## 3 40 265.4 1.844e-35
## 4 50 266.6 1.072e-31
##
##
## Elapsed time : 0.2435629
Interprétation
Ces résultats sont liés à un modèle GARCH(1,1) spécifié avec une distribution normale et une forme E-GARCH. Voici les points saillants :
Paramètres Optimaux :
- \( \mu \) (terme de moyenne) : L’estimation est de 1.001385 avec une erreur standard de 0.000998, ce qui suggère que la moyenne des rendements est d’environ 1.001385. Les erreurs standard robustes sont également plus élevées.
- \( \omega \) (terme de variance constante) : L’estimation est de -0.647136 avec une erreur standard de 0.167830, indiquant une variance constante négative. Cependant, l’erreur standard robuste suggère un écart-type encore plus élevé pour cette estimation.
- \( \alpha1 \) (coefficient E-GARCH) : L’estimation est de -0.066682 avec une erreur standard de 0.019988, suggérant une valeur négative pour le coefficient. L’erreur standard robuste est également plus élevée.
- \( \beta1 \) (coefficient GARCH) : L’estimation est de 0.899340 avec une erreur standard de 0.025707, indiquant un effet GARCH significatif. Les erreurs standard robustes sont légèrement plus élevées.
- \( \gamma1 \) : L’estimation est de 0.173479 avec une erreur standard de 0.030607, montrant un effet significatif. Les erreurs standard robustes sont plus élevées mais restent significatives.
Tests de Diagnostic :
- Les tests de Ljung-Box sur les résidus standardisés ne montrent pas de preuves de corrélation sérielle significative pour les délais 1, 2, et 4. Cela suggère que les résidus standardisés semblent être indépendants.
- Les tests de Ljung-Box sur les carrés des résidus standardisés indiquent également l’absence de corrélation série significative pour les délais 1, 5 et 9.
- Les tests de l’ARCH ne montrent pas de signes significatifs d’autocorrélation conditionnelle.
- Le test de stabilité de Nyblom suggère que les coefficients du modèle semblent stables.
- Le test de signes ne montre pas de biais significatif dans les résidus standardisés.
Conclusion :
Globalement, ce modèle eGARCH(1,1) semble fournir une bonne adéquation avec les données, avec des paramètres significatifs. Il s’agit d’un modèle asymétrique, indiquant que les chocs positifs et négatifs entraînent différemment la variabilité, et les tests de diagnostic valident en grande partie l’adéquation du modèle aux données confidentielles.
Modèle GJR-GARCH
Le modèle GJR-GARCH (Generalized Jump Robust GARCH) est une autre extension du modèle GARCH qui permet de modéliser la volatilité des séries chronologiques financières. Il a été développé pour mieux capturer l’impact des “sauts” ou des événements extrêmes sur la volatilité conditionnelle. La spécificité du GJR-GARCH est qu’il inclut un terme asymétrique pour représenter l’impact différent des chocs positifs et négatifs.
La formule générale du modèle GJR-GARCH est la suivante :
\[ \sigma_t^2 = \omega + \sum_{i=1}^{q}(\alpha_i + \gamma_i I_{t-i})\varepsilon_{t-i}^2 + \sum_{j=1}^{p}\beta_j\sigma_{t-j}^2 \]
où :
- \( \sigma_t^2 \) est la variance conditionnelle de la période \( t \).
- \( \omega \) est la constante.
- \( \alpha_i \) sont les coefficients associés aux chocs \( \varepsilon_{t-i}^2 \) (résidus standardisés) des périodes précédentes.
- \( \gamma_i \) sont les coefficients associés à l’interaction entre les chocs \( \varepsilon_{t-i}^2 \) et une variable indicatrice \( I_{t-i} \) qui prend la valeur de 1 si \( \varepsilon_{t-i} \) est négatif et 0 sinon. Cela capture l’asymétrie dans la réponse de la volatilité aux chocs.
- \( \beta_j \) sont les coefficients associés aux variances conditionnelles des périodes précédentes (\( \sigma_{t-j}^2 \)).
Comme dans les autres modèles GARCH, les coefficients \( \omega, \alpha_i, \gamma_i, \) et \( \beta_j \) sont estimés à partir des données. Le terme \( I_{t-i} \) permet au modèle de réagir de manière différente en fonction de la direction du choc (positif ou négatif).
Le GJR-GARCH est utilisé lorsque l’on s’attend à ce que les chocs négatifs aient un impact différent sur la volatilité par rapport aux chocs positifs. Cela le rend particulièrement utile pour modéliser les marchés financiers où les événements extrêmes peuvent avoir des conséquences différentes sur la volatilité.
Spécification du modèle GJR-GARCH(1,1)
# Spécifier le modèle GJR-GARCH
spec <- ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(0, 0)))
# Ajuster le modèle GJR-GARCH
gjr_fit <- ugarchfit(spec, data = rendement_test, solver = "hybrid")
# Afficher un résumé du modèle ajusté
show(gjr_fit)
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : gjrGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu 1.001669 0.000874 1146.6908 0.000000
## omega 0.000151 0.000038 3.9794 0.000069
## alpha1 0.038608 0.014395 2.6821 0.007316
## beta1 0.805047 0.038311 21.0133 0.000000
## gamma1 0.110257 0.034178 3.2260 0.001255
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu 1.001669 0.000914 1095.9988 0.000000
## omega 0.000151 0.000080 1.8876 0.059079
## alpha1 0.038608 0.029301 1.3176 0.187625
## beta1 0.805047 0.073998 10.8793 0.000000
## gamma1 0.110257 0.083824 1.3154 0.188392
##
## LogLikelihood : 3041.679
##
## Information Criteria
## ------------------------------------
##
## Akaike -3.7982
## Bayes -3.7814
## Shibata -3.7982
## Hannan-Quinn -3.7920
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.2704 0.6031
## Lag[2*(p+q)+(p+q)-1][2] 0.8191 0.5608
## Lag[4*(p+q)+(p+q)-1][5] 2.4730 0.5116
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.08696 0.7681
## Lag[2*(p+q)+(p+q)-1][5] 1.78730 0.6695
## Lag[4*(p+q)+(p+q)-1][9] 2.83287 0.7862
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.9474 0.500 2.000 0.3304
## ARCH Lag[5] 2.8940 1.440 1.667 0.3055
## ARCH Lag[7] 3.2746 2.315 1.543 0.4633
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 0.9098
## Individual Statistics:
## mu 0.26799
## omega 0.22195
## alpha1 0.19012
## beta1 0.21586
## gamma1 0.08464
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.28 1.47 1.88
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 0.6430 0.5203
## Negative Sign Bias 0.5171 0.6051
## Positive Sign Bias 0.1965 0.8443
## Joint Effect 0.7758 0.8553
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 217.1 1.316e-35
## 2 30 238.2 9.885e-35
## 3 40 265.6 1.656e-35
## 4 50 273.5 6.064e-33
##
##
## Elapsed time : 0.503839
Interprétation
Ces résultats montrent les estimations du modèle GJR-GARCH(1,1) pour la série temporelle de rendements. Voici une interprétation des résultats :
### Paramètres Optimaux :
- \( \mu \) (terme de moyenne) : Estimation de 1.001669 avec une erreur standard de 0.000874, indiquant une moyenne des rendements d’environ 1.001669.
- \( \omega \) (terme de variance constante) : L’estimation est de 0.000151 avec une erreur standard de 0.000038. Cela représente la composante constante de la variance.
- \( \alpha1 \) (coefficient de l’ARCH) : Estimation de 0.038608 avec une erreur standard de 0.014395, montrant un effet significatif de la volatilité passée sur la volatilité actuelle.
- \( \beta1 \) (coefficient GARCH) : L’estimation est de 0.805047 avec une erreur standard de 0.038311, indiquant un effet significatif de la variance passée sur la variance actuelle.
- \( \gamma1 \) : Estimation de 0.110257 avec une erreur standard de 0.034178, montrant un effet significatif de la volatilité passée sur la variance actuelle.
### Tests de Diagnostic :
- Les tests de Ljung-Box sur les résidus standardisés ne montrent pas de preuves de corrélation série significative pour les délais 1, 2 et 4.
- Les tests de Ljung-Box sur les carrés des résidus standardisés ne montrent pas de corrélation série significative pour les délais 1, 5 et 9.
- Les tests de l’ARCH ne montrent pas de signes significatifs d’autocorrélation conditionnelle.
- Le test de stabilité de Nyblom indique que les coefficients du modèle semblent stables.
### Signification Statistique :
- Les erreurs standard robustes sont légèrement plus élevées que les erreurs standard classiques, mais dans l’ensemble, les coefficients restent significatifs.
### Graphique de Volatilité :
- Le graphique de volatilité montre comment la volatilité estimée varie au fil du temps.
### Conclusion :
Dans l’ensemble, le modèle GJR-GARCH semble bien ajusté aux données, avec des paramètres significatifs et des diagnostics indiquant une bonne adéquation. La volatilité conditionnelle est modélisée de manière asymétrique, ce qui peut être interprété comme une réaction différente aux chocs positifs et négatifs.
# Extraire les valeurs de volatilité estimées du modèle GARCH(1,1)
volatility <- sigma(garch_fit)
# Tracer le graphique de volatilité
plot(volatility, type = "l", col = "blue", xlab = "Année", ylab = "Volatilité", main = "Graphique de Volatilité du Modèle GARCH(1,1)")
# Calculer les résidus du modèle GARCH(1,1)
residuals <- residuals(garch_fit)
# Tracer les résidus par rapport aux valeurs ajustées (fitted)
plot(residuals, type = "l", col = "green", xlab = "Temps", ylab = "Résidus", main = "Graphique des Résidus du Modèle GARCH(1,1)")
# Extraire les valeurs de volatilité estimées du modèle TGARCH(1,1)
volatility_tgarch <- sigma(tgarch_fit)
# Tracer le graphique de volatilité
plot(volatility_tgarch, type = "l", col = "blue", xlab = "Temps", ylab = "Volatilité", main = "Graphique de Volatilité du Modèle TGARCH(1,1)")
# Calculer les résidus du modèle TGARCH(1,1)
residuals0 <- residuals(tgarch_fit)
# Tracer les résidus par rapport aux valeurs ajustées (fitted)
plot(residuals0, type = "l", col = "green", xlab = "Temps", ylab = "Résidus", main = "Graphique des Résidus du Modèle TGARCH(1,1)")
# Extraire les valeurs de volatilité estimées du modèle EGARCH(1,1)
volatility_egarch <- sigma(egarch_fit)
# Tracer le graphique de volatilité
plot(volatility_egarch, type = "l", col = "blue", xlab = "Temps", ylab = "Volatilité", main = "Graphique de Volatilité du Modèle EGARCH(1,1)")
# Calculer les résidus du modèle EGARCH(1,1)
residuals1 <- residuals(egarch_fit)
# Tracer les résidus par rapport aux valeurs ajustées (fitted)
plot(residuals1, type = "l", col = "green", xlab = "Temps", ylab = "Résidus", main = "Graphique des Résidus du Modèle EGARCH(1,1)")
# Extraire les valeurs de volatilité estimées du modèle gjr_fit
volatility_gjr <- sigma(gjr_fit)
# Tracer le graphique de volatilité
plot(volatility_gjr, type = "l", col = "blue", xlab = "Temps", ylab = "Volatilité", main = "Graphique de Volatilité du Modèle gjr_fit")
# Calculer les résidus du modèle gjr(1,1)
residuals11 <- residuals(gjr_fit)
# Tracer les résidus par rapport aux valeurs ajustées (fitted)
plot(residuals11, type = "l", col = "green", xlab = "Temps", ylab = "Résidus", main = "Graphique des Résidus du Modèle gjr(1,1)")
| Critère | GARCH | TGARCH | EGARCH | GJR-GARCH |
| AIC | |
|
|
|
| BIC | |
|
|
|
| SIC | |
|
|
|
| HQIC | |
|
|
|
On constate que:
Le modèle GARCH(1,1) a dans tous les cas des critères plus élevées que tous les autres modèles
Le modèle GJR-GARCH(1,1) a dans tous les cas les critères les plus bas .
En terme de valeurs des critères, on peut classer les modèles comme suit:
GJR-GARCH, EGARCH, TGARCH puis GARCH
On peut donc en déduire que le modèle GJR-GARCH(1,1) a la meilleure qualité d’ajustement aux données selon les critères d’information.
Une autre alternative serait de choisir le modèle EGARCH qui a également un bon ajustement.
# Prédire la volatilité
volatility_gjr <- sigma(gjr_fit)
# Générer les rendements simulés
set.seed(123)
n <- length(rendement_test)
rendement_simulés <- rnorm(n, mean=0, sd=volatility_gjr)
# Tracer les résultats
plot(rendement_simulés, typ="l", col="black", ylab="Rendements")
plot(rendement_test, col="blue")
legend("topright", legend=c("Valeurs simulées", "Valeurs réelles"),
col=c("black","blue"), lty=1)
title("Rendements simulés vs réels")
Les deux courbes ont des tendances similaires mais ne manquent pas de montrer des différences en ce qui concerne leur amplitude de variation.
# Récupération de la volatilité conditionnelle prédite
volatility_gjr <- sigma(gjr_fit)
# Génération de rendements simulés
set.seed(123)
n <- length(rendement_test)
simulated_returns_gjr <- rnorm(n, mean = 0, sd =volatility_gjr )
rmse_gjr= sqrt(mean((simulated_returns_gjr - rendement_test)^2))
mae_gjr = mean(abs(simulated_returns_gjr - rendement_test))
print("Modèle GJR-GARCH ")
## [1] "Modèle GJR-GARCH "
# Afficher les mesures
print(paste("RMSE_GJR =", rmse_gjr))
## [1] "RMSE_GJR = 1.0023503991453"
print(paste("MAE_GJR =", mae_gjr))
## [1] "MAE_GJR = 1.00088975878372"
# Prédire la volatilité
volatility_egarch <- sigma(egarch_fit)
# Générer les rendements simulés
set.seed(123)
n <- length(rendement_test)
simulated_returns_egarch <- rnorm(n, mean=0, sd=volatility_egarch)
rmse_egarch = sqrt(mean((simulated_returns_egarch - rendement_test)^2))
mae_egarch = mean(abs(simulated_returns_egarch - rendement_test))
print("Modèle EGARCH ")
## [1] "Modèle EGARCH "
print(paste("RMSE_egarch =", rmse_egarch))
## [1] "RMSE_egarch = 1.0022761844383"
print(paste("MAE_egarch =", mae_egarch))
## [1] "MAE_egarch = 1.00083549130048"
| Critères | EGARCH | GJR-GARCH |
| RMSE | |
|
| MAE | |
|
Sur la base des critères d’information, tous les critères indiquent que l’EGARCH est légèrement meilleur que le GJR-GARCH. Les valeurs plus basses des critères (AIC, BIC, SIC, HQIC) pour l’EGARCH suggèrent un meilleur ajustement du modèle aux données.
En ce qui concerne les mesures de performance, les différences entre les deux modèles sont minimes. Les valeurs de RMSE et de MAE sont très proches, indiquant une performance similaire en termes de précision des prédictions.
En résumé, sur la base de ces résultats, l’EGARCH semble être légèrement préférable au GJR-GARCH en termes de critères d’information, bien que les performances des deux modèles soient assez similaires.