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 the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.