Na prednáške sme videli príklad takejto situácie:
Uvidíme teraz na iných dátach, že toto nie je neobvyklá situácia.
Samozrejme, nie to ani univerzálna situácia a pri iných dátach môže byť vhodnejší ARCH model bez GARCH členov, alebo pri vyhovujúcom modeli zostanú nejaké parametre nesignifikantné. \(\rightarrow\) na ďalšiu akciu sa pozriete v domácej úlohe.
Budeme modelovať denné výnosy YHOO.
library(quantmod)
library(astsa)
getSymbols("YHOO", from="2009-01-01", to="2011-12-31", src="google")
## [1] "YHOO"
vynosy <- diff(log(YHOO$YHOO.Close))[-1]
chartSeries(vynosy, theme = "white")
Nasvedčuje tomu ACF:
acf2(vynosy)
## ACF PACF
## [1,] -0.01 -0.01
## [2,] 0.01 0.01
## [3,] -0.04 -0.04
## [4,] 0.00 0.00
## [5,] -0.07 -0.07
## [6,] -0.02 -0.03
## [7,] -0.01 -0.01
## [8,] -0.02 -0.03
## [9,] -0.09 -0.09
## [10,] -0.06 -0.07
## [11,] -0.05 -0.06
## [12,] 0.05 0.03
## [13,] 0.00 -0.01
## [14,] 0.02 0.00
## [15,] -0.02 -0.03
## [16,] -0.04 -0.06
## [17,] 0.04 0.04
## [18,] 0.05 0.04
## [19,] 0.04 0.03
## [20,] -0.01 -0.02
## [21,] 0.04 0.04
## [22,] -0.07 -0.06
## [23,] 0.00 0.01
## [24,] 0.01 0.02
## [25,] 0.03 0.02
## [26,] -0.02 -0.01
## [27,] -0.01 0.00
## [28,] -0.08 -0.07
## [29,] 0.04 0.05
## [30,] 0.04 0.05
## [31,] 0.02 0.01
## [32,] -0.09 -0.09
## [33,] -0.01 -0.03
## [34,] -0.04 -0.02
## [35,] -0.07 -0.07
## [36,] -0.02 -0.03
## [37,] 0.06 0.03
## [38,] 0.04 0.02
Ak teraz odhadneme sarima(vynosy, 0,0,0)
, samozrejme rezuíduá budú v poriadku:
model1 <- sarima(vynosy,0,0,0, details=FALSE)
V poriadku nebudú druhé mocniny rezíduí - tie by mali byť tiež nekorelované:
rez0 <- model1$fit$residuals
acf(rez0^2)
Čo znamená, ak \(u\) nemodelujeme ako biely šum, ale ako ARCH(q) proces? Ako vtedy modelujeme jeho disperziu?
Aké ohraničenia na parametre musia byť splnené, aby bol ARCH(q) proces stacionárny?
Funkcia v R-ku: garchFit
z knižnice fGarch
library(fGarch)
# pouzitie garchFit: modelujeme vynosy ako konst. + u, u ~ ARCH(q)
modelGarch <- garchFit(~garch(q,0), data=vynosy, trace=FALSE)
Odhadneme ARCH(1) model:
model10 <- garchFit(~garch(1,0), data=vynosy, trace=FALSE)
model10
##
## Title:
## GARCH Modelling
##
## Call:
## garchFit(formula = ~garch(1, 0), data = vynosy, trace = FALSE)
##
## Mean and Variance Equation:
## data ~ garch(1, 0)
## <environment: 0x000000003416f718>
## [data = vynosy]
##
## Conditional Distribution:
## norm
##
## Coefficient(s):
## mu omega alpha1
## -3.4668e-05 4.8946e-04 1.2097e-01
##
## Std. Errors:
## based on Hessian
##
## Error Analysis:
## Estimate Std. Error t value Pr(>|t|)
## mu -3.467e-05 8.375e-04 -0.041 0.96698
## omega 4.895e-04 3.103e-05 15.773 < 2e-16 ***
## alpha1 1.210e-01 4.584e-02 2.639 0.00831 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log Likelihood:
## 1763.064 normalized: 2.338282
##
## Description:
## Thu Oct 05 14:48:48 2017 by user: admin
Potrebujeme skontrolovať, či sú štandardizované rezíduá bielym šumom:
stand.rez <- model10@residuals/model10@sigma.t
Úlohy:
Zobrazte ACF pre štandardizované rezíduá a pre ich druhé mocniny.
Opakovanie z prednášky: Zobrazíme summary
odhadnutého modelu:
summary(model10)
##
## Title:
## GARCH Modelling
##
## Call:
## garchFit(formula = ~garch(1, 0), data = vynosy, trace = FALSE)
##
## Mean and Variance Equation:
## data ~ garch(1, 0)
## <environment: 0x000000003416f718>
## [data = vynosy]
##
## Conditional Distribution:
## norm
##
## Coefficient(s):
## mu omega alpha1
## -3.4668e-05 4.8946e-04 1.2097e-01
##
## Std. Errors:
## based on Hessian
##
## Error Analysis:
## Estimate Std. Error t value Pr(>|t|)
## mu -3.467e-05 8.375e-04 -0.041 0.96698
## omega 4.895e-04 3.103e-05 15.773 < 2e-16 ***
## alpha1 1.210e-01 4.584e-02 2.639 0.00831 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log Likelihood:
## 1763.064 normalized: 2.338282
##
## Description:
## Thu Oct 05 14:48:48 2017 by user: admin
##
##
## Standardised Residuals Tests:
## Statistic p-Value
## Jarque-Bera Test R Chi^2 276.8228 0
## Shapiro-Wilk Test R W 0.9652303 2.124496e-12
## Ljung-Box Test R Q(10) 14.33403 0.1582932
## Ljung-Box Test R Q(15) 18.71285 0.2270421
## Ljung-Box Test R Q(20) 24.78596 0.2097428
## Ljung-Box Test R^2 Q(10) 19.74157 0.03179393
## Ljung-Box Test R^2 Q(15) 35.01936 0.002443475
## Ljung-Box Test R^2 Q(20) 44.95618 0.001118666
## LM Arch Test R TR^2 18.1077 0.1124594
##
## Information Criterion Statistics:
## AIC BIC SIC HQIC
## -4.668606 -4.650202 -4.668637 -4.661516
Vysvetlite, výsledky akých testov sa tam uvádzajú.
Prečo toto nie je dobrý model pre naše výnosy?
Zopakujte tento postup pre ARCH modely vyššieho rádu a nájdite taký, pri ktorom sú už rezíduá aj ich druhé mocniny vyhovujúce.
Čo znamená, ak \(u\) nemodelujeme ako biely šum, ale ako GARCH(p,q) proces? Ako vtedy modelujeme jeho disperziu?
Aké ohraničenia na parametre musia byť splnené, aby bol GARCH(p,q) proces stacionárny?
Funkcia v R-ku: znovu garchFit
z knižnice fGarch
library(fGarch)
# pouzitie garchFit: modelujeme vynosy ako konst. + u, u ~ GARCH(p,q)
modelpq <- garchFit(~garch(p,q), data=vynosy, trace=FALSE)
Úloha:
Odhadnite GARCH(1,1) model a ukážte, že úspešne prejde testovaním rezíduí a ich druhých mocnín.
Porovnajte informačné kritériá (Akaike, Schwartz) pre GARCH(1,1) model a pre vyhovujúci (z hľadiska rezíduí) ARCH model. Ktorý je lepší?
Zobrazte priebeh odhadnutej štandardnej odchýlky \(\sigma_t\).
Budeme pokračovať v modelovaní výnosov YHOO, do premennej model11
vložíme GARCH(1,1) model pre výnosy.
Úlohy:
predict
zobrazte predikcie na nasledujúcich 20 dní.predikcie <- predict(...)
Opakovanie z prednášky: Čo je to Value at Risk?
Zrealizujeme výpočet zo slajdov z prednášky:
Na stránke: https://systematicinvestor.wordpress.com/2012/01/06/trading-using-garch-volatility-forecast/
“… Now, let’s create a strategy that switches between mean-reversion and trend-following strategies based on GARCH(1,1) volatility forecast.” + kódy v R-ku
Obrázok z citovanej stránky: