ZOOM VIDEO COMMUNICATIONS INC.

En el presente trabajo se va a desarrollar el análisis del comportamiento que presentÓ la cotización de la empresa dentro del mercado de capitales, en esta primera sección se hará una breve descripción de la empresa y se obtendrán los datos que serán utilizados para realizar el análisis requerido.

Descripción de la empresa.

Zoom video, también conocido como Zoom y Zoom app es un programa de viodellamadas y reuniones virtuales, accesible desde computadoras de escritorio, computadoras portátiles, teléfonos inteligentes y tabletas. Su fabricante es la empresa Zoom video communications, asentada en San José, California.

El 18 de abril de 2019, la empresa se convirtió en una empresa cotizada en bolsa alcanzando una valorización de 16 mil millones de dólares en su primer día de negociación.

Durante la pandemia del COVID-19, debido a la obligación de distanciamiento social, muchos empezaron a utilizar Zoom como plataforma para teletrabajo, educación a distancia, y las relaciones sociales en línea. Muchas de instituciones educativas cambiaron a clases en línea usando Zoom. La compañía ofreció sus servicios a escuelas primarias de forma gratuita en muchos países.

Para febrero de 2020, Zoom había ganado 2,2 millones de usuarios, más usuarios de los que acumuló en todo 2019. En un día en marzo de 2020, la aplicación Zoom se descargó 343 000 veces con aproximadamente el 18 % de esas descargas originadas en los Estados Unidos. Los usuarios promedio diarios aumentaron de aproximadamente 10 millones en diciembre de 2019 a aproximadamente 200 millones en marzo de 2020. Esto llevó a un aumento significativo en el precio de las acciones de la compañía a principios de 2020, a pesar de una caída general del mercado de valores.

Obtención de datos.

A continuación, se obtendrá los datos de la empresa del periodo 2017-01-01 y 2020-01-01, estos datos tendrán una frecuencia diaria. Para lograr esto, se usará los siguientes códigos:

getSymbols.yahoo("ZM", env = globalenv(), from = as.Date("2019-04-01"), to = as.Date("2020-12-01"), periodicity = 'daily')
## [1] "ZM"

Podemos observar que la función getSymbols.yahoo se utiliza para poder obtener los datos de la empresa indicando con el código from la fecha desde se iniciará la descarga de datos, en el parámetro to colocamos la fecha final del periodo que se analizara y en el parámetro periodicity colocaremos daily pues se trabajaran con datos diarios.

Para poder confirmar que se tuvieron los datos deseados, se utilizara la función head para mostrar los 5 primeros datos descargados y luego se ejecutara la función tail para exponer los últimos datos de la serie descargada, además se utilizara la función length para determinar el número de datos descargados, para ello se ejecutara el siguiente codigo:

head(ZM, 5) #Mostras los primeros datos de la serie descargada.
##            ZM.Open ZM.High ZM.Low ZM.Close ZM.Volume ZM.Adjusted
## 2019-04-18   65.00  66.000 60.321     62.0  25764700        62.0
## 2019-04-22   61.00  68.900 59.940     65.7   9949700        65.7
## 2019-04-23   66.87  74.169 65.550     69.0   6786500        69.0
## 2019-04-24   71.40  71.500 63.160     63.2   4973500        63.2
## 2019-04-25   64.74  66.850 62.600     65.0   3863300        65.0
tail(ZM, 5) #Mostrar los últimos datos de la serie descargada.
##            ZM.Open ZM.High ZM.Low ZM.Close ZM.Volume ZM.Adjusted
## 2020-11-23 432.010 436.513 417.88   430.28   8486000      430.28
## 2020-11-24 421.505 438.832 420.01   427.55   6148400      427.55
## 2020-11-25 435.850 448.480 433.33   443.72   8763700      443.72
## 2020-11-27 453.990 472.040 449.00   471.61   7276400      471.61
## 2020-11-30 485.700 486.830 460.00   478.36  16646500      478.36
length(ZM) #Motrar el número de elementos de la serie.
## [1] 2454

Por lo que se ve que se la serie cuenta con 3018 datos. A continuación, se mostrará la gráfica de la serie de tiempo descargada.

chartSeries(ZM, theme = "white", name = "Cotizacion de Zoom")

En el gráfico se observa que la cotización de la empresa se ha mantenido altamente comercializada y a partir del año 2020, el precio cotizado tiene un crecimiento acelerado debido a la pandemia del COVID-19 y tiene su pico en setiembre de este año con un precio que oscila entre los 400 y 600 dólares . Para el 01 de diciembre del 2020, la acción cotizaba en \(406.31\$\) dólares y el volumen de comercialización es de \(16,646,500\$\).

Por otro lado, se tomará la columna de los precios al cierre ajustados de toda la serie descargada, porque estos precios no están afectados por el pago de dividendos. Para ello se ejecuta el siguiente código, donde se guardarán los datos en el objeto pre.net.

pre.net <- ZM$ZM.Adjusted

Luego de esto, se graficará los precios ajustados. Para ello se ejecuta el siguiente código:

chartSeries(pre.net, theme = "white", name = "Precios al Cierre Ajustado")

Además, cabe resaltar que se analizarán los rendimientos de las acciones de Zoom y a partir de estos se proyectarán, por lo que se utilizará el siguiente código

rendnet <- diff(log(pre.net))

Luego se eliminará el valor NA que se obtiene a partir de la primera diferenciacion de logaritmos y se graficará la serie obtenida:

rendnet <- rendnet[-1]
chartSeries(rendnet, theme = "white", name = "Rendimientos de ZOOM")

