He ajustado un modelo ARIMA(1,1,1)-GARCH(1,1) a las series temporales de los precios logarítmicos del tipo de cambio AUD/USD muestreados a intervalos de un minuto a lo largo de varios años, lo que me ha proporcionado más de dos millones de puntos de datos para estimar el modelo. El conjunto de datos está disponible aquí . Para mayor claridad, se trata de un modelo ARMA-GARCH ajustado a los rendimientos logarítmicos debido a la integración de primer orden de los precios logarítmicos. La serie temporal original del AUD/USD tiene el siguiente aspecto:
A continuación, intenté simular una serie temporal basada en el modelo ajustado, lo que me dio lo siguiente:
Espero y deseo que la serie temporal simulada sea diferente de la serie original, pero no esperaba que hubiera una diferencia tan significativa. En esencia, quiero que la serie simulada se comporte o se parezca en líneas generales a la original.
Este es el código R que utilicé para estimar el modelo y simular las series:
library(rugarch)
rows <- nrow(data)
data <- (log(data[2:rows,])-log(data[1:(rows-1),]))
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "std")
fit <- ugarchfit(spec = spec, data = data, solver = "hybrid")
sim <- ugarchsim(fit, n.sim = rows)
prices <- exp(diffinv(fitted(sim)))
plot(seq(1, nrow(prices), 1), prices, type="l")
Y este es el resultado de la estimación:
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model : ARFIMA(1,0,1)
Distribution : std
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 0.000000 0.000000 -1.755016 0.079257
ar1 -0.009243 0.035624 -0.259456 0.795283
ma1 -0.010114 0.036277 -0.278786 0.780409
omega 0.000000 0.000000 0.011062 0.991174
alpha1 0.050000 0.000045 1099.877416 0.000000
beta1 0.900000 0.000207 4341.655345 0.000000
shape 4.000000 0.003722 1074.724738 0.000000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu 0.000000 0.000002 -0.048475 0.961338
ar1 -0.009243 0.493738 -0.018720 0.985064
ma1 -0.010114 0.498011 -0.020308 0.983798
omega 0.000000 0.000010 0.000004 0.999997
alpha1 0.050000 0.159015 0.314436 0.753190
beta1 0.900000 0.456020 1.973598 0.048427
shape 4.000000 2.460678 1.625568 0.104042
LogLikelihood : 16340000
Agradecería mucho cualquier orientación sobre cómo mejorar mi modelización y simulación, o cualquier idea sobre los errores que pueda haber cometido. Parece que el residuo del modelo no se está utilizando como término de ruido en mi intento de simulación, aunque no estoy seguro de cómo incorporarlo.
1 votos
¡Hola Jeff! También deberías proporcionar tus datos (o al menos una muestra representativa) a los posibles ayudantes. Además, tu código de muestra no incluye los paquetes que has utilizado (donde el
ugarchspec()
yugarchsim()
funciones residen). Asegúrate de que tu código es reproducible siempre que hagas una pregunta aquí y eso "ayudará a la gente a ayudarte".0 votos
Gracias por tus consejos, @SavedByJESUS. He actualizado mi post para incluir la biblioteca de R que he utilizado y he aclarado el formato de mis datos.
0 votos
La razón principal por la que sus datos simulados son diferentes de la serie original es simplemente porque el modelo ajustado, ARMA(1, 1, 1)GARCH(1, 1), no es el modelo apropiado para sus datos. Debería empezar por mejorar su modelo en primer lugar, para que su simulación posterior sea similar a sus datos originales.