Introduction

Les séries financières sont des séries temporelles qui enregistrent les prix, les rendements, les volumes ou d’autres variables financières. Elles sont caractérisées par une volatilité non constante, c’est-à-dire que les écarts-types des observations peuvent varier dans le temps. Ce phénomène est appelé clustering de volatilité.

Le clustering de volatilité peut avoir des conséquences importantes sur la prise de décision financière. Par exemple, une volatilité élevée peut entraîner une augmentation du risque de perte, tandis qu’une volatilité faible peut entraîner une baisse des rendements potentiels.

Les modèles ARCH et GARCH sont des modèles statistiques qui permettent de modéliser la volatilité des séries financières. Ils sont basés sur l’idée que la volatilité actuelle d’une série est fonction de sa volatilité passée.

Description du jeu de données à utiliser

Les données utilisées représente les données historiques (du 1er janvier 2010 au 30 août 2023) de l’indice NASDAQ. Les différentes variables de notre jeu de données sont:

Créé en 1971, le NASDAQ est une bourse entièrement électronique, ce qui signifie que les transactions sont effectuées électroniquement, contrairement aux bourses traditionnelles où les échanges se font sur un plancher de négociation physique. Cette nature électronique a souvent permis au NASDAQ d’être en pointe sur l’utilisation de la technologie dans le trading des actions.

Le NASDAQ Composite est un indice boursier qui représente le regroupement de milliers d’actions cotées sur le NASDAQ. Il offre une vision globale de la performance de ce marché en incluant un large éventail de sociétés, principalement des entreprises technologiques, mais aussi des sociétés financières, de biotechnologie, de services de santé et d’autres secteurs.

En plus du NASDAQ Composite, le NASDAQ gère d’autres indices importants comme le NASDAQ-100, qui se concentre sur les 100 plus grandes entreprises non financières cotées sur le NASDAQ. Ces indices sont largement suivis pour évaluer la performance du marché boursier et servent souvent de référence pour les investisseurs, les analystes et les traders.

Chargement des packages

library("tseries")
library("quantmod")
library("rugarch")
library("forecast")
library("sandwich")
library("FinTS")
library("ggplot2")
library("lmtest")

Chargement du jeu de données

data = getSymbols("^IXIC", from="2010-01-01", to = "2023-08-30")

Visualisation des données

plot(IXIC$IXIC.Close, col = "blue")

Test de stationnarité de la série

adf.test(IXIC$IXIC.Close)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  IXIC$IXIC.Close
## Dickey-Fuller = -2.2638, Lag order = 15, p-value = 0.4666
## alternative hypothesis: stationary

Les résultats du test ADF suggèrent que le prix de clôture de l’indice Nasdaq Composite n’est pas stationnaire. La statistique Dickey-Fuller est de -2,2638, ce qui est moins que la valeur critique de -2,8976 au niveau de signification de 5%. La valeur p est de 0,4666, ce qui est supérieur au niveau de signification de 0,05. Par conséquent, nous ne pouvons pas rejeter l’hypothèse nulle selon laquelle le prix de clôture de l’indice Nasdaq Composite n’est pas stationnaire.

Différenciation de la série

dIXIC = diff(IXIC$IXIC.Close)
dIXIC = dIXIC[-1]
adf.test(dIXIC$IXIC.Close)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dIXIC$IXIC.Close
## Dickey-Fuller = -14.845, Lag order = 15, p-value = 0.01
## alternative hypothesis: stationary

Les résultats du test ADF suggèrent que le prix de clôture différencié de l’indice Nasdaq Composite (^IXIC) est stationnaire. La statistique Dickey-Fuller est de -14,845, ce qui est moins que la valeur critique de -2,8976 au niveau de signification de 5%. La valeur p est de 0,01, ce qui est inférieur au niveau de signification de 0,05. Par conséquent, nous pouvons rejeter l’hypothèse nulle selon laquelle le prix de clôture différencié de l’indice Nasdaq Composite n’est pas stationnaire.