Por lo tanto, se utilizarán los retornos de las acciones de Zoom entre el período 2019-04-01 hasta 2020-12-01 y a partir de estos, se proyectarán los retornos futuros.

EVALUACION DE POSIBLES MODELOS

En esta sección se seguirá con la metodología Box - Jenkins (1979), con el objetivo de poder identificar posibles modelos ARIMA de la serie de los retornos de las acciones de Zoom.

Por lo que, en primer lugar, se define la serie como una de serie de tiempo. Para lograrlo se ejecuta el siguiente código:

pre.ts <- ts(rendnet, start = c(2019,1), frequency = 365)

Luego, se graficaran las funciones de autocorrelación simple y autocorrelación parcial de los retornos, para eso se aplicara el siguiente código para obtener lo deseado:

acf(pre.ts, 20) #Autocorrelacion Simple
pacf(pre.ts, 20) #Autocorrelacion Parcial

Luego de tener los códigos necesario, se analizara primero la autocorrelación simple.

acf(pre.ts, 20, col = "purple", main = "Autocorrelacion Simple Rend. Zoom")

Como se observa en el grafico anterior, se podría concluir que se puede utilizar un modelo AR(1). Luego, se observan la autocorrelación parcial.

pacf(pre.ts, 20, col = "purple", main = "Autocorrelacion Simple Rend. Zoom")

Como se observa en el grafico anterior, se podría concluir que se puede utilizar un modelo MA(1). Pero continuando con la metodología Box - Jenkins, se debe analizar si esta serie es estacionaria o no. Para ello se utilizara la función adf.test el cual sirve para aplicar el test de Dickey - Fuller Aumentado.

adf.test(pre.ts)
## Warning in adf.test(pre.ts): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  pre.ts
## Dickey-Fuller = -7.9189, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary

Por lo tanto, la serie de los retornos de las acciones de Zoom no es estacionaria.

Dado que los retornos de las acciones de Zoom no es estacionaria, será necesario determinar su grado de integración con el objetivo de volver a la serie estacionaria. Para ello se obtendrá la primera diferencia de los retornos y se grafica el resultado, usando el siguiente código:

dif.ren <- diff(pre.ts)
plot(dif.ren, main = "Primera Diferencia de la serie", col = "purple")

Obtenida la primera diferenciación, se aplicará nuevamente el test de Dickey - Fuller Aumentado, para ello utilizamos la función adf.test como se muestra en el siguiente código:

adf.test(dif.ren)
## Warning in adf.test(dif.ren): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dif.ren
## Dickey-Fuller = -12.854, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary

Como se observa, la prueba estadístico nos sugiere rechazar la hipótesis nula pudiendo concluir que, al obtener las primeras diferencias de los retornos de las acciones de Zoom, esta se vuelve estacionaria. En otras palabras, la serie de los retornos de las acciones de Zoom no es estacionaria y necesita ser diferenciada para poder ser estacionaria, en otras palabras el orden de integración es 1 (\(I_{(1)}\)).

Por lo dicho, entonces continuando con la metodología Box - Jenkins, tenemos que estimar un modelo ARIMA pero para saber cómo se puede estimar dicho modelo usamos el código de Autoarima que busca el “mejor” modelo ARIMA para dicha serie de tiempo. Por eso utilizamos el siguiente código:

M1 = auto.arima(dif.ren, d=1, D=0, max.p = 12, max.q = 12, max.P = 1, max.Q = 1,
                max.d = 0, max.D = 0, stationary = FALSE, seasonal = TRUE, ic = c("bic"))
summary(M1)
## Series: dif.ren 
## ARIMA(9,1,0) 
## 
## Coefficients:
##           ar1      ar2      ar3      ar4      ar5      ar6      ar7      ar8
##       -1.6025  -1.9348  -2.0324  -1.9855  -1.7276  -1.3841  -0.9883  -0.5997
## s.e.   0.0482   0.0884   0.1212   0.1420   0.1500   0.1417   0.1208   0.0881
##           ar9
##       -0.2478
## s.e.   0.0482
## 
## sigma^2 estimated as 0.003172:  log likelihood=594.3
## AIC=-1168.61   AICc=-1168.05   BIC=-1128.54
## 
## Training set error measures:
##                        ME       RMSE        MAE      MPE     MAPE      MASE
## Training set 0.0004457064 0.05562492 0.03961543 66.91677 187.7353 0.5301663
##                     ACF1
## Training set -0.02648252

Por otro lado, se graficaran las funciones de autocorrelación simple y parcial, con el objetivo de poder sugerir otros dos modelos ARIMA. Para eso se utiliza el siguiente código:

par(mfrow=c(1,2))
acf (dif.ren, 20, col = "purple")
pacf (dif.ren, 20, col = "purple")

Como sabemos por la teoría se analiza las líneas que salen de las bandas y de acuerdo con eso se realiza un determinado número de (p) y (q) para un AR y MA respectivamente, añadiendo que la autocorrelación parcial es para el AR y la autocorrelación es para el MA.

A raíz del análisis se puede proponer dos modelos ARIMA adicionales, que serían: ARIMA(2,1,3) y ARIMA(2,1,10).

Por lo tanto, los modelos ARIMA propuestos son:

  • ARIMA(2,1,3)
  • ARIMA(2,1,10)
  • ARIMA(9,1,0)

ESTIMACION DE LOS POSIBLES MODELOS

En este apartado se va a estimar los tres modelos ARIMA tentativos del anterior apartado, los tres ARIMAS planteados fueron:

  • ARIMA(9,1,0)
  • ARIMA(2,1,3)
  • ARIMA(2,1,10)

Auto.arima

