21  Conditional variance processes

Setup
# required for figures  
library(ggplot2)
library(gridExtra)
# required for render latex 
library(backports)
library(latex2exp)

A stochastic process for the conditional variance can be used to specify a model of the form Yt=E{YtFt1}+V{YtFt1}ut, where the conditional mean and variance can be both stochastic. In the following section, we will explore model with constant conditional mean, i.e. E{YtFt1}=μ, however the above expression can be generalized using AR or ARMA processes.

21.1 ARCH(p) process

The auto regressive and conditionally heteroskedastic process (ARCH) were introduced in 1982 by Robert Engle (Engle ()) to model the conditional variance of a time series. It is often an empirical fact in economics that the larger values of time series the larger the variance. Let’s define an ARCH process of order p as: (21.1)Yt=μ+etet=σt2utσt2=ω+i=1pαieti2 where utMDS(0,1).

21.1.1 Moments

Proposition 21.1 The conditional mean of an ARCH(p) process () is equal to E{YtFt1}=μ.

Proof. Taking the conditional expectation on the process in one obtain: E{YtFt1}=μ+E{etFt1}==μ+E{σtutFt1}==μ+σtE{utFt1}==μ since σt is known and not stochastic given the information at t1 in Ft1 and ut conditionally to Ft1 is a Martingale Difference Sequence with mean zero ().

Proposition 21.2 The conditional variance of an ARCH(p) process () is not stochastic given the information at time t1 and for a general h1 reads: V{Yt+hFt}=E{σt+h2Ft}.

Proof. The conditional variance of Y at time t+h depends on the conditional expectation of σt2, i.e. V{Yt+hFt}=V{σt+hut+hFt}==E{σt+h2Ft}E{ut+h2Ft}E{σt+hFt}2E{ut+hFt}2==E{σt+h2Ft}E{ut+h2Ft}==E{σt+h2Ft} since E{ut+hFt}=0 and E{ut+h2Ft}=1.

The long-term (unconditional) expectation of the ARCH(p) variance σt2 reads E{σt2}=ω1i=1pαi. where ω0. It is clear that to ensure that the process is stationary the following condition on the ARCH parameters must be satisfied for all i{1,,p}, i.e. i=1pαi<1,αi>0.

Example 21.1 Let’s simulate an ARCH(1) process with normal residuals, i.e.  Yt=μ+etet=σtutσt2=ω+α1et12 where utN(0,1).

ARCH(1) simulation
# Random seed 
set.seed(1)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.4
# ARCH parameters
alpha <- c(alpha1 = 0.25)
# *************************************************
#                    Simulation 
# *************************************************
# Long-term variance 
e_sigma2 <- omega / (1 - sum(alpha))
# Starting point
Yt <- rep(mu, 2)
# Initialization 
sigma2_t <- rep(e_sigma2, 4)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 2:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + e_t[t]
}
Figure 21.1: On the top a ARCH(1) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).

Example 21.2 Let’s simulate an ARCH(3) process with normal residuals, i.e.  Yt=μ+etet=σtutσt2=ω+α1et12+α2et22+α3et33 where utN(0,1).

ARCH(3) simulation
# Random seed 
set.seed(2)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.4
# ARCH parameters
alpha <- c(alpha1 = 0.25, alpha2 = 0.05, alpha3 = 0.02)
# *************************************************
#                    Simulation 
# *************************************************
# Long-term variance 
e_sigma2 <- omega / (1 - sum(alpha))
# Starting point
Yt <- rep(mu, 4)
# Initialization 
sigma2_t <- rep(e_sigma2, 4)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 4:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2 + alpha[2] * e_t[t-2]^2 + alpha[3] * e_t[t-3]^2
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + e_t[t]
}
Figure 21.2: On the top a ARCH(3) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).

21.2 GARCH(p,q) process

