Rozdział 9 Model GARCH

Typowe modele procesów stochastycznych (ARMA/ARIMA) zawierają założenie homoskedastyczności, czyli stałości wariancji warunkowej. Dla finansowych szeregów czasowych jest to założenie nierealistyczne, w szeregach występują zgrupowania zmienności: można oczekiwać, że zwiększona zmienność zaobserwowana w niedawnej przeszłości może wskazywać na zwiększoną zmienność warunkową w najbliższym czasie.

Model GARCH umożliwia modelowanie zgrupowań zmienności. Skrótowiec ARCH oznacza autoregresyjny model warunkowej heteroskedastyczności (ang. Auto-Regressive Conditional Heteroskedasticity), GARCH to z kolei uogólnienie tego modelu (ang. Generalized ARCH).

9.1 Stała i zmienna wariancja

Załóżmy, że mamy model ze stałą wariancją warunkową V(Yt|X1,t,...,Xp,t)=σ2. Wtedy ogólny model regresji ze zmienną objaśnianą Yt i zmiennymi objaśniającymi X1,t,...,Xp,t przyjmie następującą postać:

Yt=f(X1,t,...,Xp,t)+εt, gdzie εt to niezależne od X1,t,...,Xp,t zakłócenie o średniej równej 0 i wariancji równej σ2ε. Funkcja f() opisuje warunkową wartość oczekiwaną E(Yt|X1,t,...,Xp,t). Warunkowa wariancja Yt to σ2ε.

Równanie (9.1) można rozszerzyć, dopuszczając zmienność wariancji w następujący sposób:

Yt=f(X1,t,...,Xp,t)+εtσ(X1,t,...,Xp,t), gdzie zakłócenie standaryzowane εt ma (warunkowy) rozkład normalny ze średnią 0 i odchyleniem standardowym równym 1, natomiast funkcja σ(X1,t,...,Xp,t) umożliwia modelowanie warunkowej zmienności. Funkcja σ() powinna zwracać wartości dodatnie, ponieważ ma to być warunkowe odchylenie standardowe. Wartość σ2(X1,t,...,Xp,t) to warunkowa wariancja.

Modele umożliwiające modelowanie warunkowej wariancji to modele funkcji wariancji. Do takich modeli należą modele z rodziny GARCH.

9.2 Model ARCH(1)

Załóżmy, że εt to ścisły (Gaussowski) biały szum z jednostkową wariancją.

Wartość oczekiwana w takiej sytuacji to:

E(εt|εt1,...)=0,

a warunkowa wariancja to:

V(εt|εt1,...)=1

Model ARCH(1) można sformułować przy użyciu takiego wzoru:

at=εtω+αa2t1, gdzie ω>0 i 0.

Równanie (9.5) można uznać za przypadek specjalny modelu (9.2) z f(\cdot) = 0 i \sigma(\cdot) = \sqrt{\omega + \alpha a^2_{t-1}}. Można je zapisać również w następujący sposób:

a_t^2 = \varepsilon_t^2\left(\omega + \alpha a^2_{t-1}\right), \tag{9.6}

Niech \sigma^2_t będzie wariancją warunkową procesu opisywanego przez a_t:

\sigma_t^2 = \mathbb{V}(a_t|a_{t-1}, ...)

Wtedy:

\sigma_t^2 = \omega + \alpha a^2_{t-1} \tag{9.7}

Równanie (9.7) pozwala na zrozumienie, jak działają modele GARCH. Gdy a_{t-1} jest co do wartości bezwzględnej duże, to odchylenie \sigma_t również będzie większe niż zwykle, a tym samym zwiększone jest prawdopodobieństwo otrzymania dużego a_t. I odwrotnie.

Wariancja brzegowa (bezwarunkowa) w procesie ARCH(1) równa się:

\gamma_a(0) = \frac{\omega}{1-\alpha}

Autokorelacje w procesie ARCH(1) wynoszą zero.

Symulacja:

