Appendix: Some RATS Programs for Estimating Volatility Models

The data file used in the illustration is sp500.txt, which contains the monthly excess returns of the S&P 500 index with 792 observations. Comments in a RATS program start with *.

A Gaussian GARCH(1,1) Model with a Constant Mean Equation

all 0  792:1

open data sp500.txt

data(org=obs) / rt

*** initialize the conditional variance function

set h = 0.0

*** specify the parameters of the model

nonlin mu a0 a1 b1

*** specify the mean equation

frml at = rt(t)-mu

*** specify the volatility equation

frml gvar = a0+a1*at(t-1)**2+b1*h(t-1)

*** specify the log likelihood function

frml garchln = -0.5*log(h(t)=gvar(t))-0.5*at(t)**2/h(t)

*** sample period used in estimation

smpl 2 792

*** initial estimates

compute a0 = 0.01, a1 = 0.1, b1 = 0.5, mu = 0.1

maximize(method=bhhh,recursive,iterations=150) garchln

set fv = gvar(t)

set resid = at(t)/sqrt(fv(t))

set residsq = resid(t)*resid(t)

*** Checking standardized residuals

cor(qstats,number=20,span=10) resid

*** Checking squared standardized residuals

cor(qstats,number=20,span=10) residsq

A GARCH(1,1) Model with Student-t Innovation

all 0  792:1

open data sp500.txt

data(org=obs) / rt

set h = 0.0

nonlin mu a0 a1 b1 v

frml at = rt(t)-mu

frml gvar = a0+a1*at(t-1)**2+b1*h(t-1)

frml tt = at(t)**2/(h(t)=gvar(t))  

frml tln = %LNGAMMA((v+1)/2.)-%LNGAMMA(v/2.)-0.5*log(v-2.)

frml gln = tln-((v+1)/2.)*log(1.0+tt(t)/(v-2.0))-0.5*log(h(t))

smpl  2 792

compute a0 = 0.01, a1 = 0.1, b1 = 0.5, mu = 0.1, v = 10 ...

Get Analysis of Financial Time Series, Third Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.