Univariate GARCH: Advanced Topics
Amath 546/Econ 589
Eric Zivot
Spring 2012
Updated: April 29, 2013
© Eric Zivot 2008
Testing for Leverage Effects
# Perform Engle-Ng
Engle Ng sign bias tests
> signbias(MSFT.garch11.fit) Weak evidence of
t-value prob sig leverage effect for
Sign Bias 2.1782 0.02947 ** MSFT returns
N
Negative
ti Si
Sign Bi
Bias 00.9318
9318 0.35151
0 35151
Positive Sign Bias 0.2251 0.82190
Joint Effect 5.7250 0.12578
> signbias(GSPC.garch11.fit)
t-value prob sig
Sign Bias 1.409 1.589e-01
Negative Sign Bias 1
1.151
151 2
2.499e-01
499e 01
Positive Sign Bias 3.244 1.192e-03 ***
Joint Effect 21.788 7.219e-05 ***
© Eric Zivot 2012
EGARCH(1,1)
> egarch11
egarch11.spec
spec = ugarchspec(variance.model=list(model="eGARCH",
ugarchspec(variance model=list(model="eGARCH"
+ garchOrder=c(1,1)),
+ mean.model=list(armaOrder=c(0,0)))
> MSFT.egarch11.fit = ugarchfit(egarch11.spec, MSFT.ret)
> MSFT.egarch11.fit
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics 1 <0
0 => lleverage
----------------------------------- effect.
GARCH Model : eGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution
i ib i : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
( | |)
mu -0.000007 0.000271 -0.025003 0.980052
omega -0.083093 0.017115 -4.855053 0.000001
alpha1 -0.051686 0.008287 -6.236700 0.000000
beta1 0.988891 0.002212 446.972786 0.000000
gamma1 00.097162
097162 0
0.013218
013218 7
7.350763
350763 0.000000
0 000000
© Eric Zivot 2012
TGARCH(1,1)/GJR-GARCH(1,1)
> gjrgarch11.spec = ugarchspec(variance.model=list(model="gjrGARCH",
+ garchOrder=c(1,1)),
+ mean.model=list(armaOrder=c(0,0)))
> MSFT.gjrgarch11.fit = ugarchfit(gjrgarch11.spec, MSFT.ret)
> MSFT
MSFT.gjrgarch11.fit
j h11 fit
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics 1 > 0 => leverage
----------------------------------- effect.
GARCH Model : gjrGARCH(1,1)
Mean Model : ARFIMA(0
ARFIMA(0,0,0)
0 0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 0.000110 0.000276 0.3991 0.689820
omega 0.000005 0.000001 5.0192 0.000001
alpha1 0.021194 0.007888 2.6869 0.007212
beta1 0.929977 0.009514 97.7527 0.000000
gamma1 0.076979 0.013490 5.7063 0.000000
© Eric Zivot 2012
APARCH(1,1,1)
> aparch11.1.spec = ugarchspec(variance.model=list(model="apARCH",
+ garchOrder=c(1,1)),
+ mean.model=list(armaOrder=c(0,0)),
+ fixed.pars=list(delta=1))
>
> MSFT.aparch11.1.fit
p = ugarchfit(aparch11.1.spec,
g ( p p , MSFT.ret))
> MSFT.aparch11.1.fit
*---------------------------------*
* GARCH Model Fit *
*
*---------------------------------*
*
1 > 0 => leverage
Conditional Variance Dynamics effect.
-----------------------------------
GARCH Model : apARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 0.000115 0.000273 0.42062 0.674029
omega 0.000219 0.000045 4.87223 0.000001
alpha1 0.058899 0.007777 7.57342 0.000000
beta1 0.944610 0.007480 126.28947 0.000000
gamma1 0.471093 0.102736 4.58547 0.000005
delta 1.000000 NA NA NA
© Eric Zivot 2012
Model Comparison
# compare information criteria
> model.list = list(garch11 = MSFT.garch11.fit,
+ egarch11 = MSFT.egarch11.fit,
+ gjrgarch11 = MSFT.gjrgarch11.fit,
+ aparch11.1 = MSFT.aparch11.1.fit)
> info.mat = sapply(model.list, infocriteria)
> rownames(info.mat) = rownames(infocriteria(MSFT.garch11.fit))
> info.mat
garch11 egarch11 gjrgarch11 aparch11.1
Akaike -5.216 -5.232 -5.227 -5.233
Bayes -5.208
5 208 -5.222
5 222 -5.217
5 217 -5.223
5 223
Shibata -5.216 -5.232 -5.227 -5.233
Hannan-Quinn -5.213 -5.228 -5.224 -5.230
APARCH is the best fitting
g
model
© Eric Zivot 2012
News Impact Curves
© Eric Zivot 2012
Recall Normal GARCH(1,1)
z(t) has fat tails but not much asymmetry
except for maybe one point
© Eric Zivot 2012
Student-t GARCH(1,1)
> garch11.t.spec = ugarchspec(variance.model = list(garchOrder=c(1,1)),
+ mean.model = list(armaOrder=c(0,0)),
+ distribution.model = "std")
> MSFT.garch11.t.fit = ugarchfit(spec=garch11.t.spec, data=MSFT.ret)
> MSFT.garch11.t.fit
*---------------------------------*
* GARCH Model Fit *
*
*---------------------------------*
*
Estimated df = 4.84
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : std
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 0.000145 0.000233 0.62419 0.532502
omega 0.000002 0.000001 2.42482 0.015316
alpha1 0.062204 0.011391 5.46084 0.000000
b t 1
beta1 0
0.936747
936747 0
0.010565
010565 88
88.66647
66647 0
0.000000
000000
shape 4.840443 0.403868 11.98520 0.000000
© Eric Zivot 2012
Student-t QQ-Plot
Nice and
straight! (mostly)
© Eric Zivot 2012
Skew-t GARCH(1,1)
> garch11.st.spec = ugarchspec(variance.model = list(garchOrder=c(1,1)),
+ mean.model = list(armaOrder=c(0,0)),
+ distribution.model = "sstd")
> MSFT.garch11.st.fit = ugarchfit(spec=garch11.st.spec, data=MSFT.ret)
> MSFT.garch11.st.fit
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Estimated
E ti t d skew
k
Conditional Variance Dynamics
-----------------------------------
parameter is positive!
GARCH Model : sGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
( , , )
Distribution : sstd
Optimal Parameters
------------------------------------
Estimate Std
Std. Error t value Pr(>|t|)
mu 0.000258 0.000253 1.0187 0.308332
omega 0.000002 0.000001 2.4445 0.014506
alpha1 0.062718 0.011404 5.4996 0.000000
beta1 0.936280 0.010556 88.7002 0.000000
skew 1.028568 0.025463 40.3942 0.000000
shape 4.839944 0.404462 11.9664 0.000000
© Eric Zivot 2012
Skew-t QQ-Plot
© Eric Zivot 2012
Forecast Comparison
Persistence E[sig(t)]
GARCH-n 0.9894 0.02130
GARCH-t
GARCH t 0
0.9990
9990 0
0.03892
03892
APARCH-n 0.9914 0.02579
APARCH-t 0.9935 0.01849
© Eric Zivot 2012