As done with the ARCH(p), with generalized auto regressive conditional heteroskedasticity (GARCH) we model the dependency of the conditional second moment. It represents a more parsimonious way to express the conditional variance. A GARCH(p,q) processx is defined as: Yt=μ+etet=σtutσt2=ω+i=1pαieti2+j=1qβjσtj2 where utMDS(0,1).

Regarding the variance, the long-term expectation of σt2 reads (21.2)E{σt2}=ω1i=1pαij=1qβj, where ω0. It is clear that to ensure that the process is stationary the following condition on the GARCH parameters must be satisfied: i=1pαi+j=1qβj<1, with αi0 and βj0 for all i{1,,p} and j{1,,q}.

Example 21.3 Let’s simulate an GARCH(1,1) process with normal residuals, i.e.  Yt=μ+etet=σtutσt2=ω+α1et12+β1σt12 where utN(0,1).

GARCH(1,1) simulation
# Random seed 
set.seed(3)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.4
# ARCH parameters
alpha <- c(alpha1 = 0.25)
# GARCH parameters
beta <- c(beta1 = 0.25)
# *************************************************
#                    Simulation 
# *************************************************
# Long-term variance 
e_sigma2 <- omega / (1 - sum(alpha) - sum(beta))
# Starting point
Yt <- rep(mu, 2)
# Initialization 
sigma2_t <- rep(e_sigma2, 4)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 2:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2
  # GARCH components 
  sum_garch <- beta[1] * sigma2_t[t-1] 
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch + sum_garch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + e_t[t]
}
Figure 21.3: On the top a GARCH(1,1) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).

Example 21.4 Let’s simulate a GARCH(2,3) process with normal residuals, i.e Yt=μ+etet=σtutσt2=ω+α1et12+α2et22+β1σt12+β2σt22+β3σt32 where utN(0,1).

GARCH(2,3) simulation
# Random seed 
set.seed(4)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.4
# ARCH parameters
alpha <- c(alpha1 = 0.05, alpha2 = 0.03)
# GARCH parameters
beta <- c(beta1 = 0.55, beta2 = 0.15, beta3 = 0.05)
# *************************************************
#                    Simulation 
# *************************************************
# Long-term variance 
e_sigma2 <- omega / (1 - sum(alpha) - sum(beta))
# Starting point
Yt <- rep(mu, 4)
# Initialization 
sigma2_t <- rep(e_sigma2, 4)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 4:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2 + alpha[2] * e_t[t-2]^2
  # GARCH components 
  sum_garch <- beta[1] * sigma2_t[t-1] + beta[2] * sigma2_t[t-2] + beta[3] * sigma2_t[t-3]
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch + sum_garch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + e_t[t]
}
Figure 21.4: On the top a GARCH(2,3) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).

Example 21.5 Let’s simulate a GARCH(3,2) process with normal residuals, i.e.  Yt=μ+etet=σtutσt2=ω+α1et12+α2et22+α3et32+β1σt12+β2σt22 where utN(0,1).

GARCH(3,2) simulation
# Random seed 
set.seed(5)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.1
# ARCH parameters
alpha <- c(alpha1 = 0.35, alpha2 = 0.15, alpha3 = 0.05)
# GARCH parameters
beta <- c(beta1 = 0.25, beta2 = 0.03)
# *************************************************
#                    Simulation 
# *************************************************
# Long-term variance 
e_sigma2 <- omega / (1 - sum(alpha) - sum(beta))
# Starting point
Yt <- rep(mu, 4)
# Initialization 
sigma2_t <- rep(e_sigma2, 4)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 4:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2 + alpha[2] * e_t[t-2]^2 + alpha[3] * e_t[t-3]^2
  # GARCH components 
  sum_garch <- beta[1] * sigma2_t[t-1] + beta[2] * sigma2_t[t-2]
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch + sum_garch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + e_t[t]
}
Figure 21.5: On the top a GARCH(3,2) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).

21.3 IGARCH

