Ho adattato un modello ARIMA (1,1,1) -GARCH (1,1) alle serie temporali dei prezzi dei registri dei tassi di cambio AUD / USD campionati a intervalli di un minuto nel corso di diversi anni, dandomi oltre due milioni di punti dati su cui stimare il modello. Il set di dati è disponibile qui . Per chiarezza, si trattava di un modello ARMA-GARCH adatto ai registri resi a causa dell'integrazione del primo ordine dei prezzi dei tronchi. La serie temporale originale AUD / USD è simile alla seguente:
Ho quindi tentato di simulare una serie temporale basata sul modello montato, dandomi quanto segue:
Entrambi mi aspetto e desidero che le serie storiche simulate siano diverse dalle serie originali, ma non mi aspettavo che ci fosse una differenza così significativa. In sostanza, voglio che la serie simulata si comporti o assomigli in generale all'originale.
Questo è il codice R che ho usato per stimare il modello e simulare 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")
E questo è l'output della stima:
*---------------------------------*
* 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
Apprezzerei molto qualsiasi guida su come migliorare la mia modellazione e simulazione, o qualsiasi approfondimento sugli errori che avrei potuto fare. Sembra che il residuo del modello non venga utilizzato come termine del rumore nel mio tentativo di simulazione, anche se non sono sicuro di come incorporarlo.
ugarchspec()
eugarchsim()
). Assicurati che il tuo codice sia riproducibile ogni volta che fai una domanda qui e "aiuterà le persone ad aiutarti".