####################################################### # News Impact Curves for GACRCH ZOO MODELS # # Now, the so-called news impact curves # This is a theoretical object that one can view as the graph of sigma^2_t as a # function of epsilon_{t-1} # conditional on everything else... # It shows the relative impact of the "news" in the various models ####################################################### #First get get fits of the tgarch, pgarch, garch module(finmetrics) hp.egarch = garch(hp.s~1, ~egarch(1,1), leverage=T, trace=F) hp.tgarch = garch(hp.s~1, ~tgarch(1,1), trace=F) hp.pgarch = garch(hp.s~1, ~pgarch(1,1,1), leverage=T, trace=F) # We have done this before. # Now the new part. # We get and plot the News Impact Curves. a0 = hp.tgarch$coef[2] a1 = hp.tgarch$coef[3] b1 = hp.tgarch$coef[4] g1 = hp.tgarch$coef[5] A = a0 + b1*hp.tgarch$asymp.sd^2 epsilon = seq(-0.21,0.14, length=100) sigma2.t.TGARCH = A+(a1+g1*(epsilon < 0))*(epsilon^2) a0 = hp.pgarch$coef[2] a1 = hp.pgarch$coef[3] b1 = hp.pgarch$coef[4] g1 = hp.pgarch$coef[5] A = (a0 + b1*hp.pgarch$asymp.sd)^2 error = abs(epsilon) + g1*epsilon sigma2.t.PGARCH = A + 2*sqrt(A)*a1*error + (a1*error)^2 hp.garch = garch(hp.s~1, ~garch(1,1), trace=F) a0 = hp.garch$coef[2] a1 = hp.garch$coef[3] b1 = hp.garch$coef[4] #g1 = hp.garch$coef[5] #BOGUS IN TEXT A = a0 + b1*hp.garch$asymp.sd^2 error = abs(epsilon) + g1*epsilon sigma2.t.GARCH = A + a1*(error^2) matplot(cbind(epsilon, epsilon, epsilon), cbind(sigma2.t.TGARCH,sigma2.t.PGARCH,sigma2.t.GARCH), type="l") key(-0.05, 0.0045, lines=list(type="l", lty=1:3), text=list(c("TGARCH","PGARCH","GARCH")),border=1, adj=1) ############################################################## # Addendum: If you have not explored plot() applied to a GARCH object # this is a good time to try it. # Just do plot(hp.garch) to look at the stuff we have associated with the hp fit. # Go over each of these looking at the story first.