m1 = auto.arima(dif.ren, d=1, D=0, max.p = 12, max.q = 12, max.P = 1, max.Q = 1,
                max.d = 0, max.D = 0, stationary = FALSE, seasonal = TRUE, ic = c("bic"))

Modelo 2 según criterio del investigador ARIMA(2,1,3)

m2 = arima(dif.ren, order = c(2,1,3), seasonal=list(order=c(0,1,0), period=12))

Modelo 3 según criterio del investigador ARIMA(2,1,10)

m3 = arima(dif.ren, order = c(2,1,10), seasonal=list(order=c(0,1,0), period=12))

Resumen para ver los criterios de información de los modelos propuestos.

summary(m1)
## Series: dif.ren 
## ARIMA(9,1,0) 
## 
## Coefficients:
##           ar1      ar2      ar3      ar4      ar5      ar6      ar7      ar8
##       -1.6025  -1.9348  -2.0324  -1.9855  -1.7276  -1.3841  -0.9883  -0.5997
## s.e.   0.0482   0.0884   0.1212   0.1420   0.1500   0.1417   0.1208   0.0881
##           ar9
##       -0.2478
## s.e.   0.0482
## 
## sigma^2 estimated as 0.003172:  log likelihood=594.3
## AIC=-1168.61   AICc=-1168.05   BIC=-1128.54
## 
## Training set error measures:
##                        ME       RMSE        MAE      MPE     MAPE      MASE
## Training set 0.0004457064 0.05562492 0.03961543 66.91677 187.7353 0.5301663
##                     ACF1
## Training set -0.02648252
summary(m2)
## 
## Call:
## arima(x = dif.ren, order = c(2, 1, 3), seasonal = list(order = c(0, 1, 0), period = 12))
## 
## Coefficients:
##           ar1     ar2      ma1      ma2     ma3
##       -0.8667  0.0158  -1.0096  -0.9791  0.9897
## s.e.   0.0513  0.0511   0.0163   0.0236  0.0162
## 
## sigma^2 estimated as 0.004004:  log likelihood = 518.94,  aic = -1025.88
## 
## Training set error measures:
##                        ME       RMSE        MAE       MPE     MAPE      MASE
## Training set 0.0001218918 0.06225602 0.04312082 -212.9135 622.3746 0.5367143
##                      ACF1
## Training set -0.009296551
summary(m3)
## 
## Call:
## arima(x = dif.ren, order = c(2, 1, 10), seasonal = list(order = c(0, 1, 0), 
##     period = 12))
## 
## Coefficients:
## Warning in sqrt(diag(x$var.coef)): Se han producido NaNs
##           ar1      ar2      ma1      ma2      ma3     ma4      ma5      ma6
##       -1.4480  -0.6558  -0.3641  -1.5009  -0.0296  0.8811  -0.0364  -0.3630
## s.e.   0.0678   0.0737   0.0555   0.0660   0.1262  0.1041   0.1382   0.0881
##          ma7     ma8     ma9     ma10
##       0.1739  0.5779  0.1797  -0.5184
## s.e.  0.0870     NaN  0.0453      NaN
## 
## sigma^2 estimated as 0.00342:  log likelihood = 547.21,  aic = -1068.41
## 
## Training set error measures:
##                       ME       RMSE       MAE       MPE     MAPE      MASE
## Training set -0.00293449 0.05754151 0.0402802 -107.6879 445.0334 0.5013579
##                     ACF1
## Training set -0.02516645

Se puede observar en el resumen de los tres modelos tentativos, el criterio de información de AIC(AKAIKE), es una medida de la calidad relativa de un modelo estadístico, para un conjunto dado de datos. Como tal, el AIC proporciona un medio para la selección del modelo. AIC maneja un trade-off entre la bondad de ajuste del modelo y la complejidad del modelo. Se basa en la entropía de información: se ofrece una estimación relativa de la información perdida cuando se utiliza un modelo determinado para representar el proceso que genera los datos. AIC no proporciona una prueba de un modelo en el sentido de probar una hipótesis nula, es decir AIC no puede decir nada acerca de la calidad del modelo en un sentido absoluto. Si todos los modelos candidatos encajan mal, AIC no dará ningún aviso de ello.

Para el primer modelo se tiene un AIC de -1168.61, considerando que este modelo es un ARIMA(9,1,0), este fue obtenido por el autoarima. El segundo modelo de ARIMA(2,1,3)(0,1,0), tiene un AIC de -1025.88 este es mucho mayor al primer modelo que nos dio al ejecutar el autoarima, el tercer modelo que es un ARIMA(2,1,10)(0,1,0), tiene un AIC de -1068.41, en este caso dado a los criterios de información se seleccionó el modelo ARIMA(9,1,0), se va preferir siempre el que tenga menor criterio de información en este caso el primer modelo.

IDENTIFICACION DE LOS MODELOS GARCH

Ahora se verificará la existencia de clúster de volatilidad y identificaremos los modelos GARCH candidato. Para lo cual se puede realizar lo siguiente:

  • Observe el correlograma de los residuos al cuadrado.
  • Verifique los errores estandarizados.

Antes de observar el correlograma de los residuos al cuadrado, se, se observará los test para ver la normalidad de los residuos del modelo m1