Visualisation de la série différenciée

plot(dIXIC$IXIC.Close, col="blue")

Test de stationnarité de la série diférenciée

adf.test(dIXIC$IXIC.Close)
## Warning in adf.test(dIXIC$IXIC.Close): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dIXIC$IXIC.Close
## Dickey-Fuller = -14.845, Lag order = 15, p-value = 0.01
## alternative hypothesis: stationary

Mise en place du modèle ARIMA

Le modèle ARIMA (autoregressive integrated moving average) est un modèle statistique utilisé pour décrire et prédire des séries temporelles. Il est basé sur l’hypothèse que la série temporelle peut être représentée comme une combinaison d’une tendance linéaire, d’un processus AR (autoregressif) et d’un processus MA (mouvement moyen).

L’équation du modèle ARIMA est la suivante :

\[\begin{equation} Nasdaq_t = \mu + \phi_1 Nasdaq_{t-1} + \dots + \phi_p Nasdaq_{t-p} + \theta_1 \epsilon_{t-1} + \dots + \theta_q \epsilon_{t-q} + \epsilon_t \end{equation}\]

avec

Code R

modele1 = auto.arima(dIXIC$IXIC.Close)
summary(modele1)
## Series: dIXIC$IXIC.Close 
## ARIMA(1,0,1) with non-zero mean 
## 
## Coefficients:
##           ar1     ma1    mean
##       -0.3952  0.3142  3.4670
## s.e.   0.1263  0.1301  1.7606
## 
## sigma^2 = 12014:  log likelihood = -21012.58
## AIC=42033.16   AICc=42033.17   BIC=42057.73
## 
## Training set error measures:
##                       ME     RMSE      MAE  MPE MAPE      MASE        ACF1
## Training set -0.08962393 109.5608 64.48924 -Inf  Inf 0.6816001 0.001666926
coeftest(modele1)
## 
## z test of coefficients:
## 
##           Estimate Std. Error z value Pr(>|z|)   
## ar1       -0.39518    0.12634 -3.1280  0.00176 **
## ma1        0.31417    0.13011  2.4147  0.01575 * 
## intercept  3.46696    1.76058  1.9692  0.04893 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Test d’hétéroscédasticité

white.test(residuals(modele1))
## 
##  White Neural Network Test
## 
## data:  residuals(modele1)
## X-squared = 13.482, df = 2, p-value = 0.001181

Les résultats du test de White suggèrent que les résidus du modèle ARIMA(1,0,1) avec moyenne non nulle ne sont pas homoscédastiques. Cela signifie que la variance des résidus n’est pas constante et qu’elle peut être influencée par des variables explicatives.

Test de normalité des résidus

jarque.bera.test(residuals(modele1))
## 
##  Jarque Bera Test
## 
## data:  residuals(modele1)
## X-squared = 10636, df = 2, p-value < 2.2e-16

Les résultats du test de Jarque-Bera suggèrent que les résidus du modèle ARIMA(1,0,1) avec moyenne non nulle ne suivent pas une distribution normale. Cela signifie que la distribution des résidus n’est pas symétrique et qu’elle a des queues plus épaisses que celles d’une distribution normale.

Test d’autocorrelation

Box.test(dIXIC$IXIC.Close, lag = 10)
## 
##  Box-Pierce test
## 
## data:  dIXIC$IXIC.Close
## X-squared = 145.57, df = 10, p-value < 2.2e-16

Les résultats du test de Box-Pierce suggèrent que les résidus du modèle ARIMA(1,0,1) avec moyenne non nulle sont autocorrélés. Cela signifie qu’il existe une relation entre les valeurs résiduelles à différents points dans le temps.

Indépendance des observations

