Uso de modelos ARMA-GARCH para simular precios de divisas


10

He ajustado un modelo ARIMA (1,1,1) -GARCH (1,1) a la serie temporal de precios de registro del tipo de cambio AUD / USD muestreados a intervalos de un minuto en el transcurso de varios años, lo que me da más de dos millones de puntos de datos para estimar el modelo. El conjunto de datos está disponible aquí . Para mayor claridad, este fue un modelo ARMA-GARCH ajustado para registrar las devoluciones debido a la integración de primer orden de los precios de los registros. La serie temporal original de AUD / USD se ve así:

ingrese la descripción de la imagen aquí

Luego intenté simular una serie temporal basada en el modelo ajustado, dándome lo siguiente:

ingrese la descripción de la imagen aquí

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 ampliamente a la original.

Este es el código R que utilicé para estimar el modelo y simular la serie:

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 esta es la salida de 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 enormemente cualquier orientación sobre cómo mejorar mi modelado y simulación, o cualquier idea sobre los errores que podría haber cometido. Parece que el residual 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
¡Hola Jeff! También debe proporcionar sus datos (o al menos una muestra representativa) a los posibles ayudantes. Además, su código de muestra no incluye los paquetes que utilizó (donde residen las funciones ugarchspec()y ugarchsim()). Asegúrese de que su código sea reproducible cada vez que haga una pregunta aquí y "ayudará a las personas a ayudarlo".
GuardadoBYJESUS

Gracias por tu consejo, @SavedByJESUS. He actualizado mi publicación para incluir la biblioteca R que he usado y he aclarado el formato de mis datos.
Jeff

La razón principal por la cual 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. Debe comenzar mejorando su modelo primero, luego su simulación posterior será similar a sus datos originales.
GuardadoBYJESUS

Respuestas:


1

Estoy trabajando con el pronóstico de datos forex y confía en mí cada vez que usas métodos de pronóstico estadístico, ya sea ARMA, ARIMA, GARCH, ARCH, etc. Siempre tienden a deteriorarse a medida que intentas predecir mucho a tiempo. Pueden o no funcionar durante los próximos uno o dos períodos, pero definitivamente no más que eso. Debido a que los datos con los que está tratando no tienen correlación automática, ni tendencia ni estacionalidad.

Mi pregunta para usted, ¿ha revisado ACF y PACF o las pruebas de tendencia, estacionalidad antes de usar ARMA y GARCH? Sin las propiedades mencionadas anteriormente en los datos, el pronóstico estadístico no funciona porque está violando los supuestos básicos de estos modelos.


Gracias por tu comentario @JAbr, pero en realidad no estoy pronosticando. Más bien, mi aplicación es estrictamente la simulación de una ruta de precios alternativa con las mismas características estadísticas que los datos observados.
Jeff

De acuerdo, pero en otras salas estás pronosticando realmente usando el modelo garch, ¿no es así? Tus simulaciones usan garch, y garch produce observación por pronóstico.
JAbr

Absolutamente, pero usted ha dicho que los pronósticos del modelo de series temporales se deterioran a medida que el horizonte se extiende más hacia el futuro. Estoy sugiriendo que el modelo no captura suficientemente la dinámica de la serie incluso cuando simula (o pronostica) en horizontes de un solo período.
Jeff

Dije "Puede que funcionen para el próximo uno o dos períodos", mi mal, debería haber dicho puede o no.
JAbr

0

Mis sugerencias serían asegurarme de que el modelo que ha seleccionado sea apropiado para los datos.

  • Asegúrese de que no haya componentes cíclicos o estacionales.
  • Realice una prueba de Dickey Fuller aumentada para probar la presencia de raíz unitaria. Si la raíz de la unidad está presente, siga diferenciando los datos hasta que la prueba de Dickey Fuller Fuller aumentada no muestre la presencia de raíces unitarias. Alternativamente, observe los coeficientes de correlación automática, deberían caer después de algunos n rezagos de estacionariedad.
  • ¿Tal vez has ajustado demasiado o mal el modelo usando pedidos incorrectos? Encuentra los pedidos correctos usando AIC y BIC.

tdistribution.model="std"

Tienes razón. Editaré mi respuesta.
A-ar

No estoy preocupado por el ajuste excesivo; de hecho, para mi aplicación prevista, quiero ajustar demasiado el modelo. He probado la estacionariedad, aunque no la estacionalidad. Independientemente de estos problemas, el modelo GARCH no parece funcionar correctamente. Parece que la serie simulada es completamente homoscedastic.
Jeff
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.