checkresiduals(m1)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(9,1,0)
## Q* = 92.121, df = 72, p-value = 0.05521
## 
## Model df: 9.   Total lags used: 81
jb.norm.test(m1$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  m1$residuals
## JB = 456.05, p-value < 2.2e-16
par(mfrow=c(1,2))
acf(m1$residuals, main="ACF de los Residuos");
pacf(m1$residuals, main="PACF de los Residuos")

par(mfrow=c(1,1))

Se puede observar que los errores no siguen una distribución normal, dado que se rechaza la H0 porque el p-value es muy pequeño menor al 0.05 por lo que se acepta la hipótesis alternativa, los errores no siguen una distribución normal. Con el test de Ljung-Box test, se puede concluir que que hay autocorrelacion de los errores.

Verificamos si hay clusters de volatilidad

par(mfrow=c(1,2))
acf(m1$residuals^2, main="ACF de los Residuos al Cuadrado");
pacf(m1$residuals^2, main="PACF de los Residuos al Cuadrado")

par(mfrow=c(1,1))

Como se identificaron clusters de volatilidad, procederemos a seleccionar modelos GARCH candidatos, dónde se utiliza ugarchspec para espicificar el modelo, en este caso se estima el modelo GRACH normal por ello se ejecuta sGARCH, en base al modelo arma(9,0) que habiamos seleccionado previamente y ugarchfit para estimar el modelo. Además, se evalua el GARCH, q de 1 hasta 2 y de gual forma para el orden p de 1 hasta 2, Se estimará el modelo el GARCH11, GARCH12, GARCH21 y GARCH22, de los cuales se elegirá el que tenga el menor criterio de información.

GARCH.Mods = list() #Para almacenar modelos
GARCH.Fit  = list() #Para guardar los ajustados
GARCH.BIC  = list() #Para guardar los criterios de informacion
for (q in 1:2) {
  for (p in 1:2) {
    GARCH.Mods[[paste("GARCH",q,p, sep = "")]] = ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(q,p)),
                                                            mean.model = list(armaOrder = c(9,0)))
    
    GARCH.Fit[[paste("GARCH",q,p, sep = "")]] = ugarchfit(spec = GARCH.Mods[[paste("GARCH",q,p, sep = "")]], data = rendnet)
    
    GARCH.BIC[[paste("GARCH",q,p, sep = "")]] = infocriteria(GARCH.Fit[[paste("GARCH",q,p, sep = "")]])
    GARCH.BIC[[paste("GARCH",q,p, sep = "")]] = GARCH.BIC[[paste("GARCH",q,p, sep = "")]][2,1]
  }
}

GARCH.BIC = as.data.frame(GARCH.BIC) #defino el objeto como data frame
colnames(GARCH.BIC[match(min(GARCH.BIC), GARCH.BIC)]) #Buscar el valor mínimo.
## [1] "GARCH11"

Se oberva que el mejor modelo con el menor criterio de información es el GARCH (1,1).

Verificamos que los residuos estandarizados están limpios de clusters de volatilidad

par(mfrow=c(2,2))
acf(residuals(GARCH.Fit$GARCH11, standardize=TRUE), main="ACF de los Residuos");
pacf(residuals(GARCH.Fit$GARCH11, standardize=TRUE), main="PACF de los Residuos")
acf(residuals(GARCH.Fit$GARCH11, standardize=TRUE)^2, main="ACF de los Residuos al Cuadrado");
pacf(residuals(GARCH.Fit$GARCH11, standardize=TRUE)^2, main="PACF de los Residuos al Cuadrado")

par(mfrow=c(1,1))       
Box.test(residuals(GARCH.Fit$GARCH11, standardize=TRUE), lag = 10, type = c("Ljung-Box"), fitdf = 0)
## 
##  Box-Ljung test
## 
## data:  residuals(GARCH.Fit$GARCH11, standardize = TRUE)
## X-squared = 1.7569, df = 10, p-value = 0.9979

Se puede observar que según el test de Box-Ljung ya no existe problemas de autocorrelación entre los residuos estandarizados ya que el p-value es 0.9979 mayor al 0.05, por lo que se acepta la hipótesis nula. Por otro lado, observando los correlogramas de los residuos al cuadrado, se observa que no salen de las bandas de confianza y se confirma que no exite problemas de autocorrelción y mucho menos de volatilidad.

Prueba de existencia de asimetría en la NIC (Curva de impacto de noticias)