bds.test(IXIC$IXIC.Close)#Dépendance
## 
##   BDS Test 
## 
## data:  IXIC$IXIC.Close 
## 
## Embedding dimension =  2 3 
## 
## Epsilon for close points =  1927.452 3854.903 5782.355 7709.807 
## 
## Standard Normal = 
##       [ 1927.4517 ] [ 3854.9033 ] [ 5782.355 ] [ 7709.8066 ]
## [ 2 ]      383.3371      239.6318     175.3274      167.4671
## [ 3 ]      698.6153      301.0296     189.3402      167.6587
## 
## p-value = 
##       [ 1927.4517 ] [ 3854.9033 ] [ 5782.355 ] [ 7709.8066 ]
## [ 2 ]             0             0            0             0
## [ 3 ]             0             0            0             0

Les résultats du test BDS suggèrent que la série chronologique du prix de clôture de l’indice Nasdaq Composite (^IXIC) n’est pas linéaire. Cela signifie qu’il existe une relation non linéaire entre le prix de clôture actuel et les prix de clôture passés

Test de volatilité

ArchTest(residuals(modele1))
## 
##  ARCH LM-test; Null hypothesis: no ARCH effects
## 
## data:  residuals(modele1)
## Chi-squared = 894.63, df = 12, p-value < 2.2e-16

Les résultats du test ARCH suggèrent que les résidus du modèle ARIMA(1,0,1) avec moyenne non nulle présentent des effets ARCH. Cela signifie que la variance des résidus dépend de la valeur des résidus passés.

Les effets ARCH peuvent compliquer l’analyse des séries chronologiques. Par conséquent, il est important de vérifier la présence d’effets ARCH dans les résidus avant d’utiliser des modèles de régression.

Estimation du modèle GARCH

Le modèle GARCH (generalized autoregressive conditional heteroskedasticity) est un modèle statistique utilisé pour décrire et prédire la volatilité des séries temporelles. Il est basé sur l’hypothèse que la volatilité conditionnelle de la série temporelle est un processus autorégressif.

L’équation du modèle GARCH est la suivante :

\[\begin{equation} \sigma_t^2 = \alpha_0 + \alpha_1 \epsilon_{t-1}^2 + \dots + \alpha_p \epsilon_{t-p}^2 + \beta_1 \sigma_{t-1}^2 + \dots + \beta_q \sigma_{t-q}^2 \end{equation}\]

avec

r = diff(log(IXIC$IXIC.Close))
r = r[-1]
plot(r, main="Graphique du rendement du Nasdaq" )

modele2 <- ugarchspec(variance.model = list(model = "sGARCH", order = c(1, 1)),
                    mean.model = list(armaOrder = c(0, 0)),
                    distribution.model = "norm")
## Warning: unidentified option(s) in variance.model:
##  order
fit2 <- ugarchfit(spec = modele2, data = r)
show(fit2)
## 
## *---------------------------------*
## *          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      0.000930    0.000164   5.6749 0.000000
## omega   0.000004    0.000002   1.8087 0.070496
## alpha1  0.134036    0.011848  11.3131 0.000000
## beta1   0.838728    0.019144  43.8109 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.000930    0.000251  3.71008 0.000207
## omega   0.000004    0.000014  0.32071 0.748428
## alpha1  0.134036    0.020302  6.60214 0.000000
## beta1   0.838728    0.088083  9.52198 0.000000
## 
## LogLikelihood : 10679.44 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -6.2139
## Bayes        -6.2067
## Shibata      -6.2139
## Hannan-Quinn -6.2113
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.300  0.2542
## Lag[2*(p+q)+(p+q)-1][2]     1.301  0.4100
## Lag[4*(p+q)+(p+q)-1][5]     3.028  0.4020
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.013  0.3143
## Lag[2*(p+q)+(p+q)-1][5]     2.831  0.4388
## Lag[4*(p+q)+(p+q)-1][9]     4.283  0.5415
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]   0.03588 0.500 2.000  0.8498
## ARCH Lag[5]   1.50995 1.440 1.667  0.5897
## ARCH Lag[7]   2.40672 2.315 1.543  0.6317
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  3.042
## Individual Statistics:             
## mu     0.0247
## omega  0.1609
## alpha1 0.5443
## beta1  0.4857
## 
## 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           2.9294 0.0034190 ***
## Negative Sign Bias  0.2759 0.7826255    
## Positive Sign Bias  0.8522 0.3941489    
## Joint Effect       20.8000 0.0001158 ***
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     126.9    5.534e-18
## 2    30     150.6    2.309e-18
## 3    40     191.8    4.654e-22
## 4    50     200.3    3.475e-20
## 
## 
## Elapsed time : 0.419215

