2 votos

rugarch: Regresores externos GARCH

Actualmente estoy jugando con el gran paquete rugarch en R. Sin embargo, traté de probar la funcionalidad del regresor externo. He implementado un proceso GARCH(1,1) y lo he comparado con un proceso GARCH(0,1) al que he añadido los rendimientos cuadrados retardados como regresor externo. Los resultados deberían ser los mismos pero no lo son. ¿Alguien sabe dónde está mi error? Muchas gracias de antemano por vuestra ayuda.

library(rugarch)
library(quantmod)
getSymbols('C', from = '2000-01-01')
C = adjustOHLC(C, use.Adjusted = TRUE)
R_d = ROC(Cl(C), na.pad = FALSE)

extReg = R_d[1:length(R_d)-1]^2
spec = ugarchspec(mean.model = list(armaOrder = c(0, 0),include.mean = FALSE), variance.model = list(model = 'sGARCH', garchOrder = c(1, 1)), distribution = 'norm')
spec2 = ugarchspec(mean.model = list(armaOrder = c(0, 0),include.mean = FALSE), variance.model = list(model = 'sGARCH', garchOrder = c(0, 1),external.regressors=extReg), distribution = 'norm')

fit = ugarchfit(data = R_d[2:length(R_d),1], spec = spec)
fit2 = ugarchfit(data = R_d[2:length(R_d),1], spec = spec2)

Los coeficientes del modelo de ajuste son:

omega: 2.1038530309075e-06
alpha1: 0.0863073049030114
beta1: 0.912692551076183

Los coeficientes del modelo fit2 son:

omega: 8.17097079205033e-07
beta1: 0.999316873189476
vxreg1: 1.01005006640392e-08

0 votos

¡Excelente pregunta! He replicado tus resultados, estoy obteniendo la misma salida. Es curioso...

0 votos

Acabo de descubrir que al multiplicar los rendimientos(R_d) por 100 los coeficientes son casi idénticos. Para el ajuste del modelo : omega=2,112759, alpha1=0,086474, beta1=0,912525. Para el ajuste del modelo 2: omega=1,941635, beta1=0,912261, vxreg1=0,088643.

2voto

vinay k Puntos 21

He encontrado el error. La función ugarchfit establece automáticamente restricciones de no negatividad para todos los coeficientes- Esto tiene sentido ya que el alfa en nuestro caso no debería ser negativo. Sin embargo, al liberar la restricción a valores negativos se obtienen los resultados correctos. La única explicación que se me ocurre es que en el transcurso de la optimización se producen estimaciones de coeficientes temporalmente negativos.

setbounds(spec2)<-list(vxreg1=c(-1,1))

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X