GARCH.Fit$GARCH11 #Prueba de signo
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(9,0,0)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error   t value Pr(>|t|)
## mu      0.003402    0.001790  1.900633 0.057350
## ar1     0.013530    0.063111  0.214384 0.830247
## ar2    -0.064659    0.052297 -1.236376 0.216319
## ar3    -0.038695    0.045637 -0.847886 0.396502
## ar4    -0.046479    0.046035 -1.009655 0.312661
## ar5     0.029834    0.046287  0.644552 0.519217
## ar6    -0.047613    0.044501 -1.069920 0.284655
## ar7    -0.023838    0.040872 -0.583245 0.559728
## ar8    -0.000463    0.043194 -0.010717 0.991449
## ar9     0.014592    0.043977  0.331805 0.740036
## omega   0.001396    0.000199  7.015368 0.000000
## alpha1  0.409473    0.105794  3.870490 0.000109
## beta1   0.000000    0.084374  0.000000 1.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error   t value Pr(>|t|)
## mu      0.003402    0.001973  1.724348 0.084645
## ar1     0.013530    0.058182  0.232548 0.816113
## ar2    -0.064659    0.061111 -1.058047 0.290034
## ar3    -0.038695    0.042081 -0.919524 0.357821
## ar4    -0.046479    0.055965 -0.830505 0.406253
## ar5     0.029834    0.049749  0.599690 0.548713
## ar6    -0.047613    0.045421 -1.048262 0.294518
## ar7    -0.023838    0.036491 -0.653267 0.513584
## ar8    -0.000463    0.047839 -0.009676 0.992280
## ar9     0.014592    0.039424  0.370122 0.711291
## omega   0.001396    0.000286  4.883680 0.000001
## alpha1  0.409473    0.223244  1.834197 0.066625
## beta1   0.000000    0.083781  0.000000 1.000000
## 
## LogLikelihood : 695.7878 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -3.3470
## Bayes        -3.2192
## Shibata      -3.3489
## Hannan-Quinn -3.2964
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                      0.5919  0.4417
## Lag[2*(p+q)+(p+q)-1][26]    9.8201  1.0000
## Lag[4*(p+q)+(p+q)-1][44]   24.3185  0.2891
## d.o.f=9
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                   0.001153  0.9729
## Lag[2*(p+q)+(p+q)-1][5]  0.660648  0.9303
## Lag[4*(p+q)+(p+q)-1][9]  1.196047  0.9766
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]   0.06093 0.500 2.000  0.8050
## ARCH Lag[5]   0.69079 1.440 1.667  0.8263
## ARCH Lag[7]   0.96593 2.315 1.543  0.9190
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.5831
## Individual Statistics:              
## mu     0.30684
## ar1    0.10435
## ar2    0.31814
## ar3    0.10013
## ar4    0.16149
## ar5    0.08168
## ar6    0.11119
## ar7    0.03825
## ar8    0.26959
## ar9    0.62735
## omega  0.25284
## alpha1 0.16861
## beta1  0.41353
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          2.89 3.15 3.69
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias          0.78999 0.4300    
## Negative Sign Bias 0.49193 0.6230    
## Positive Sign Bias 0.07579 0.9396    
## Joint Effect       2.53809 0.4684    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     39.94     0.003331
## 2    30     51.71     0.005878
## 3    40     60.24     0.016098
## 4    50     58.42     0.167734
## 
## 
## Elapsed time : 0.5019479

test de signs es signitivo, por lo que es necesario analizar los modelos EGARH o TGARH

NIC.GARCH11 = newsimpact(GARCH.Fit$GARCH11)
plot(NIC.GARCH11$zx, NIC.GARCH11$zy, type="l", lwd=2, col="blue",
     main="GARCH(1,1) - News Impact", ylab=NIC.GARCH11$yexpr, xlab=NIC.GARCH11$xexpr)

Dado que la NIC resultó simétrica (y el test de signos nos indica que es asimétrica), se procederá a estimar una extensión del modelo GARCH que capture los efectos asimétricos de los choques. Estimaremos un EGARCH y un TGARCH (GJR)

EGARCH.Spec = ugarchspec(variance.model = list(model = "eGARCH", garchOrder = c(1,1)),
                         mean.model = list(armaOrder = c(9,0)))

EGARCH.Fit  = ugarchfit(EGARCH.Spec, data = rendnet)


TGARCH.Spec = ugarchspec(variance.model = list(model = "fGARCH", submodel = "TGARCH", garchOrder = c(1,1)),
                         mean.model = list(armaOrder = c(9,0)))

TGARCH.Fit  = ugarchfit(TGARCH.Spec, data = rendnet)


NIC.EGARCH11 = newsimpact(EGARCH.Fit) #creamos NIC 
NIC.TGARCH11 =newsimpact(TGARCH.Fit)
par(mfrow = c(1,1))
plot(NIC.GARCH11$zx, NIC.GARCH11$zy, type="l", lwd=2, col = "blue", ylab=NIC.GARCH11$yexpr, xlab=NIC.GARCH11$xexpr, ylim = c(0,0.009))
par(new = TRUE)
plot(NIC.EGARCH11$zx, NIC.EGARCH11$zy, ylab="", xlab="", type="l", lwd=2, col = "red", ylim = c(0,0.009))
par(new = TRUE)
plot(NIC.TGARCH11$zx, NIC.TGARCH11$zy, ylab="", xlab="", type="l", lwd=2, col = "green2", ylim = c(0,0.009))
title(main = "News Impact Curve", font.main = 4)          
grid()
box()
legend(x = 0.15, y = 0.008, legend = c("GARCH", "EGARCH", "TGARCH"), fill = c("blue", "red", "green2"), cex = 0.9)

Verificamos normalidad del error con el test de Jarque-Bera y si el error estandarizado no es normal, entonces cambiamos la distribución a una t-student o una GED

Para el modelo TGARCH

jb.norm.test(residuals(TGARCH.Fit, standardize = TRUE))
## 
##  Jarque-Bera test for normality
## 
## data:  residuals(TGARCH.Fit, standardize = TRUE)
## JB = 149.16, p-value < 2.2e-16

Como JB rechaza h0, cambio al distribución: std: “Student”, sstd: “GED”

TGARCH.Spec = ugarchspec(variance.model = list(model = "fGARCH", submodel = "TGARCH", garchOrder = c(1,1)),
                         mean.model = list(armaOrder = c(9,0)), distribution.model = "sstd")

TGARCH.Fit  = ugarchfit(TGARCH.Spec, data = rendnet)

