10.1 Engle’s ARCH Model
- Goal: create a simple time series model that captures the basic stylized facts of daily return data
- Foundation of the field of financial econometrics
10.1.1 The ARCH(1) Model
Let Rt denote the continuously compounded daily return on an asset. The CER model for Rt can be expressed in the form: Rt=μ+ϵt,t=1,…,T,ϵt=σzt,zt∼iidN(0,1). Here, the unexpected return ϵt is expressed as σzt where σ is the unconditional volatility of ϵt, which is assumed to be constant, and zt=ϵt/σ is the standardized unexpected return. In (10.1)-(10.3), Rt∼iidN(μ,σ2) which is not a good model for daily returns given the stylized facts. The ARCH(1) model for Rt has a similar form: Rt=μ+ϵt,t=1,…,T,ϵt=σtzt,σ2t=ω+α1ϵ2t−1,zt∼iidN(0,1),ω>0,0≤α1<1.
In the ARCH(1), the unexpected return ϵt is expressed as σtzt where σt is the conditional (time t dependent) volatility of ϵt. Hence, the ARCH(1) model extends the CER model to allow for time varying conditional volatility σt.
In the ARCH(1) model (10.4) - (10.8), the restrictions ω>0 and 0≤α1<1 are required to ensure that σ2t>0 and that {Rt} is a covariance stationary time series. Equation (10.6) shows that the return variance at time t, σ2t is a positive linear function of the squared unexpected return at time t−1, ϵ2t−1. This allows the magnitude of yesterday’s return to influence today’s return variance and volatility. In particular, a large (small) value of ϵ2t−1 leads to a large (small) value of σ2t. This feedback from ϵ2t−1 to σ2t can explain some of the volatility clustering observed in daily returns.
10.1.1.1 Statistical properties of the ARCH(1) Model
Let It={Rt,Rt−1,…,R1} denote the information set at time t (conditioning set of random variables) as described in Chapter 4. As we shall show below, the ARCH(1) model (10.4) - (10.8) has the following statistical properties:
- E(ϵt|It)=0, E(ϵt)=0.
- var(Rt|It)=E(ϵ2t|It)=σ2t.
- var(Rt)=E(ϵ2t)=E(σ2t)=ω/(1−α1).
- {Rt} is an uncorrelated process: cov(Rt,Rt−k)=E(ϵtϵt−j)=0 for k>0.
- The distribution of Rt conditional on It−1 is normal with mean μ and variance σ2t.
- The unconditional (marginal) distribution of Rt is not normal and kurt(Rt)≥3.
- {R2t} and {ϵ2t} have a covariance stationary AR(1) model representation. The persistence of the autocorrelations is measured by α1.
These properties of the ARCH(1) model match many of the stylized facts of daily asset returns.
It is instructive to derive each of the above properties as the derivations make use of certain results and tricks for manipulating conditional expectations. First, consider the derivation for property 1. Because σ2t=ω+α1ϵ2t−1 depends on information dated t−1, σ2t∈It−1 and so σ2t may be treated as a constant when conditioning on It−1. Hence, E(ϵt|It)=E(σtzt|It−1)=σtE(zt|It−1)=0. The last equality follows from that fact that zt∼iidN(0,1) which implies that zt is independent of It−1 and so E(zt|It−1)=E(zt)=0. By iterated expectations, it follows that E(ϵt)=E(E(ϵ|It−1))=E(0)=0. The derivation of the second property uses similar computations: var(Rt|It)=E((Rt−μ)2|It−1)=E(ϵ2t|It)=E(σ2tz2t|It−1)=σ2tE(z2t|It−1)=σ2t, where the last equality uses the result E(z2t|It−1)=E(z2t)=1.
To derive property 3, first note that by iterated expectations and property 2 var(Rt)=E(ϵ2t)=E(E(ϵ2t|It))=E(σ2t).
Next, using (10.6) we have that E(σ2t)=ω+α1E(ϵ2t−1). Now use the fact that {Rt}, and hence {ϵt}, is covariance stationary which implies that E(ϵ2t)=E(ϵ2t−1)=E(σ2t) so that E(σ2t)=ω+α1E(σ2t). Solving for E(σ2t) then gives var(Rt)=E(σ2t)=ω1−α1.
For the fourth property, first note that cov(Rt,Rt−k)=E((Rt−μ)(rt−j−μ))=E(ϵtϵt−k)=E(σtztσt−jzt−j). Next, by iterated expectations and the fact that zt∼iidN(0,1) we have E(σtztσt−jzt−j)=E(E(σtztσt−jzt−j|It−1))=E(σtσt−jzt−jE(zt|It−1))=0, and so cov(Rt,Rt−k)=0.
To derive the fifth property, write Rt=μ+ϵt=μ+σtzt. Then, conditional on It−1 and the fact that zt∼iidN(0,1) we have Rt|It−1∼N(μ,σ2t).
The sixth property has two parts. To see that the unconditional distribution of Rt is not a normal distribution, it is useful to express Rt in terms of current and past values of zt . Start with Rt=μ+σtzt. From (10.6), σ2t=ω+α1ϵ2t−1=ω+α1σ2t−1z2t−1 which implies that σt=(ω+α1σ2t−1z2t−1)1/2. Then Rt=μ+(ω+α1σ2t−1z2t−1)1/2zt.
Even though zt∼iidN(0,1), Rt is a complicated nonlinear function of zt and past values of z2t and so Rt cannot be a normally distributed random variable. Next, to see that kurt(Rt)≥3 first note that kurt(Rt)=E((Rt−μ)4)var(Rt)2=E(ϵ4t)ω2/(1−α1)2 Now by iterated expectations and the fact that E(z4t)=3 E(ϵ4t)=E(E(σ4tz4t|It−1))=E(σ4tE(z4t|It−1))=3E(σ4t). Next, using σ4t=(σ2t)2=(ω+α1ϵ2t−1)2=ω2+2ωα1ϵ2t−1+α21ϵ4t−1 we have E(ϵ4t)=3E(ω2+2ωα1ϵ2t−1+α21ϵ4t−1)=3ω2+6ωα1E(ϵ2t−1)+3α21E(ϵ4t−1). Since {Rt} is covariance stationary it follows that E(ϵ2t−1)=E(ϵ2t)=E(σ2t)=ω/(1−α1) and E(ϵ4t−1)=E(ϵ4t). Hence E(ϵ4t)=3ω2+6ωα1(ω/(1−α1))+3α21E(ϵ4t)=3ω2(1+2α11−α1)+3α21E(ϵ4t). Solving for E(ϵ4t) gives E(ϵ4t)=3ω2(1+α1)(1−α1)(1−3α21). Because 0≤α1<1, in order for E(ϵ4t)<∞ it must be the case that 1−3α21>0 which implies that 0≤α21<13 or 0≤α1<0.577. Substituting the above expression for E(ϵ4t) into (10.9) then gives kurt(Rt)=3ω2(1+α1)(1−α1)(1−3α21)×(1−α1)2ω2=31−α211−3α21≥3. Hence, if returns follow an ARCH(1) process with α1>0 then kurt(Rt)>3 which implies that the unconditional distribution of returns has fatter tails than the normal distribution.
To show the last property, add ϵ2t−1 to both sides of (10.6) to give ϵ2t+σ2t=ω+α1ϵ2t−1+ϵ2t⇒ϵ2t=ω+α1ϵ2t−1+ϵ2t−σ2t=ω+α1ϵ2t−1+vt, where vt=ϵ2t−σ2t is a mean-zero and uncorrelated error term. Hence, ϵ2t and R2t follow an AR(1) process with positive autoregressive coefficient α1. The autocorrelations of R2t are cor(R2t,R2t−j)=αj1forj>1, which are positive and decay toward zero exponentially fast as j gets large. Here, the persistence of the autocorrelations is measured by α1.
To be completed
◼
10.1.1.2 The rugarch package
- Give a brief introduction to the rugarch package
Consider the simple ARCH(1) model for returns Rt=εt=σtzt, zt∼iid N(0,1)σ2t=0.5+0.5R2t−1 Here, α1=0.5<1 so that Rt is covariance stationary and ˉσ2=ω/(1−α1)=0.5/(1−0.5)=1. Using (10.9), kurt(Rt)=31−α211−3α21=31−(0.5)21−3(0.5)2=9, so that the distribution of Rt has much fatter tails than the normal distribution.
The rugarch functions ugarchspec()
and ugarchpath()
can be used to simulate T=1000 values of Rt and σt
from this model.53 The ARCH(1) model is specified using the ugarchpath()
function
as follows
library(rugarch)
## Loading required package: parallel
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
ugarchspec(variance.model = list(garchOrder=c(1,0)),
arch1.spec =mean.model = list(armaOrder=c(0,0)),
fixed.pars=list(mu = 0, omega=0.5, alpha1=0.5))
The argument fixed.pars
is a list whose components give the
ARCH(1) model parameters. The names of the list components match the
parameters from the ARCH(1) model: mu
is μ, omega
is ω, and alpha1
is α1. Simulated values
of Rt and σt are produced using the ugarchpath()
function taking as input the "uGARCHspec"
object arch1.spec
and the number of simulations, n.sim=1000
, to produce:
set.seed(123)
ugarchpath(arch1.spec, n.sim=1000)
arch1.sim =class(arch1.sim)
## [1] "uGARCHpath"
## attr(,"package")
## [1] "rugarch"
slotNames(arch1.sim)
## [1] "path" "model" "seed"
names(arch1.sim@path)
## [1] "sigmaSim" "seriesSim" "residSim"
The object arch1.sim
is an Sv4 object of class uGARCHpath
for which there are sigma
, fitted
, quantile
,
show
and plot
methods.54 The path
slot is a list which contains the simulated values
of σt, Rt and εt=Rt−μt as
matrix
objects. The method functions sigma()
and
fitted()
extract σt and μt, respectively.
Invoking the plot()
method produces a menu of plot choices
Individual plots can be produced directly by specifying the plot number
in the call to plot()
. For example, Figure 10.1
shows the plots of the simulated values for Rt and σt
created with
par(mfrow=c(2,1))
plot(arch1.sim, which=2)
plot(arch1.sim, which=1)