# pojedynczy szereg
set.seed(124)
T  <- 200
alpha <- .8
omega <- .4
at <- numeric(T)
at[1] <- omega/(1-alpha)
for (t in 2:T) {
  at[t] <- sqrt(omega + alpha*(at[t-1])^2) * rnorm(1, 0, 1) 
}
plot(at, type="l")

# autokorelacje w próbce
op<-par(mfrow=c(1,2))
acf(at)
acf(at^2)

par(op)


# wiele szeregów plus wykresy pudełkowe
nsim <- 1e3
w <- replicate(nsim,{ 
  at <- numeric(T)
  at[1] <- sqrt(omega/(1-alpha))
  for (t in 2:T) {
    at[t] <- sqrt(omega + alpha*(at[t-1])^2) * rnorm(1, 0, 1) 
  }
  at}
)
boxplot(t(w), pch='.', ylim=c(-5,5))

9.3 Model AR(1) + ARCH(1)

Model AR(1) ma stałą wariancję warunkową, ale zmienną średnią warunkową. Proces ARCH(1) wręcz przeciwnie. Można połączyć oba modele:

y_t - \mu = \phi(y_{t-1}-\mu) + a_t\\ a_t = \varepsilon_t\sigma_t \\ \sigma_t = \sqrt{\omega + \alpha a^2_{t-1}}\\ \varepsilon_t \sim \text{i.i.d.}\:\mathcal{N}(0,1) \tag{9.8}

Należy założyć następujące ograniczenia: |\phi|<1, \omega > 0, 0 \leqslant \alpha < 1.

Symulacja:

# pojedynczy szereg
# set.seed(124)
T  <- 200
alpha <- 0.55
omega <- 1
mu = 0.1
phi = 0.8

at <- numeric(T)
at[1] <- omega/(1-alpha)
for (t in 2:T) {
  at[t] <- sqrt(omega + alpha*(at[t-1])^2) * rnorm(1, 0, 1) 
}
yt <- numeric(T)
yt[1] <- mu/(1-phi)
for (t in 2:T) {
  yt[t] <- mu + phi*(yt[t-1]-mu) + at[t]
}

plot(yt, type="l")

# wiele szeregów plus wykresy pudełkowe
nsim <- 1e3
w <- replicate(nsim,{ 
  at <- numeric(T)
  at[1] <- omega/(1-alpha)
  for (t in 2:T) {
    at[t] <- sqrt(omega + alpha*(at[t-1])^2) * rnorm(1, 0, 1) 
  }
  yt <- numeric(T)
  yt[1] <- mu/(1-phi)
  for (t in 2:T) {
    yt[t] <- mu + phi*(yt[t-1]-mu) + at[t]
  }
  yt}
)
boxplot(t(w), pch='.', ylim=c(-7,7))

9.4 Modele ARMA + GARCH

Powyżej opisane modele można dalej rozbudowywać. Można na przykład wprowadzić modele ARCH z większą liczbą opóźnień (oznaczane „ARCH(p)”, gdzie p to liczba opóźnień):

a_t = \varepsilon_t\sigma_t \\ \sigma_t = \sqrt{\omega + \sum_{i=1}^p\alpha_i a^2_{t-i}}\\ \varepsilon_t \sim \text{i.i.d.}\:\mathcal{N}(0,1) \tag{9.9}

Jednak wadą modeli ARCH jest to, że zwiększone oscylacje występują w krótkich okresach. Dlatego wprowadza się modele GARCH umożliwiające modelowanie bardziej trwałej zmienności.

Model GARCH(p, q) definiuje się następująco:

a_t = \varepsilon_t\sigma_t \\ \sigma_t = \sqrt{\omega + \sum_{i=1}^p\alpha_i a^2_{t-i}+\sum_{j=1}^q\beta_j \sigma^2_{t-j}}\\ \varepsilon_t \sim \text{i.i.d.}\:\mathcal{N}(0,1) \tag{9.9}