TGARCH.Fit
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : fGARCH(1,1)
## fGARCH Sub-Model : TGARCH
## Mean Model   : ARFIMA(9,0,0)
## Distribution : sstd 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.005169    0.001437  3.59752 0.000321
## ar1    -0.016967    0.051942 -0.32665 0.743933
## ar2    -0.058315    0.047145 -1.23694 0.216110
## ar3    -0.012681    0.023508 -0.53942 0.589598
## ar4    -0.039725    0.043608 -0.91094 0.362327
## ar5     0.010598    0.042665  0.24841 0.803819
## ar6    -0.038739    0.038709 -1.00078 0.316935
## ar7    -0.011443    0.040077 -0.28552 0.775244
## ar8    -0.018216    0.039619 -0.45977 0.645680
## ar9     0.035278    0.037858  0.93184 0.351417
## omega   0.010220    0.008634  1.18364 0.236554
## alpha1  0.225423    0.112551  2.00285 0.045193
## beta1   0.614029    0.256301  2.39574 0.016587
## eta11  -0.279909    0.226479 -1.23592 0.216490
## skew    1.080165    0.068942 15.66779 0.000000
## shape   4.050916    0.784778  5.16186 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.005169    0.001750  2.95464 0.003130
## ar1    -0.016967    0.050361 -0.33690 0.736190
## ar2    -0.058315    0.049514 -1.17774 0.238900
## ar3    -0.012681    0.019343 -0.65556 0.512107
## ar4    -0.039725    0.048792 -0.81416 0.415552
## ar5     0.010598    0.053278  0.19892 0.842321
## ar6    -0.038739    0.039011 -0.99304 0.320688
## ar7    -0.011443    0.035495 -0.32237 0.747170
## ar8    -0.018216    0.053859 -0.33821 0.735205
## ar9     0.035278    0.036428  0.96842 0.332835
## omega   0.010220    0.017614  0.58021 0.561772
## alpha1  0.225423    0.204885  1.10024 0.271227
## beta1   0.614029    0.518478  1.18429 0.236298
## eta11  -0.279909    0.245924 -1.13820 0.255039
## skew    1.080165    0.077188 13.99391 0.000000
## shape   4.050916    0.847555  4.77953 0.000002
## 
## LogLikelihood : 726.818 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -3.4844
## Bayes        -3.3271
## Shibata      -3.4873
## Hannan-Quinn -3.4222
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       2.480  0.1153
## Lag[2*(p+q)+(p+q)-1][26]     9.444  1.0000
## Lag[4*(p+q)+(p+q)-1][44]    20.829  0.6684
## d.o.f=9
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.8858  0.3466
## Lag[2*(p+q)+(p+q)-1][5]    1.9988  0.6187
## Lag[4*(p+q)+(p+q)-1][9]    2.5243  0.8341
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.3516 0.500 2.000  0.5532
## ARCH Lag[5]    0.5447 1.440 1.667  0.8703
## ARCH Lag[7]    0.8514 2.315 1.543  0.9365
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.6892
## Individual Statistics:              
## mu     0.38197
## ar1    0.07744
## ar2    0.28658
## ar3    0.02578
## ar4    0.30206
## ar5    0.03829
## ar6    0.07500
## ar7    0.04420
## ar8    0.16838
## ar9    0.33104
## omega  0.15281
## alpha1 0.17723
## beta1  0.13944
## eta11  0.10431
## skew   0.03924
## shape  0.21040
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          3.46 3.75 4.3
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias          0.94018 0.3477    
## Negative Sign Bias 0.09512 0.9243    
## Positive Sign Bias 0.48532 0.6277    
## Joint Effect       2.64072 0.4504    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     21.02       0.3357
## 2    30     30.38       0.3951
## 3    40     39.84       0.4324
## 4    50     49.35       0.4590
## 
## 
## Elapsed time : 1.482056

Para el modelo EGARCH

jb.norm.test(residuals(EGARCH.Fit, standardize = TRUE))                    
## 
##  Jarque-Bera test for normality
## 
## data:  residuals(EGARCH.Fit, standardize = TRUE)
## JB = 148.8, p-value < 2.2e-16
EGARCH.Spec = ugarchspec(variance.model = list(model = "eGARCH", garchOrder = c(1,1)),
                         mean.model = list(armaOrder = c(9,0)), distribution.model = "sstd")