Résultats de l’ajustement d’un modèle GARCH(1,1) aux données r

L’ajustement d’un modèle sGARCH(1,1) aux données \(r\) montre que le modèle est bien spécifié. En effet, les résultats des tests statistiques suivants sont satisfaisants :

  • Les valeurs t de tous les paramètres sont statistiquement significatives.
  • Les tests de Ljung-Box sur les résidus normalisés et les résidus au carré ne montrent aucune preuve de corrélation sérielle.
  • Les tests ARCH LM ne montrent aucune preuve d’effets ARCH.
  • Le test de stabilité de Nyblom montre que le modèle est stable.
  • Le test de biais de signe montre que le modèle est capable de capturer les effets asymétriques des chocs positifs et négatifs sur la volatilité.
  • Le test de Pearson ajusté de la qualité d’ajustement montre que le modèle est un bon ajustement des données.

Globalement, la sortie suggère que le modèle sGARCH(1,1) est un bon choix pour modéliser la volatilité des données.

Estimation du modèle eGARCH

Le modèle eGARCH est une extension du modèle GARCH qui permet de prendre en compte l’asymétrie de la volatilité. En effet, les séries temporelles financières présentent souvent une asymétrie, c’est-à-dire que les chocs négatifs ont tendance à avoir un impact plus important sur la volatilité que les chocs positifs.

L’équation de la variance conditionnelle du modèle eGARCH est la suivante :

\[\begin{equation} h_t = a_0 + a_1^+ h_{t-1}^+ + a_1^- h_{t-1}^- + \sum_{i=1}^q b_i \epsilon_{t-i}^2 \end{equation}\]

où :

Le modèle eGARCH est un modèle plus flexible que le modèle GARCH, car il permet de prendre en compte l’asymétrie de la volatilité. Cela peut être utile pour améliorer la précision des prévisions de volatilité.

modele3 <- ugarchspec(
  variance.model = list(model = "eGARCH", order = c(1, 1)),
  mean.model = list(armaOrder = c(0, 0)), 
  distribution.model = "norm"
)
## Warning: unidentified option(s) in variance.model:
##  order
fit3 <- ugarchfit(spec = modele3, data = r)
show(fit3)
## 
## *---------------------------------*
## *          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      0.000391    0.000152   2.5673 0.010248
## omega  -0.367747    0.015581 -23.6025 0.000000
## alpha1 -0.137497    0.009194 -14.9557 0.000000
## beta1   0.958650    0.001873 511.9504 0.000000
## gamma1  0.178230    0.016429  10.8485 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.000391    0.000160   2.4379 0.014772
## omega  -0.367747    0.043435  -8.4665 0.000000
## alpha1 -0.137497    0.017810  -7.7202 0.000000
## beta1   0.958650    0.004779 200.6013 0.000000
## gamma1  0.178230    0.034675   5.1400 0.000000
## 
## LogLikelihood : 10737.2 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -6.2469
## Bayes        -6.2380
## Shibata      -6.2469
## Hannan-Quinn -6.2437
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      2.151  0.1425
## Lag[2*(p+q)+(p+q)-1][2]     2.154  0.2385
## Lag[4*(p+q)+(p+q)-1][5]     3.577  0.3117
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.689  0.1937
## Lag[2*(p+q)+(p+q)-1][5]     2.498  0.5063
## Lag[4*(p+q)+(p+q)-1][9]     3.238  0.7191
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]  0.004561 0.500 2.000  0.9462
## ARCH Lag[5]  0.271833 1.440 1.667  0.9477
## ARCH Lag[7]  0.867748 2.315 1.543  0.9341
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.7387
## Individual Statistics:             
## mu     0.3763
## omega  0.7387
## alpha1 0.2247
## beta1  0.6563
## gamma1 0.1385
## 
## 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           1.9592 0.05017   *
## Negative Sign Bias  0.9569 0.33870    
## Positive Sign Bias  0.0566 0.95487    
## Joint Effect        5.0655 0.16706    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     123.5    2.463e-17
## 2    30     136.7    6.471e-16
## 3    40     167.2    8.308e-18
## 4    50     175.7    3.612e-16
## 
## 
## Elapsed time : 0.4711051

