Tahmin anında mevcut olan verileri kullanın

R'de GARCH Modelleri

Kris Boudt

Professor of finance and econometrics

`ugarchforecast` nesnesine `sigma()` uygulayarak oynaklık tahmini

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "norm")
garchfit <- ugarchfit(data = sp500ret, spec = garchspec)
garchforecast <- ugarchforecast(fitORspec = garchfit, n.ahead = 3)
sigma(garchforecast)

2017-12-29 T+1 0.005034754 T+2 0.005127582 T+3 0.005217770
R'de GARCH Modelleri

`ugarchfit` nesnesine `sigma()` uygulayarak oynaklık tahmini (i)

head(sigma(garchfit), 3)
1989-01-04 0.01099465
1989-01-05 0.01129167
1989-01-06 0.01084294
tail(sigma(garchfit), 3)
2017-12-27 0.005051926
2017-12-28 0.004947569
2017-12-29 0.004862908
R'de GARCH Modelleri

ugarchfit nesnesine sigma() uygulayarak oynaklık tahmini (ii)

İleriye bakış yanlılığı: Gelecekteki getiriler oynaklık tahmininde kullanılır.

R'de GARCH Modelleri

İleriye bakış yanlılığını önleme: Hareketli tahmin

  • Bir for döngüsü yazın: Tahmin zamanlarında yineleyin; ugarchfit() ile modeli tahmin edin ve ugarchforecast() ile oynaklık tahmini yapın
  • rugarch paketindeki yerleşik ugarchroll() fonksiyonu
  • Seçenekler:
    • Tahmin örneğinin uzunluğu
    • Modeli yeniden tahmin etme sıklığı
R'de GARCH Modelleri

Genişleyen pencere tahmini

Tahmin anında mevcut tüm getirileri kullanın

R'de GARCH Modelleri

Hareketli pencere tahmini

Tahmin anında mevcut olan en son getiri gözlemlerinden sabit bir sayı kullanın

R'de GARCH Modelleri

Hareketli pencere özellikleri

  • Hareketli pencere, model parametrelerindeki değişimlere uyum sağlar
  • ugarchroll() için hesaplama maliyeti, tahmin zamanları boyunca döngüdür:
    • Modeli tahmin sıklığından daha seyrek yeniden tahmin ederek azaltılabilir
R'de GARCH Modelleri

Kaydırma ve yeniden tahmin

Modeli her $K$ gözlemde bir tahmin ederek hesaplama maliyetini azaltın

R'de GARCH Modelleri

ugarchroll fonksiyonu

garchroll <- ugarchroll(tgarchspec, data = EURUSDret, n.start = 2500,
                        refit.window = "moving", refit.every = 500)

Belirtilecek argümanlar:

  1. Kullanılan GARCH belirtimi
  2. data : kullanılacak getiri verisi
  3. n.start: ilk tahmin örneğinin boyutu
  4. refit.window: örneğin zamanla nasıl değişeceği: "moving" veya "expanding
  5. refit.every: modelin ne sıklıkta yeniden tahmin edileceği
R'de GARCH Modelleri

Ocak 1999–Aralık 2018 günlük EUR/USD getirileri üzerinde örnek

4961 gözleme sahip 4961 EUR/USD getirisi için, 1999-01-05’te başlayıp 2500 gözlemden oluşan hareketli bir tahmin penceresi kullanarak:

R'de GARCH Modelleri

Değişen parametre çıktısı

coef() yöntemi, her tahmin için tahmin edilen katsayıların bir listesini üretir

coef(garchroll)[[1]]
$index
"2008-12-08"

$coef
            Estimate   Std. Error     t value  Pr(>|t|)
mu     -1.480000e-04 1.330915e-04 -1.11201737 0.2661307
ar1    -2.953484e-03 1.985344e-02 -0.14876432 0.8817396
omega   7.498928e-08 5.587618e-06  0.01342062 0.9892922
alpha1  2.805079e-02 6.401139e-02  0.43821564 0.6612300
beta1   9.709400e-01 6.080197e-02 15.96889122 0.0000000
shape   1.098068e+01 2.609293e+01  0.42082981 0.6738794
R'de GARCH Modelleri

Tahmin pencereleri arasındaki değişimler

coef(garchroll)[[1]]$coef # 2008-12-08
            Estimate   Std. Error     t value  Pr(>|t|)