EGARCH.Fit  = ugarchfit(EGARCH.Spec, data = rendnet)
EGARCH.Fit
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(1,1)
## Mean Model   : ARFIMA(9,0,0)
## Distribution : sstd 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.003448    0.001083  3.18460 0.001450
## ar1    -0.040939    0.048749 -0.83980 0.401021
## ar2    -0.049776    0.048095 -1.03495 0.300694
## ar3    -0.015079    0.041756 -0.36112 0.718008
## ar4    -0.055804    0.045219 -1.23407 0.217177
## ar5    -0.007641    0.038628 -0.19782 0.843187
## ar6    -0.035764    0.054566 -0.65542 0.512195
## ar7    -0.007878    0.043225 -0.18227 0.855373
## ar8    -0.026898    0.041862 -0.64253 0.520531
## ar9     0.037853    0.040609  0.93213 0.351268
## omega  -0.282716    0.093966 -3.00870 0.002624
## alpha1  0.043510    0.038528  1.12933 0.258760
## beta1   0.955357    0.014689 65.04006 0.000000
## gamma1  0.162616    0.067209  2.41956 0.015539
## skew    1.017719    0.053921 18.87440 0.000000
## shape   3.908284    0.709718  5.50681 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.003448    0.001510  2.28259 0.022454
## ar1    -0.040939    0.055652 -0.73563 0.461953
## ar2    -0.049776    0.059039 -0.84310 0.399175
## ar3    -0.015079    0.041275 -0.36533 0.714865
## ar4    -0.055804    0.049960 -1.11696 0.264013
## ar5    -0.007641    0.062252 -0.12275 0.902305
## ar6    -0.035764    0.081466 -0.43900 0.660659
## ar7    -0.007878    0.041577 -0.18949 0.849708
## ar8    -0.026898    0.044690 -0.60186 0.547264
## ar9     0.037853    0.032535  1.16345 0.244647
## omega  -0.282716    0.061792 -4.57532 0.000005
## alpha1  0.043510    0.041945  1.03732 0.299585
## beta1   0.955357    0.009708 98.41301 0.000000
## gamma1  0.162616    0.080376  2.02319 0.043053
## skew    1.017719    0.074685 13.62676 0.000000
## shape   3.908284    0.803168  4.86609 0.000001
## 
## LogLikelihood : 729.3022 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -3.4966
## Bayes        -3.3393
## Shibata      -3.4995
## Hannan-Quinn -3.4343
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       2.481  0.1152
## Lag[2*(p+q)+(p+q)-1][26]     8.869  1.0000
## Lag[4*(p+q)+(p+q)-1][44]    19.725  0.7800
## d.o.f=9
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.467  0.2258
## Lag[2*(p+q)+(p+q)-1][5]     2.015  0.6148
## Lag[4*(p+q)+(p+q)-1][9]     2.551  0.8301
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.3778 0.500 2.000  0.5388
## ARCH Lag[5]    0.5337 1.440 1.667  0.8736
## ARCH Lag[7]    0.9102 2.315 1.543  0.9277
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.832
## Individual Statistics:              
## mu     0.40749
## ar1    0.16505
## ar2    0.26365
## ar3    0.04035
## ar4    0.28712
## ar5    0.04193
## ar6    0.11975
## ar7    0.04785
## ar8    0.13243
## ar9    0.42689
## omega  0.11331
## alpha1 0.17566
## beta1  0.12224
## gamma1 0.02865
## skew   0.04817
## shape  0.16902
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          3.46 3.75 4.3
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.4078 0.6836    
## Negative Sign Bias  0.3539 0.7236    
## Positive Sign Bias  1.5146 0.1307    
## Joint Effect        4.0241 0.2589    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     23.96       0.1977
## 2    30     33.62       0.2535
## 3    40     38.67       0.4849
## 4    50     59.65       0.1418
## 
## 
## Elapsed time : 0.595001

Agrupando las volatilidades estimadas por cada uno de los modelos.

GARCH.Vol = cbind(GARCH.Fit$GARCH11@fit$sigma, TGARCH.Fit@fit$sigma, EGARCH.Fit@fit$sigma)

GARCH.Vol = xts(GARCH.Vol, order.by = index(rendnet))
names(GARCH.Vol) = c("GARCH", "TGARCH", "EGARCH")            

chart.TimeSeries(GARCH.Vol$GARCH, main = "Volatilidad GARCH(1,1)", lwd = 1)

chart.TimeSeries(GARCH.Vol$TGARCH, main = "Volatilidad TGARCH(1,1)", lwd = 1)

chart.TimeSeries(GARCH.Vol$EGARCH, main = "Volatilidad EGARCH(1,1)", lwd = 1)

chart.TimeSeries(GARCH.Vol, main = "Volatilidades estimadas", legend.loc = "topleft", lwd = 1)

