Doğrulanmış GARCH modelini üretimde kullanın

R'de GARCH Modelleri

Kris Boudt

Professor of finance and econometrics

Üretimde kullanım

Yıla göre günlük getirilerin dağılımı

R'de GARCH Modelleri

Yeni işlevler

  • Ortalama ve volatilitedeki yakın dönem dinamikleri için ugarchfilter() kullanın
  • Gelecekteki ortalama ve volatiliteyi tahmin etmek için ugarchfit() yerine bir ugarchspec nesnesine uygulanan ugarchforecast() kullanın
R'de GARCH Modelleri

MSFT getirileri üzerinde örnek

  • msftret: 1999–2017 günlük getirileri.
  • Model kurmanın 2010 yıl sonuna kadarki getirilerle yapıldığını varsayınız.
  • Bu modeli 2017 yıl sonunda geçmiş volatilite dinamiklerini analiz etmek ve geleceği tahmin etmek için kullanırsınız.
R'de GARCH Modelleri

Adım 1: Nihai model özelliklerini tanımlayın

2010 yıl sonuna kadar mevcut msftret ile en iyi modeli kurun:

# Specify AR(1)-GJR GARCH model with skewed student t distribution
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1,0)),
 variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
# Estimate the model
garchfit <- ugarchfit(data = msftret["/2010-12"], spec = garchspec)

Üretimde kullanılacak özellik olarak progarchspec tanımlayın ve setfixed(progarchspec) <- as.list(coef(garchfit)) komutunu kullanın:

progarchspec <- garchspec
setfixed(progarchspec) <- as.list(coef(garchfit))
R'de GARCH Modelleri

Adım 2: Ortalama ve volatilite dinamiklerinin analizi

ugarchfilter() işlevini kullanın:

garchfilter <- ugarchfilter(data = msftret, spec = progarchspec)
plot(sigma(garchfilter))                                

Yıla göre günlük getirilerin dağılımı

R'de GARCH Modelleri

Adım 3: Gelecek getirilerine ilişkin tahmin yapın

garchforecast <- ugarchforecast(data = msftret,
                                fitORspec = progarchspec, 
                                n.ahead = 10) # Make predictions for next ten days
cbind(fitted(garchforecast), sigma(garchforecast))
       2017-12-29 2017-12-29
T+1  0.0004781733 0.01124870
T+2  0.0003610470 0.01132550
T+3  0.0003663683 0.01140171
T+4  0.0003661265 0.01147733
T+5  0.0003661375 0.01155238
T+6  0.0003661370 0.01162688
T+7  0.0003661371 0.01170083
T+8  0.0003661371 0.01177424
T+9  0.0003661371 0.01184712
T+10 0.0003661371 0.01191948
R'de GARCH Modelleri

Simülasyonda kullanım

Tüm modeli gözlenen getirileri analiz etmek için uygulamak yerine, yapay log-getiriler üretmekte kullanabilirsiniz:

$$ r_{t} = \log(P_{t}) - \log(P_{t-1}) $$

Gelecek getirilerdeki rassallığı ve fiyatlara etkisini değerlendirmek için faydalıdır; çünkü gelecek fiyat şöyledir:

$$ P_{t + h} = P_{t} \exp(r_{t + 1} + r_{t + 2} + \ldots + r_{t + h}) $$

R'de GARCH Modelleri

Adım 1: Simülasyon modelini kalibre edin

Tahminde log-getirileri kullanın

# Compute log returns
msftlogret <- diff(log(MSFTprice))[-1]

Modeli tahmin edin ve parametreleri simülasyon modeline atayın

garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                        variance.model = list(model = "gjrGARCH"),
                        distribution.model = "sstd")
# Estimate the model
garchfit <- ugarchfit(data = msftlogret, spec = garchspec)

# Set that estimated model as the model to be used in the simulation
simgarchspec <- garchspec
setfixed(simgarchspec) <- as.list(coef(garchfit))
R'de GARCH Modelleri

Adım 2: `ugarchpath()` ile simülasyonu çalıştırın

ugarchpath() ile simülasyon için şunları seçmelisiniz:

  • spec : tam belirlenmiş GARCH modeli
  • m.sim : istediğiniz simüle getiri serisi sayısı
  • n.sim: simüle serideki gözlem sayısı (ör. 252)
  • rseed : üretilen serinin tohumunu sabitlemek için herhangi bir sayı (tekrarlanabilirlik için)
simgarch <- ugarchpath(spec = simgarchspec, m.sim = 4,
                       n.sim = 10 * 252, rseed = 12345)
R'de GARCH Modelleri

Adım 3: Simüle getirilerin analizi

fitted() yöntemi simüle getirileri sağlar:

simret <- fitted(simgarch)
plot.zoo(simret) 

Simüle getiriler

R'de GARCH Modelleri

Simüle volatilitenin analizi

plot.zoo(sigma(simgarch))

Simüle volatilite

R'de GARCH Modelleri

Simüle fiyatların analizi

Başlangıç fiyatı 1 olarak alınan 10 yıllık hisse senedi fiyatlarının 4 simülasyonunun grafiği:

simprices <- exp(apply(simret, 2, "cumsum"))
matplot(simprices, type = "l", lwd = 3)

Simüle fiyatlar

R'de GARCH Modelleri

setfixed(), ugarchfilter(), ugarchforecast() ve ugarchpath() ile pratik zamanı

R'de GARCH Modelleri

Preparing Video For Download...