J'ai adapté un modèle ARIMA (1,1,1) -GARCH (1,1) à la série chronologique des prix du journal des taux de change AUD / USD échantillonnés à des intervalles d'une minute sur plusieurs années, ce qui me donne plus de deux millions de points de données sur lesquels estimer le modèle. L'ensemble de données est disponible ici . Pour plus de clarté, il s'agissait d'un modèle ARMA-GARCH adapté aux retours de grumes en raison de l'intégration de premier ordre des prix des grumes. La série chronologique originale AUD / USD ressemble à ceci:
J'ai ensuite tenté de simuler une série chronologique basée sur le modèle ajusté, en me donnant les informations suivantes:
Je m'attends et souhaite que la série temporelle simulée soit différente de la série originale, mais je ne m'attendais pas à une différence aussi importante. Essentiellement, je veux que la série simulée se comporte ou ressemble largement à l'original.
Voici le code R que j'ai utilisé pour estimer le modèle et simuler la série:
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")
Et voici la sortie d'estimation:
*---------------------------------*
* 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
J'apprécierais grandement tout conseil sur la façon d'améliorer ma modélisation et ma simulation, ou tout aperçu des erreurs que j'ai pu commettre. Il semble que le résidu du modèle ne soit pas utilisé comme terme de bruit dans ma tentative de simulation, mais je ne sais pas comment l'incorporer.
ugarchspec()
etugarchsim()
). Assurez-vous que votre code est reproductible chaque fois que vous posez une question ici et il "aidera les gens à vous aider".