EGARCH.Fit
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : eGARCH(1,1)
## Mean Model   : ARFIMA(9,0,0)
## Distribution : sstd 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.003448    0.001083  3.18460 0.001450
## ar1    -0.040939    0.048749 -0.83980 0.401021
## ar2    -0.049776    0.048095 -1.03495 0.300694
## ar3    -0.015079    0.041756 -0.36112 0.718008
## ar4    -0.055804    0.045219 -1.23407 0.217177
## ar5    -0.007641    0.038628 -0.19782 0.843187
## ar6    -0.035764    0.054566 -0.65542 0.512195
## ar7    -0.007878    0.043225 -0.18227 0.855373
## ar8    -0.026898    0.041862 -0.64253 0.520531
## ar9     0.037853    0.040609  0.93213 0.351268
## omega  -0.282716    0.093966 -3.00870 0.002624
## alpha1  0.043510    0.038528  1.12933 0.258760
## beta1   0.955357    0.014689 65.04006 0.000000
## gamma1  0.162616    0.067209  2.41956 0.015539
## skew    1.017719    0.053921 18.87440 0.000000
## shape   3.908284    0.709718  5.50681 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.003448    0.001510  2.28259 0.022454
## ar1    -0.040939    0.055652 -0.73563 0.461953
## ar2    -0.049776    0.059039 -0.84310 0.399175
## ar3    -0.015079    0.041275 -0.36533 0.714865
## ar4    -0.055804    0.049960 -1.11696 0.264013
## ar5    -0.007641    0.062252 -0.12275 0.902305
## ar6    -0.035764    0.081466 -0.43900 0.660659
## ar7    -0.007878    0.041577 -0.18949 0.849708
## ar8    -0.026898    0.044690 -0.60186 0.547264
## ar9     0.037853    0.032535  1.16345 0.244647
## omega  -0.282716    0.061792 -4.57532 0.000005
## alpha1  0.043510    0.041945  1.03732 0.299585
## beta1   0.955357    0.009708 98.41301 0.000000
## gamma1  0.162616    0.080376  2.02319 0.043053
## skew    1.017719    0.074685 13.62676 0.000000
## shape   3.908284    0.803168  4.86609 0.000001
## 
## LogLikelihood : 729.3022 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -3.4966
## Bayes        -3.3393
## Shibata      -3.4995
## Hannan-Quinn -3.4343
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       2.481  0.1152
## Lag[2*(p+q)+(p+q)-1][26]     8.869  1.0000
## Lag[4*(p+q)+(p+q)-1][44]    19.725  0.7800
## d.o.f=9
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                      1.467  0.2258
## Lag[2*(p+q)+(p+q)-1][5]     2.015  0.6148
## Lag[4*(p+q)+(p+q)-1][9]     2.551  0.8301
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.3778 0.500 2.000  0.5388
## ARCH Lag[5]    0.5337 1.440 1.667  0.8736
## ARCH Lag[7]    0.9102 2.315 1.543  0.9277
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.832
## Individual Statistics:              
## mu     0.40749
## ar1    0.16505
## ar2    0.26365
## ar3    0.04035
## ar4    0.28712
## ar5    0.04193
## ar6    0.11975
## ar7    0.04785
## ar8    0.13243
## ar9    0.42689
## omega  0.11331
## alpha1 0.17566
## beta1  0.12224
## gamma1 0.02865
## skew   0.04817
## shape  0.16902
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          3.46 3.75 4.3
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias           0.4078 0.6836    
## Negative Sign Bias  0.3539 0.7236    
## Positive Sign Bias  1.5146 0.1307    
## Joint Effect        4.0241 0.2589    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     23.96       0.1977
## 2    30     33.62       0.2535
## 3    40     38.67       0.4849
## 4    50     59.65       0.1418
## 
## 
## Elapsed time : 0.595001
TGARCH.Fit
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : fGARCH(1,1)
## fGARCH Sub-Model : TGARCH
## Mean Model   : ARFIMA(9,0,0)
## Distribution : sstd 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.005169    0.001437  3.59752 0.000321
## ar1    -0.016967    0.051942 -0.32665 0.743933
## ar2    -0.058315    0.047145 -1.23694 0.216110
## ar3    -0.012681    0.023508 -0.53942 0.589598
## ar4    -0.039725    0.043608 -0.91094 0.362327
## ar5     0.010598    0.042665  0.24841 0.803819
## ar6    -0.038739    0.038709 -1.00078 0.316935
## ar7    -0.011443    0.040077 -0.28552 0.775244
## ar8    -0.018216    0.039619 -0.45977 0.645680
## ar9     0.035278    0.037858  0.93184 0.351417
## omega   0.010220    0.008634  1.18364 0.236554
## alpha1  0.225423    0.112551  2.00285 0.045193
## beta1   0.614029    0.256301  2.39574 0.016587
## eta11  -0.279909    0.226479 -1.23592 0.216490
## skew    1.080165    0.068942 15.66779 0.000000
## shape   4.050916    0.784778  5.16186 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu      0.005169    0.001750  2.95464 0.003130
## ar1    -0.016967    0.050361 -0.33690 0.736190
## ar2    -0.058315    0.049514 -1.17774 0.238900
## ar3    -0.012681    0.019343 -0.65556 0.512107
## ar4    -0.039725    0.048792 -0.81416 0.415552
## ar5     0.010598    0.053278  0.19892 0.842321
## ar6    -0.038739    0.039011 -0.99304 0.320688
## ar7    -0.011443    0.035495 -0.32237 0.747170
## ar8    -0.018216    0.053859 -0.33821 0.735205
## ar9     0.035278    0.036428  0.96842 0.332835
## omega   0.010220    0.017614  0.58021 0.561772
## alpha1  0.225423    0.204885  1.10024 0.271227
## beta1   0.614029    0.518478  1.18429 0.236298
## eta11  -0.279909    0.245924 -1.13820 0.255039
## skew    1.080165    0.077188 13.99391 0.000000
## shape   4.050916    0.847555  4.77953 0.000002
## 
## LogLikelihood : 726.818 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -3.4844
## Bayes        -3.3271
## Shibata      -3.4873
## Hannan-Quinn -3.4222
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                          statistic p-value
## Lag[1]                       2.480  0.1153
## Lag[2*(p+q)+(p+q)-1][26]     9.444  1.0000
## Lag[4*(p+q)+(p+q)-1][44]    20.829  0.6684
## d.o.f=9
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.8858  0.3466
## Lag[2*(p+q)+(p+q)-1][5]    1.9988  0.6187
## Lag[4*(p+q)+(p+q)-1][9]    2.5243  0.8341
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.3516 0.500 2.000  0.5532
## ARCH Lag[5]    0.5447 1.440 1.667  0.8703
## ARCH Lag[7]    0.8514 2.315 1.543  0.9365
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  2.6892
## Individual Statistics:              
## mu     0.38197
## ar1    0.07744
## ar2    0.28658
## ar3    0.02578
## ar4    0.30206
## ar5    0.03829
## ar6    0.07500
## ar7    0.04420
## ar8    0.16838
## ar9    0.33104
## omega  0.15281
## alpha1 0.17723
## beta1  0.13944
## eta11  0.10431
## skew   0.03924
## shape  0.21040
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          3.46 3.75 4.3
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value   prob sig
## Sign Bias          0.94018 0.3477    
## Negative Sign Bias 0.09512 0.9243    
## Positive Sign Bias 0.48532 0.6277    
## Joint Effect       2.64072 0.4504    
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     21.02       0.3357
## 2    30     30.38       0.3951
## 3    40     39.84       0.4324
## 4    50     49.35       0.4590
## 
## 
## Elapsed time : 1.482056

En base al criterio de información de Akaike, el modelo TGARCH sería el adecuado.

PREDICCIÓN

Elegido el modelo TGARCH ahora se procede a realizar las respectivas predicciones, para ello se ejecuta el siguiente código:

TGARCH.Forecast = ugarchforecast(TGARCH.Fit, data = SPY.Ret, n.ahead = 4)

Observaremos los datos con el siguiente código:

TGARCH.Forecast@forecast[["seriesFor"]]
##       2020-11-30
## T+1 -0.000951423
## T+2  0.004161273
## T+3  0.003070137
## T+4  0.006861612