10 votos

Utilización de modelos ARMA-GARCH para simular los precios de las divisas

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:

enter image description here

A continuación, intenté simular una serie temporal basada en el modelo ajustado, lo que me dio lo siguiente:

enter image description here

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() y ugarchsim() 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.

1voto

robinmitra Puntos 119

Estoy trabajando con la previsión de datos de divisas y confíe en mí siempre que utilice los métodos de previsión estadística ya sea ARMA, ARIMA, GARCH, ARCH etc. Siempre tienden a deteriorarse cuando se intenta predecir con mucha antelación. Pueden o no funcionar durante uno o dos períodos, pero definitivamente no más que eso. Porque los datos con los que se está tratando no tienen autocorrelación, ni tendencia, ni estacionalidad.

Mi pregunta para ti, ¿has comprobado ACF y PACF ¿o pruebas de tendencia y estacionalidad antes de utilizar ARMA y GARCH? Sin las propiedades mencionadas en los datos, la previsión estadística no funciona porque se violan los supuestos básicos de estos modelos.

0 votos

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

0 votos

De acuerdo, pero en otras salas, en realidad estás pronosticando utilizando el modelo garch, ¿no es así?, tus simulaciones utilizan garch, y garch produce la observación mediante la previsión.

0 votos

Absolutamente, pero usted ha dicho que las previsiones de los modelos de series temporales se deterioran a medida que el horizonte se extiende hacia el futuro. Estoy sugiriendo que el modelo no capta suficientemente la dinámica de la serie incluso cuando simula (o pronostica) en horizontes de un solo periodo.

0voto

Guido Zanon Puntos 960

Mi sugerencia sería que se asegurara de que el modelo que ha seleccionado es apropiado para los datos.

  • Asegúrese de que no hay componentes cíclicos o estacionales.
  • Realice una prueba de Dickey Fuller aumentada para comprobar la presencia de una raíz unitaria. Si la raíz unitaria está presente, siga diferenciando los datos hasta que la prueba de Dickey Fuller aumentada muestre que no hay raíces unitarias. Alternativamente, observe los coeficientes de autocorrelación, deben caer después de algunos n rezagos de tiempo para la estacionariedad.
  • ¿Quizá ha sobreajustado o infraajustado el modelo utilizando órdenes incorrectas? Encuentre los órdenes correctos utilizando el AIC y el BIC.

0 votos

El último punto sólo es relevante si la distribución asumida es Normal, pero eso no se ajusta a los hechos estilizados de los rendimientos financieros. La OP está utilizando la fórmula de Student $t$ distribución especificando distribution.model="std" Lo cual tiene sentido.

0 votos

Tienes razón. Voy a editar mi respuesta.

0 votos

No me preocupa el sobreajuste; de hecho, para la aplicación que pretendo, quiero sobreajustar el modelo. He comprobado la estacionariedad, pero no la estacionalidad. Independientemente de estas cuestiones, el modelo GARCH no parece funcionar correctamente. Parece que la serie simulada es completamente homocedástica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X