Saya telah memasang model ARIMA (1,1,1) -GARCH (1,1) ke seri waktu harga log nilai tukar AUD / USD yang diambil sampelnya dengan interval satu menit selama beberapa tahun, memberi saya lebih dari dua juta titik data untuk memperkirakan model. Dataset tersedia di sini . Untuk kejelasan, ini adalah model ARMA-GARCH yang dipasang untuk mencatat pengembalian karena integrasi harga log tingkat pertama. Rangkaian waktu AUD / USD asli terlihat seperti ini:
Saya kemudian mencoba mensimulasikan deret waktu berdasarkan pada model yang cocok, memberi saya yang berikut:
Saya berharap dan menginginkan seri waktu yang disimulasikan berbeda dari seri aslinya, tetapi saya tidak berharap ada perbedaan yang signifikan. Intinya, saya ingin seri yang disimulasikan berperilaku atau secara luas terlihat seperti aslinya.
Ini adalah kode R yang saya gunakan untuk memperkirakan model dan mensimulasikan rangkaian:
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")
Dan ini adalah hasil estimasi:
*---------------------------------*
* 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
Saya sangat menghargai panduan apa pun tentang cara meningkatkan pemodelan dan simulasi saya, atau wawasan tentang kesalahan yang mungkin saya buat. Tampaknya seolah-olah model residual tidak digunakan sebagai istilah derau dalam upaya simulasi saya, meskipun saya tidak yakin bagaimana cara memasukkannya.
ugarchspec()
danugarchsim()
fungsinya berada). Pastikan kode Anda dapat direproduksi setiap kali Anda mengajukan pertanyaan di sini dan itu akan "membantu orang untuk membantu Anda".Jawaban:
Saya bekerja dengan peramalan data forex dan percayalah kepada saya setiap kali Anda menggunakan metode peramalan statistik baik itu ARMA, ARIMA, GARCH, ARCH dll. Mereka selalu cenderung semakin memburuk saat Anda mencoba untuk memprediksi banyak ke depan dalam waktu. Mereka mungkin atau mungkin tidak bekerja untuk satu atau dua periode berikutnya tetapi jelas tidak lebih dari itu. Karena data yang Anda hadapi tidak memiliki korelasi otomatis, tidak ada tren, dan tidak ada musim.
Pertanyaan saya kepada Anda, apakah Anda sudah memeriksa ACF dan PACF atau tes untuk tren, musiman sebelum menggunakan ARMA dan GARCH? Tanpa properti yang disebutkan di atas dalam peramalan statistik data tidak berfungsi karena Anda melanggar asumsi dasar model ini.
sumber
Saran saya adalah memastikan model yang Anda pilih sesuai untuk data.
sumber
distribution.model="std"