Döviz fiyatlarını simüle etmek için ARMA-GARCH modellerini kullanma


10

Birkaç yıl boyunca bir dakikalık aralıklarla örneklenen AUD / USD döviz kuru günlük fiyatları zaman serisine bir ARIMA (1,1,1) -GARCH (1,1) modeli ekledim. modeli tahmin etmek için milyon veri noktası. Veri kümesi burada mevcuttur . Açıklık getirmek gerekirse, bu, log fiyatlarının birinci dereceden entegrasyonu nedeniyle log iadelerine takılan bir ARMA-GARCH modeliydi. Orijinal AUD / USD zaman serisi şöyle görünür:

resim açıklamasını buraya girin

Daha sonra, takılmış modele dayalı bir zaman serisini simüle etmeye çalıştım ve bana aşağıdakileri verdi:

resim açıklamasını buraya girin

Ben de simüle edilmiş zaman serisinin orijinal seriden farklı olmasını bekliyorum ve arzuluyorum, ama orada böyle önemli bir fark olmasını beklemiyordum. Özünde, simüle edilmiş serilerin orijinaline benzemesini veya genel olarak görünmesini istiyorum.

Bu, modeli tahmin etmek ve seriyi simüle etmek için kullandığım R kodudur:

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")

Ve bu tahmin çıktısı:

*---------------------------------*
*          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 

Modelleme ve simülasyonumu nasıl geliştirebileceğime dair herhangi bir rehberlik veya yapmış olabileceğim hatalara ilişkin herhangi bir anlayıştan çok memnun olurum. Görünüşe göre, model kalıntısı simülasyon girişimimde gürültü terimi olarak kullanılmıyor gibi görünüyor, ancak nasıl dahil edileceğimden emin değilim.


1
Merhaba Jeff! Ayrıca potansiyel yardımcılara verilerinizi (veya en azından temsili bir örneği) sağlamalısınız. Ayrıca, örnek kodunuz kullandığınız paketleri ( ugarchspec()ve ugarchsim()işlevlerin bulunduğu yerde) içermez . Burada bir soru sorduğunuzda kodunuzun yeniden oluşturulabildiğinden emin olun ve "insanların size yardımcı olmasına yardımcı olur".
SavedByJESUS

Tavsiyeniz için teşekkürler, @SavedByJESUS. Yazımı kullandığım R kütüphanesini içerecek şekilde güncelledim ve verilerimin formatını netleştirdim.
Jeff

Simüle edilen verilerinizin orijinal serilerden farklı olmasının temel nedeni, takılan model olan ARMA (1, 1, 1) GARCH (1, 1) verileriniz için uygun model olmamasıdır. İlk önce modelinizi geliştirerek başlamalısınız, daha sonraki simülasyonunuz orijinal verilerinize benzer olacaktır.
SavedByJESUS

Yanıtlar:


1

Forex veri tahmini ile çalışıyorum ve ARMA, ARIMA, GARCH, ARCH vb. Bir veya iki dönem boyunca çalışabilirler veya çalışamazlar, ancak kesinlikle bundan daha fazla olamazlar. Çünkü uğraştığınız verilerin oto-korelasyonu, trendi ve mevsimsellik yok.

Size sorum, ACMA ve PACF'yi veya ARMA ve GARCH'ı kullanmadan önce trend, mevsimsellik testlerini kontrol ettiniz mi? Veri istatistiklerinde yukarıda belirtilen özellikler olmadan, bu modellerin temel varsayımlarını ihlal ettiğiniz için istatistiksel tahmin çalışmaz.


@JAbr yorumunuz için teşekkürler, ama aslında tahmin etmiyorum. Bunun yerine, uygulamam, kesinlikle gözlemlenen verilerle aynı istatistiksel özelliklere sahip alternatif bir fiyat yolunun simülasyonudur.
Jeff

Tamam ama diğer servislerde garch modelini kullanarak tahmin yapıyorsunuz değil mi, simülasyonlarınız garch kullanıyor ve garch tahmin yoluyla gözlem üretiyor.
JAbr

Kesinlikle, ama ufuk geleceğe daha da genişledikçe zaman serisi modeli tahminlerinin bozulduğunu söylediniz. Modelin, tek bir dönemin ufuklarında simüle ederken (veya tahmin ederken) bile dizinin dinamiklerini yeterince yakalamadığını öneriyorum.
Jeff

"Sonraki bir ya da iki dönem çalışabilirler" dedim kötü, söylemeliydim ya da söylememeliydim.
JAbr

0

Önerilerim, seçtiğiniz modelin veriler için uygun olduğundan emin olmak olacaktır.

  • Döngüsel veya mevsimsel bileşen olmadığından emin olun.
  • Birim kök varlığını test etmek için bir Artırılmış Dickey Fuller Testi yapın. Birim kök varsa, Artırılmış Dickey Fuller Testi birim kök olmadığını gösterene kadar verileri farklı tutmaya devam edin. Alternatif olarak Otomatik korelasyon katsayılarına dikkat edin, durağanlık için bazı n gecikme süresinden sonra düşmelidirler.
  • Belki de yanlış siparişleri kullanarak modeli aşırı uydurdunuz veya yetersiz uydunuz? AIC ve BIC kullanarak doğru siparişleri bulun.

tdistribution.model="std"

Haklısın. Cevabımı düzenleyeceğim.
A-ar

Aşırı takma konusunda endişelenmiyorum - aslında, tasarladığım uygulama için modeli fazla takmak istiyorum. Ben mevsimsellik için olmasa da durağanlık için test ettim. Bu sorunlardan bağımsız olarak, GARCH modelinin düzgün çalıştığı görülmemektedir. Simüle edilmiş seri tamamen homoscedastic gibi görünüyor.
Jeff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.