Résultats de l’ajustement d’un modèle eGARCH(1,1) aux données r

L’ajustement d’un modèle eGARCH(1,1) aux données \(r\) montre que le modèle est bien spécifié. En effet, les résultats des tests statistiques suivants sont satisfaisants :

Globalement, les résultats suggèrent que le modèle eGARCH(1,1) semble être un bon choix pour modéliser la volatilité des données.

Estimation du modèle gjrGARCH

Le modèle GJR-GARCH est une extension du modèle GARCH qui permet de prendre en compte l’asymétrie de la volatilité. En effet, les séries temporelles financières présentent souvent une asymétrie, c’est-à-dire que les chocs négatifs ont tendance à avoir un impact plus important sur la volatilité que les chocs positifs.

L’équation de la variance conditionnelle du modèle GJR-GARCH est la suivante :

\[\begin{equation} h_t = a_0 + a_1 h_{t-1} + a_2 \left( \frac{\epsilon_{t-1}^-}{\sigma_{t-1}} \right)^2 + \sum_{i=1}^q b_i \epsilon_{t-i}^2 \end{equation}\]

où :

Le coefficient d’asymétrie \(a_2\) mesure l’impact des chocs négatifs sur la volatilité. Lorsque \(a_2\) est positif, les chocs négatifs ont un impact plus important sur la volatilité que les chocs positifs.

modele4 <- ugarchspec(
  variance.model = list(model = "gjrGARCH", order = c(1, 1)),
  mean.model = list(armaOrder = c(0, 0)), 
  distribution.model = "norm"
)
## Warning: unidentified option(s) in variance.model:
##  order
fit4 <- ugarchfit(spec = modele4, data = r)
show(fit4)
## 
## *---------------------------------*
## *          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      0.000512    0.000151   3.3905 0.000698
## omega   0.000004    0.000000  17.4853 0.000000
## alpha1  0.014629    0.004845   3.0193 0.002533
## beta1   0.862333    0.008256 104.4553 0.000000
## gamma1  0.177118    0.015624  11.3360 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.000512    0.000147   3.4838 0.000494
## omega   0.000004    0.000000  10.4144 0.000000
## alpha1  0.014629    0.007603   1.9242 0.054332
## beta1   0.862333    0.011284  76.4214 0.000000
## gamma1  0.177118    0.031496   5.6236 0.000000
## 
## LogLikelihood : 10727.32 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -6.2412
## Bayes        -6.2322
## Shibata      -6.2412
## Hannan-Quinn -6.2380
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.021  0.3122
## Lag[2*(p+q)+(p+q)-1][2]     1.027  0.4894
## Lag[4*(p+q)+(p+q)-1][5]     2.566  0.4920
## d.o.f=0
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.985  0.1589
## Lag[2*(p+q)+(p+q)-1][5]     2.219  0.5677
## Lag[4*(p+q)+(p+q)-1][9]     3.320  0.7051
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]   0.05141 0.500 2.000  0.8206
## ARCH Lag[5]   0.54713 1.440 1.667  0.8696
## ARCH Lag[7]   1.45088 2.315 1.543  0.8312
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  8.1724
## Individual Statistics:             
## mu     0.3544
## omega  1.3528
## alpha1 0.9738
## beta1  0.8195
## gamma1 0.8369
## 
## 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           2.5442 0.0110  **
## Negative Sign Bias  1.4387 0.1503    
## Positive Sign Bias  0.2281 0.8196    
## Joint Effect        9.5600 0.0227  **
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     119.5    1.379e-16
## 2    30     140.8    1.249e-16
## 3    40     173.5    7.090e-19
## 4    50     198.8    6.074e-20
## 
## 
## Elapsed time : 0.6569419

