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.
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.
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:
## 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
## 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
## [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.
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.
Luego de esto, se graficará los precios ajustados. Para ello se ejecuta el siguiente código:
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
Luego se eliminará el valor NA que se obtiene a partir de la primera diferenciacion de logaritmos y se graficará la serie obtenida:
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.
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:
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:
Luego de tener los códigos necesario, se analizara primero la autocorrelación simple.
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.
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.
## 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:
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:
## 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:
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:
En este apartado se va a estimar los tres modelos ARIMA tentativos del anterior apartado, los tres ARIMAS planteados fueron:
Resumen para ver los criterios de información de los modelos propuestos.
## 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
##
## 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
##
## 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.
Ahora se verificará la existencia de clúster de volatilidad y identificaremos los modelos GARCH candidato. Para lo cual se puede realizar lo siguiente:
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
##
## 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
##
## 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")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.
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")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).
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")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.
##
## *---------------------------------*
## * 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)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)Para el modelo TGARCH
##
## 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
##
## 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)##
## *---------------------------------*
## * 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
##
## *---------------------------------*
## * 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.
Elegido el modelo TGARCH ahora se procede a realizar las respectivas predicciones, para ello se ejecuta el siguiente código:
Observaremos los datos con el siguiente código:
## 2020-11-30
## T+1 -0.000951423
## T+2 0.004161273
## T+3 0.003070137
## T+4 0.006861612