Menggunakan model ARMA-GARCH untuk mensimulasikan harga valuta asing


10

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:

masukkan deskripsi gambar di sini

Saya kemudian mencoba mensimulasikan deret waktu berdasarkan pada model yang cocok, memberi saya yang berikut:

masukkan deskripsi gambar di sini

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.


1
Hai Jeff! Anda juga harus memberikan data Anda (atau setidaknya sampel yang representatif) kepada calon pembantu. Juga, kode sampel Anda tidak termasuk paket yang Anda gunakan (tempat ugarchspec()dan ugarchsim()fungsinya berada). Pastikan kode Anda dapat direproduksi setiap kali Anda mengajukan pertanyaan di sini dan itu akan "membantu orang untuk membantu Anda".
SavedByJESUS

Terima kasih atas saran Anda, @SavedByJESUS. Saya telah memperbarui posting saya untuk menyertakan perpustakaan R yang saya gunakan, dan mengklarifikasi format data saya.
Jeff

Alasan utama mengapa data simulasi Anda berbeda dari seri asli hanya karena model yang pas, ARMA (1, 1, 1) GARCH (1, 1), bukan model yang sesuai untuk data Anda. Anda harus mulai dengan meningkatkan model Anda terlebih dahulu, kemudian simulasi Anda berikutnya akan mirip dengan data asli Anda.
SavedByJESUS

Jawaban:


1

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.


Terima kasih atas komentar Anda @JAbr, tapi saya tidak benar-benar memperkirakan. Sebaliknya, aplikasi saya adalah simulasi ketat jalur harga alternatif dengan karakteristik statistik yang sama dengan data yang diamati.
Jeff

Oke tapi di bangsal lain Anda benar-benar meramalkan menggunakan model Garch bukan, simulasi Anda menggunakan Garch, dan Garch menghasilkan pengamatan dengan meramalkan.
JAbr

Tentu saja, tetapi Anda telah mengatakan bahwa ramalan model deret waktu memburuk saat cakrawala meluas lebih jauh ke masa depan. Saya menyarankan bahwa model tidak cukup menangkap dinamika seri bahkan ketika mensimulasikan (atau meramalkan) di cakrawala periode tunggal.
Jeff

saya berkata "Mereka mungkin bekerja untuk satu atau dua periode berikutnya" saya buruk, saya seharusnya mengatakan mungkin atau mungkin tidak.
JAbr

0

Saran saya adalah memastikan model yang Anda pilih sesuai untuk data.

  • Pastikan tidak ada komponen siklik atau musiman.
  • Lakukan Augmented Dickey Fuller Test untuk menguji keberadaan unit root. Jika unit root ada maka tetap perbedaakan data sampai The Augmented Dickey Fuller Test menunjukkan tidak adanya unit root. Sebagai alternatif, perhatikan koefisien korelasi Otomatis, koefisien tersebut harus turun setelah beberapa waktu n untuk stasioneritas.
  • Mungkin Anda memiliki model over-fit atau under-fit menggunakan pesanan yang salah? Temukan pesanan yang benar menggunakan AIC dan BIC.

tdistribution.model="std"

Kamu benar. Saya akan mengedit jawaban saya.
A-ar

Saya tidak khawatir tentang over-fitting - pada kenyataannya, untuk aplikasi yang saya maksudkan saya ingin over-fit model. Saya sudah menguji stasioneritas, meskipun tidak untuk musiman. Terlepas dari masalah ini, model GARCH tampaknya tidak berfungsi dengan benar. Tampaknya seolah-olah seri yang disimulasikan adalah sepenuhnya homoseksual.
Jeff
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.