Graphique de la volatilité du Nasdaq et Graphique des résidus

# Calcule la volatilité
sigma2 <- sigma(fit2)
sigma3 <- sigma(fit3)
sigma4 <- sigma(fit4)

# Calcule les résidus
res2 <- r - fitted(fit2)
res3 <- r - fitted(fit3)
res4 <- r - fitted(fit4)

plot(sigma2,type = "l",col = "red",ylab = "Volatilité",xlab = "Temps",main = "Volatilité du Nasdaq : GARCH(1,1)")

plot(res2,type = "l",ylab = "Résidus",xlab = "Temps",main = "Résidus du modèle GARCH(1,1)")

plot(sigma3,type = "l",col = "red",ylab = "Volatilité",xlab = "Temps",main = "Volatilité du Nasdaq : eGARCH(1,1)")

plot(res3,type = "l",ylab = "Résidus",xlab = "Temps",main = "Résidus du modèle eGARCH(1,1)")

plot(sigma4,type = "l",col = "red", ylab = "Volatilité",xlab = "Temps",main = "Volatilité du Nasdaq : gjrGARCH(1,1)")

plot(res4,type = "l",ylab = "Résidus",xlab = "Temps", main = "Résidus du modèle gjrGARCH(1,1)")

Les graphiques de la volatilité montrent que les trois modèles sont capables de capturer les variations de la volatilité des rendements logarithmiques du Nasdaq Composite Index. Cette observation nous amène a postuler pour d’autres critéres comme celles d’informations Akaike (AIC) et Schwarz (SIC) qui pourraient probablement nous permettre de faire un meilleur choix du modèle le plus significatif parmi les 03 modéles candidats estimés.

Choix du modèle le plus significatif

Nous l’avons vu, dans les paragraphes précédents que tous nos modèles candidats sont probablement bien spécifiés. Cependant, le choix du modèle le plus significatif pour la prédiction de la volatilité future du Nasdaq dépendra des propriétés de ce modèle en rapport à celles de la série Nasdaq étudiée et ensuite des valeurs qui minimisent les critères d’informations Akaike (AIC), Bayes(BIC), Hannan-Quinn(HQIC) et Shibata (SIC). Les valeurs AIC,BIC, HQIC, SIC des modèles candidats suivants : GARCH (1,1), eGARCH(1,1), gjrGARCH(1,1)

GARCH

eGARCH

gjrGARCH

Dans ce cas, les modèles eGARCH et gjrGARCH présente les valeurs les plus faibles pour les quatre critères d’information, ce qui indique qu’ils sont les modèles qui ajustent le mieux le rendement parmi les trois. Utilisons la mesure d’erreur RMSE pour obtenir lez modèle optimal

Mesure d’erreur

set.seed(123)
sim2 = rnorm(length(r), mean = 0, sd = sigma(fit2)) 
rmse_garch = sqrt(mean((sim2-r)^2))

sim3 = rnorm(length(r), mean = 0, sd = sigma(fit3)) 
rmse_egarch = sqrt(mean((sim3-r)^2))


sim4 = rnorm(length(r), mean = 0, sd = sigma(fit4)) 
rmse_gjrgarch = sqrt(mean((sim4-r)^2))

Tout comme les critères d’erreur, les RMSE viennent nous conforter dans notre décision de choisir les modèles gjrGARCH et eGARCH pour modéliser la volatilté du Nasdaq Composite

Prévision

plot(sim4, typ = "l", col = "green", main = "Rendement simulé pour le modèle gjrGARCH")

plot(r, main = "rendement réel du Nasdaq")