Figure 10.1: Simulated values from ARCH(1) process. Top panel: simulated values of Rt. Bottom panel: simulated values of σt.
par(mfrow=c(1,1))
Figure 10.2 shows the sample autocorrelations of Rt and R2t. As expected returns are uncorrelated whereas R2t has autocorrelations described by an AR(1) process with positive autoregressive coefficient.

Figure 10.2: SACFs for Rt(top panel) and R2t (bottom panel) from simulated ARCH(1) model.
The sample variance and excess kurtosis of the simulated returns are
as.numeric(var(arch1.sim@path$seriesSim))
## [1] 0.875674
kurtosis(arch1.sim@path$seriesSim)
## [1] 0.6495096
The sample variance is very close to the unconditional variance ˉσ2=0.2, and the sample excess kurtosis is very close to the ARCH(1) excess kurtosis of 6.
◼
10.1.2 The ARCH(p) Model
The ARCH(p) model extends the autocorrelation structure of R2t and ϵ2t in the ARCH(1) model (10.4) - (10.6) to that of an AR(p) process by adding p lags of ϵ2t to the dynamic equation for σ2t: σ2t=ω+α1ϵ2t−1+α2ϵ2t−2+⋯+αpϵ2t−p, In order for σ2t to be positive we need to impose the restrictions ω>0,α1≥0,α2≥0,…,αp≥0. In addition, for {Rt} to be a covariance stationary time series we must have the restriction 0≤α1+α2+⋯+αp<1. The statistical properties of the ARCH(p) model are the same as those for the ARCH(1) model with the following exceptions. The unconditional variance of {Rt} is var(Rt)=E(ϵ2t)=E(σ2t)=ω/(1−α1−α2−⋯−αp), and {R2t} and {ϵ2t} have a covariance stationary AR(p) model representation whose autocorrelation persistence is measured by the sum of the ARCH coefficients α1+α2+⋯+αp.
The ARCH(p) model is capable of creating a much richer autocorrelation structure for R2t. In the ARCH(1) model, the autocorrelations of R2t decay to zero fairly quickly whereas the sample autocorrelations shown in Figure 10.2 decay to zero very slowly. In the ARCH(p) model, because of the restrictions (10.11) and (10.12), for large values of p the dynamics of σ2t from (10.10) can more closely mimic the observed autocorrelations of actual daily returns.
To be completed. Simulate long order AR(10) to show difference with ARCH(1). Make sum of ARCH coefficients equal to 0.9
◼
More details on using the rugarch functions are given later in the chapter.↩︎
In R there are two main object types: Sv3 and Sv4. The main operational difference between Sv3 and Sv4 objects is that Sv4 components are extracted using the
@
character instead of the$
character. Also, the names of Sv4 objects are extracted using theslotNames()
function instead of thenames()
function. ↩︎