Model GARCH można połączyć z modelem ARMA. Na przykład model AR(1)+GARCH(1,1) wygląda tak:

y_t - \mu = \phi(y_{t-1}-\mu) + a_t\\ a_t = \varepsilon_t\sigma_t \\ \sigma_t = \sqrt{\omega + \alpha a^2_{t-1}+\beta \sigma^2_{t-1}}\\\ \varepsilon_t \sim \text{i.i.d.}\:\mathcal{N}(0,1) \tag{9.8}

Symulacja:

# pojedynczy szereg
set.seed(111)
T  <- 200
alpha <- 0.08
beta <- 0.7
omega <- 1
mu = 0.1
phi = 0.8

at <- numeric(T)
at[1] <- omega/(1-alpha)
sigma2t <- numeric(T)
sigma2t[1] <- omega
for (t in 2:T) {
  sigma2t[t] <- omega + alpha*(at[t-1])^2 + beta*sigma2t[t-1]
  at[t] <- sqrt(sigma2t[t]) * rnorm(1, 0, 1) 
}
yt <- numeric(T)
yt[1] <- mu/(1-phi)
for (t in 2:T) {
  yt[t] <- mu + phi*(yt[t-1]-mu) + at[t]
}

plot(yt, type="l")

# wiele szeregów plus wykresy pudełkowe
nsim <- 1e3
w <- replicate(nsim,{ 
  at <- numeric(T)
  at[1] <- omega/(1-alpha)
  sigma2t <- numeric(T)
  sigma2t[1] <- omega
  for (t in 2:T) {
    sigma2t[t] <- omega + alpha*(at[t-1])^2 + beta*sigma2t[t-1]
    at[t] <- sqrt(sigma2t[t]) * rnorm(1, 0, 1) 
  }
  yt <- numeric(T)
  yt[1] <- mu/(1-phi)
  for (t in 2:T) {
    yt[t] <- mu + phi*(yt[t-1]-mu) + at[t]
  }
  yt}
)

boxplot(t(w), pch='.', ylim=c(-12,12))

W praktyce najczęściej stosuje się model GARCH(1,1). Model charakteryzuje się empiryczną trafnością i jest wystarczająco elastyczny.

Parametr \alpha (\alpha_1) umożliwia modelowanie efektu szoku. Parametr \beta (\beta_1) umożliwia modelowanie autoregresji zmienności. Parametr \omega umożliwia modelowanie długookresowej zmienności.

Jeżeli \alpha_1 + \beta_1<1 model GARCH(1,1) jest stacjonarny.

Najlepiej proces GARCH(1,1) interpretować od strony autokorelacji a^2_t. Można wykazać, że autokorelacja rzędu 1 to:

\rho_{a^2}(1) = \frac{\alpha\left(1-\alpha\beta-\beta^2\right)}{1-2\alpha\beta-\beta^2} \tag{9.10}

zaś korelacje dalszych rzędów to:

\rho_{a^2}(h) = \left(\alpha+\beta\right)^{h-1}\rho_{a^2}(1) \text{ dla } h \geqslant 2 \tag{9.11}

Jak wynika ze wzoru (9.10), tę samą autokorelację rzędu 1 można uzyskać dla różnych zestawów \alpha i \beta, wzór (9.11) powoduje w uproszczeniu, że dla większych wartości \beta autokorelacja zanika wolniej. Umożliwia to elastyczne modelowanie zgrupowań zmienności.

9.5 Modele GARCH – reszty i grube ogony rozkładów

9.5.1 Dwa typy reszt w modelach GARCH

