1. DCC
(igual especificación de la varianza)
En las siguientes instrucciones se simulant dos series (x,y), solo para mostrar el uso del paquete rmgarch, combinado con rugarch y parallel, para la estimación del modelo Dynamic Conditional Correlation (DCC).
# Activa paquetes
library(rmgarch)
library(rugarch)
library(parallel)
# Simula las series
x<-rnorm(1000,1,3)*c(1:1000)+c(1:1000)
y<-rnorm(1000,1,3)*c(1:1000)
data1<-as.matrix(cbind(x,y))
plot(x, type="l")
En las
siguientes líneas, se introduce la estructura del modelo a estimar, se verifica
un modelo gjrGARCH con distribución t, para cada una
de las series consideradas.
l <- 2 #número de variables
gjrtspec <- ugarchspec(
mean.model=list(armaOrder=c(0,0)),
variance.model =list(model = "gjrGARCH"),
distribution="std")
dcc_spec = dccspec(
uspec = multispec(replicate(l, gjrtspec)),
distribution = "mvt")
# Fit DCC
garchdccfit = dccfit(dcc_spec, data1, fit.control=list(scale=TRUE))
Luego
de estimar el modelo, podemos acceder a la lista de resultados y obtener los parámetros
asociados a los modelos de volatilidad inivariados, información sobre la especificación
estimada y los criterios de información.
*---------------------------------*
* DCC GARCH Fit *
*---------------------------------*
Optimal Parameters
-----------------------------------
Estimate Std. Error t value Pr(>|t|)
[x].mu 88.018073 4.0934e-01 2.1503e+02 0.000000
[x].ar1 0.031399 4.3700e-04 7.1876e+01 0.000000
[x].omega 0.004366 2.1990e-03 1.9852e+00 0.047120
[x].alpha1 0.054871 1.9430e-03 2.8239e+01 0.000000
[x].beta1 0.945898 0.0000e+00 5.7637e+06 0.000000
[x].gamma1 -0.088033 1.3151e-01 -6.6939e-01 0.503249
[x].delta 0.091525 1.5678e-02 5.8378e+00 0.000000
[y].mu 81.424172 2.1262e+01 3.8295e+00 0.000128
[y].ar1 0.060300 3.7522e-02 1.6071e+00 0.108038
[y].ar2 0.021913 3.8664e-02 5.6675e-01 0.570888
[y].omega 1571.508757 1.0843e+03 1.4494e+00 0.147235
[y].alpha1 0.141311 2.5299e-02 5.5857e+00 0.000000
[y].beta1 0.870438 2.0259e-02 4.2965e+01 0.000000
[y].gamma1 -0.025498 3.5864e-02 -7.1094e-01 0.477120
[Joint]dcca1 0.002363 9.5070e-03 2.4860e-01 0.803672
[Joint]dccb1 0.956960 1.9858e-01 4.8191e+00 0.000001
A continuación
se muestra como recuperar la serie condicional de matrices de varianzas
covarianzas.
# Matriz Var-Cov
dcccov<-rcov(garchdccfit)
# Matrix de Corr
dcccor<-rcor(garchdccfit)
Ahora,
en el siguiente bloque de instrucciones, se utiliza un blucle e indexación numérica
de Arrays, para recuperar la serie de volatilidad condicional, guardada en
Sigma.
x y
x 484311.21 13967.32
y 13967.32 3262974.28
En este
aspectos, como obtenemos T matrices, cada una de las cuales guarda el valor
modelado de los momentos para el día correspondiente, [1,1,] corresponde a la
varianza del primer a la varianza de la primera serie; por lo que, mediante indexación
de arrays podemos acceder a los componentes de las matrices de varianzas
covarinzas y de correlaciones que hemos guardado anteriormente.
Una
alternativa a la anterior, es utilizar un bucle un contador i, que recorra las
T observaciones, correspondiente a la dimensión de las variables en cuestión.
Accediendo a la posición de la matriz que resulte de interés.
# Recuperar, serie temporal a partir de la estructura array
vol1<-c()
T<-1000
for (i in 1:T){
vol1<-c(vol1, dcccov[1,1,i])
}
plot(vol1, type="l")
2. DCC
(diferentes especificaciones de la varianza)
En el
ejemplo anterior se consideraba que ambas series seguían el mismo proceso de
varianzas, cuestión que puede ser cuestionable en muchos procedimientos empíricos,
por lo que, en el próximo ejemplo, se muestra cómo se pueden realizar
especificaciones de varianzas distintas para cada una de las n-variables
consideradas.
mean.model = list(armaOrder = c(1,0)),
variance.model = list(model = "apARCH"),
distribution.model = "norm")
uspec2 = ugarchspec(
mean.model = list(armaOrder = c(2,0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "norm")
uspec = c(uspec1, uspec2)
spec = dccspec(uspec = multispec( uspec ),
dccOrder = c(1,1),
distribution = "mvlaplace")
garchdccfit = dccfit(spec, d ata1, fit.control=list(scale=TRUE))
garchdccfit
# ------------------------------- *
library(mgarchBEKK)
estimated <- BEKK(data1)
estimated$est.params
$`1`
[,1] [,2]
[1,] 3.663613 -8.176183
[2,] 0.000000 24.878929
$`2`
[,1] [,2]
[1,] 0.1539364 0.09550136
[2,] -0.1657275 0.09612336
$`3`
[,1] [,2]
[1,] -0.1222077 0.9859749
[2,] 0.9703889 0.1276075
#Errores de los coeficientes
estimated$asy.se.coef
# ------------------------------- *
estimated$cor[[1]][[2]]
estimated$sd[[1]]
estimated$uncond.cov.matrix
estimated$aic
estimated$order
# ------------------------------- *
estimated1 <- mGJR(x,y)
# Parámetros y errores asintóticos
estimated1$est.params
$`1`
[,1] [,2]
[1,] 2.335441 -2.395821
[2,] 0.000000 30.064757
$`2`
[,1] [,2]
[1,] 0.1503465 -0.01745010
[2,] -0.1305680 -0.03214134
$`3`
[,1] [,2]
[1,] 1.0032073 0.1680627
[2,] -0.2073904 0.9359224
$`4`
[,1] [,2]
[1,] 0.1016553 0.2527250
[2,] 0.1800089 -0.1394926
$`5`
[1] -0.3211898
estimated1$asy.se.coef
# ------------------------------- *
estimated1$cor
estimated1$sd1
estimated1$sd2
estimated1$uncond.cov.matrix
estimated1$resid1
dccOrder = c(1,1),
distribution = "mvlaplace")
garchdccfit = dccfit(spec, d ata1, fit.control=list(scale=TRUE))
garchdccfit
3. MGARCH-BEKK
El
paquete mgarchBEKK permite la estimación del modelo
mGARCH-BEKK, para las matrices C, A y B respectivamente. Por tanto, como B
recoge el efecto hoy de la matriz sigma en el periodo anterior, los
coeficientes fuera de su diagonal principal brindan una aproximación de la interacción
entre las volatilidades del mercado. Los estadísticos de prueba de significación
se pueden obtener utilizando los errores asintóticos, guardados en:
library(mgarchBEKK)
estimated <- BEKK(data1)
estimated$est.params
$`1`
[,1] [,2]
[1,] 3.663613 -8.176183
[2,] 0.000000 24.878929
$`2`
[,1] [,2]
[1,] 0.1539364 0.09550136
[2,] -0.1657275 0.09612336
$`3`
[,1] [,2]
[1,] -0.1222077 0.9859749
[2,] 0.9703889 0.1276075
#Errores de los coeficientes
estimated$asy.se.coef
Los
momentos condicionales de la relación entre las variables (estimated$cor), así como las series de
volatilidad condicional (estimated$sd), se pueden recuperar:
estimated$cor[[1]][[2]]
estimated$sd[[1]]
estimated$uncond.cov.matrix
estimated$aic
estimated$order
4. gjrBEKK
GARCH
El
paquete mgarchBEKK también permite la estimación del
modelo BEKK asimétrico, que incluye una variables binarias (1 cuando el residuo
es negativo) que interactúan con el residuo correspondiente de forma tal que
permiten considerar un efecto diferenciado del retorno asociado, dependiendo
del signo del mismo. En el caso de los coeficientes (estimated1$est.params), verifique que aparece una nueva
matriz, que corresponde a la matriz cuadradada asociada a los diferenciales de
pendiente.
estimated1 <- mGJR(x,y)
# Parámetros y errores asintóticos
estimated1$est.params
$`1`
[,1] [,2]
[1,] 2.335441 -2.395821
[2,] 0.000000 30.064757
$`2`
[,1] [,2]
[1,] 0.1503465 -0.01745010
[2,] -0.1305680 -0.03214134
$`3`
[,1] [,2]
[1,] 1.0032073 0.1680627
[2,] -0.2073904 0.9359224
$`4`
[,1] [,2]
[1,] 0.1016553 0.2527250
[2,] 0.1800089 -0.1394926
$`5`
[1] -0.3211898
estimated1$asy.se.coef
Las
correlaciones y las varianzas, tantos condicionales como incondicionales, se
pueden obtener a partir de la siguiente representación:
estimated1$cor
estimated1$sd1
estimated1$sd2
estimated1$uncond.cov.matrix
estimated1$resid1
Referencias
·
Ghalanos,
Alexios (2019). Multivariate GARCH Models. Package ‘rmgarch’.
Repository CRAN. Date/Publication 2019-01-15 05:40:03 UTC. https://cran.r-project.org/web/packages/rmgarch/rmgarch.pdf.
·
Ghalanos,
Alexios (2019). The rmgarch models: background and
properties. (version 1.3.0). https://cran.r-project.org/web/packages/rmgarch/vignettes/The_rmgarch_models.pdf.
·
Orskaug,
Elisabeth (2009). Multivariate DCC-GARCH Model -With Various
Error Distributions. Norwegian University Of Science and Technology. Department
of Mathematical Sciences.
·
Schmidbauer,
Harald; Roesch, Angi; and Tunalioglu, Vehbi
(2016). Simulating, Estimating and Diagnosing MGARCH (BEKK and mGJR) Processes.
Package ‘mgarchBEKK’. Date/Publication 2016-04-10 00:49:46. https://cran.r-roject.org/web/packages/mgarchBEKK/mgarchBEKK.pdf.