omega   7.498928e-08 5.587618e-06  0.01342062 0.9892922
alpha1  2.805079e-02 6.401139e-02  0.43821564 0.6612300
beta1   9.709400e-01 6.080197e-02 15.96889122 0.0000000
coef(garchroll)[[5]]$coef # 2016-11-28
            Estimate   Std. Error      t value     Pr(>|t|)
omega   8.982527e-08 2.639680e-05  0.003402885 9.972849e-01
alpha1  4.149787e-02 2.550381e-01  0.162712424 8.707449e-01
beta1   9.573885e-01 2.195782e-01  4.360125676 1.299878e-05
R'de GARCH Modelleri

Hareketli tahmin ortalaması ve oynaklığı nedir?

n.start = 2500 ile EUR/USD getirileri için ilk tahmin, 2501. gözlem içindir; yani 2008-12-09:

R'de GARCH Modelleri

as.data.frame() yöntemi

preds <- as.data.frame(garchroll)
head(preds, 3)
                      Mu      Sigma Skew    Shape Shape(GIG)      Realized
2008-12-09 -8.271288e-05 0.01196917    0 10.98068          0  0.0003864884
2008-12-10 -1.495786e-04 0.01179742    0 10.98068          0 -0.0066799754
2008-12-11 -1.287079e-04 0.01167929    0 10.98068          0 -0.0203099142

Not:

  • preds$Mu: tahmin edilen ortalama serisi
  • preds$Sigma: tahmin edilen oynaklık serisi
R'de GARCH Modelleri

Tahmin edilen oynaklıklar

garchvol <- xts(preds$Sigma, order.by = as.Date(rownames(preds)))
plot(garchvol)

R'de GARCH Modelleri

Hareketli tahminlerin doğruluğu

preds <- as.data.frame(garchroll)
head(preds)
                      Mu      Sigma Skew    Shape Shape(GIG)      Realized
2008-12-09 -8.271288e-05 0.01196917    0 10.98068          0  0.0003864884
2008-12-10 -1.495786e-04 0.01179742    0 10.98068          0 -0.0066799754
2008-12-11 -1.287079e-04 0.01167929    0 10.98068          0 -0.0203099142
2008-12-12 -8.845214e-05 0.01199756    0 10.98068          0 -0.0041201588
2008-12-15 -1.362683e-04 0.01184438    0 10.98068          0 -0.0230532787
2008-12-16 -8.034966e-05 0.01228900    0 10.98068          0 -0.0105720492

preds$Mu ve preds$Sigma doğruluğunu preds$Realized ile karşılaştırarak değerlendirin

R'de GARCH Modelleri

Ortalama için ortalama karesel tahmin hatası

# Ortalama için tahmin hatası
e  <- preds$Realized - preds$Mu  
mean(e ^ 2)
3.867998e-05
R'de GARCH Modelleri

Varyans için ortalama karesel tahmin hatası

# Ortalama için tahmin hatası
e  <- preds$Realized - preds$Mu  

# Varyans için tahmin hatası
d  <- e ^ 2 - preds$Sigma ^ 2 
mean(d ^ 2)
6.974161e-09
R'de GARCH Modelleri

İki modeli karşılaştırma

Student t dağılımlı standart GARCH

tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
     variance.model = list(model = "sGARCH"), distribution.model = "std")
garchroll <- ugarchroll(tgarchspec, data = EURUSDret, n.start = 2500,
                        refit.window = "moving", refit.every = 500)

Çarpık student t dağılımlı GJR GARCH

gjrgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
   variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
gjrgarchroll <- ugarchroll(gjrgarchspec, data = EURUSDret, n.start = 2500,
            refit.window = "moving", refit.every = 500)
R'de GARCH Modelleri

Tahmin doğruluğu karşılaştırması

Student t dağılımlı standart GARCH

preds <- as.data.frame(garchroll)
e  <- preds$Realized - preds$Mu  
d  <- e ^ 2 - preds$Sigma ^ 2 
mean(d ^ 2) # 6.974161e-09 döndürür

Çarpık student t dağılımlı GJR GARCH

gjrpreds <- as.data.frame(gjrgarchroll)
e  <- gjrpreds$Realized - gjrpreds$Mu  
d  <- e ^ 2 - gjrpreds$Sigma ^ 2 
mean(d ^ 2) # 6.965095e-09 döndürür
R'de GARCH Modelleri

Gerçek sınav uygulamadadır

R'de GARCH Modelleri

Preparing Video For Download...