Many variants of the standard GARCH process were developed in literature. For example, the Integrated Generalized Auto regressive Conditional heteroskedasticity (IGARCH(p,q)) is a restricted version of the GARCH, where the persistent parameters sum up to one, and imply a unit root in the GARCH process with the condition i=1pαi+j=1qβj=1. In GARCH(p, q), the sum of coefficients being less than 1 ensures stationarity (finite unconditional variance) while in IGARCH(p, q), the sum is exactly 1, so the process is nonstationary in variance: the conditional variance has a persistent memory, and the shocks to volatility accumulate over time. The process is strictly stationary under some conditions (see Nelson ()), but it has infinite unconditional variance.

Example 21.6 Let’s simulate an iGARCH(1,1) process with normal residuals, i.e.  Yt=μ+etet=σtutσt2=ω+α1et12+(1α1)σt12 where utN(0,1).

iGARCH(1,1) simulation
# Random seed 
set.seed(6)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.4
# ARCH parameters
alpha <- c(alpha1 = 0.35)
# *************************************************
#                    Simulation 
# *************************************************
# Starting point
Yt <- rep(mu, 2)
# Initialization 
sigma2_t <- rep(1, 2)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 2:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2
  # GARCH components 
  sum_garch <- (1 - alpha[1]) * sigma2_t[t-1] 
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch + sum_garch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + e_t[t]
}
Figure 21.6: On the top a GARCH(1,1) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).

21.4 GARCH-M

The GARCH in-mean (GARCH-M) model adds a stochastic term into the mean equation. This is motivated especially in financial theories (e.g., risk-return trade-off) suggesting that expected returns may depend on volatility, i.e. Yt=μ+λσt2+etet=σtutσt2GARCH(p,q) The effect of the parameter λ is a shift of the mean of the process. If Yt are for example financial returns a λ>0 would imply that higher volatility increases expected return, consistent with risk-premium theories. Instead, when λ<0, it could reflect behavioral phenomena or model misspecification. The unconditional mean of Yt became E{Yt}=μ+λE{σt2}, while the conditional mean E{Yt+hFt}=μ+λE{σt+h2Ft}.

Example 21.7 Let’s simulate an GARCH-M(1,1) process with normal residuals, i.e.  Yt=μ+λσt2+etet=σtutσt2=ω+α1et12+β1σt12 where utN(0,1).

GARCH-M(1,1) simulation
# Random seed 
set.seed(7)
# *************************************************
#                      Inputs 
# *************************************************
# Number of simulations 
t_bar <- 300 
# Long term mean of Yt 
mu <- 0.5 
# Intercept sigma2
omega <- 0.4
# ARCH parameters
alpha <- c(alpha1 = 0.15)
# Mean param 
lambda <- 2.5
# GARCH parameters
beta <- c(beta1 = 0.35)
# *************************************************
#                    Simulation 
# *************************************************
# Long-term variance 
e_sigma2 <- omega / (1 - sum(alpha) - sum(beta))
# Starting point
Yt <- rep(mu, 2)
# Initialization 
sigma2_t <- rep(e_sigma2, 4)
# Simulate standardized residuals 
u_t <- rnorm(t_bar, 0, 1) 
# Initialize residuals 
e_t <- sigma2_t * u_t
for(t in 2:t_bar){
  # ARCH components
  sum_arch <- alpha[1] * e_t[t-1]^2
  # GARCH components 
  sum_garch <- beta[1] * sigma2_t[t-1] 
  # Next-step variance 
  sigma2_t[t] <- omega + sum_arch + sum_garch
  # Update simulated residuals 
  e_t[t] <- sqrt(sigma2_t[t]) * u_t[t]
  # Update time series 
  Yt[t] <- mu + sigma2_t[t] * lambda + e_t[t]
}
Figure 21.7: On the top a GARCH-M(1,1) simulation with its long term mean (red). On the bottom the correspondent stochastic variance with its long term mean (blue).