Gdy dopasowuje się model ARIMA(p_M, d, q_M)+GARCH(p_V, q_V) do szeregu czasowego y_t, istnieją dwa typy reszt. Zwykła reszta, oznaczana tutaj \widehat{a}_t, jest różnicą między wartością rzeczywistą y_t i warunkową wartością oczekiwaną i stanowi oszacowanie a_t. Aby otrzymać oszacowanie {\varepsilon}_t należy podzielić \widehat{a}_t przez oszacowane warunkowe odchylenie standardowe \widehat{\sigma}_t. Standaryzowane reszty \widehat{\varepsilon_t} powinny być używane do sprawdzania modelu: jeśli model dobrze pasuje do danych, to ani \widehat{\varepsilon_t}, ani \widehat{\varepsilon_t}^2 nie powinny wykazywać autokorelacji. Ponadto, jeśli założono, że \varepsilon_t ma rozkład normalny, to założenie to można sprawdzić za pomocą normalnego wykresu standaryzowanych reszt \widehat{\varepsilon_t}.

9.5.2 Modele GARCH a „ciężkie ogony”

Zwroty akcji mają rozkłady mające „ciężkie ogony”, co oznacza, że wartości odstające są bardziej intensywne niż rozkładzie normalnym. Jednym z powodów wzmożonego występowania wartości odstających może być to, że wariancja warunkowa nie jest stała. Zmienną wariancję można modelować za pomocą procesów GARCH. I rzeczywiście, szeregi generowane przez procesy GARCH mają grube ogony, nawet gdy \varepsilon_t ma rozkład normalny. Niemniej jednak wiele szeregów czasowych finansowych ma ogony, które są cięższe niż wynikałoby to z procesu GARCH, gdzie \varepsilon_t ma rozkład Gaussa. Dlatego zamiast założenia:

\varepsilon_t \sim \text{i.i.d.}\:\mathcal{N}(0,1)

stosuje się biały szum o rozkładzie innym niż rozkład Gaussa. Na przykład:

\varepsilon_t \sim \text{i.i.d.}\:\mathcal{STD}(0,1, \nu)

gdzie \mathcal{STD} to uogólniony standaryzowany rozkład t Studenta z parametrem \nu sterującym grubością ogonów rozkładu.

9.6 Dopasowywanie modelu GARCH – przykład

9.7 Prognozowanie z wykorzystaniem modelu GARCH

9.8 Uogólnienie modelu GARCH: model APARCH

APARCH to skrót o asymmetric power GARCH. Model wprowadza asymetrię w reakcji na ujemne i dodatnie szoki (stąd asymmetric) oraz pozwala modelować \sigma_t za pomocą innej potegi niż dwa (\sigma^2). Jest to możliwe dzięki wprowadzonym do modelu nowym parametrom: \gamma_i i \delta.

Model APARCH można opisać w następujący sposób:

a_t = \varepsilon_t\sigma_t \\ \sigma_t = \left({\omega + \sum_{i=1}^p\alpha_i \left(|a_{t-i}|-\gamma_i a_{t-i}\right)^\delta+\sum_{j=1}^q\beta_j \sigma^\delta_{t-j}}\right)^{1/\delta}\\ \varepsilon_t \sim \text{i.i.d.}\:\mathcal{D}(0,1), \quad \mathcal{D} \in \{\mathcal{N}, \mathcal{STD}_{\nu}, \dots \} \tag{9.12}

Można zauważyć, że gdy \delta = 2 i \forall_i(\gamma_i=0), model APARCH staje się modelem GARCH.

Inne szczególne przypadki modelu APARCH również mają swoje nazwy:

  • TS-GARCH: \delta = 1 i \forall_i(\gamma_i=0)

  • GJR-GARCH: \delta = 2

  • TARCH: \delta = 1

  • NARCH: \forall_i(\gamma_i=0) i \forall_j(\beta_j=0)

Model APARCH(1, 1) wyglądałby w następujący sposób:

a_t = \varepsilon_t\sigma_t \\ \sigma_t = \left({\omega + \alpha \left(|a_{t-i}|-\gamma a_{t-1}\right)^\delta+\beta \sigma^\delta_{t-1}}\right)^{1/\delta}\\ \varepsilon_t \sim \text{i.i.d.}\:\mathcal{D}(0,1), \quad \mathcal{D} \in \{\mathcal{N}, \mathcal{STD}_{\nu}, \dots \} \tag{9.13}