GARCH modely v R
GARCH modely (Generalized Autoregressive Conditional Heteroskedasticity) sú navrhnuté tak, aby zachytili určité charakteristiky bežne sa vyskytujúce vo finančných časových radoch:
- tučné chvosty rozdelenia (fat tails),
- zhlukovanie rozptylu (volatility clustering),
- pretrvávanie volatility,
- návrat k dlhodobému priemeru,
- asymetrické efekty (napr. pákový efekt/leverage effect).
Potrebné knižnice v R:
library(fGarch) library(tseries) library(FinTS)
Nižšie je znázornený typický príklad zhlukovania volatility vo finančnom časovom rade:

ARCH modely v R
ARCH modely (Autoregressive Conditional Heteroskedasticity) sú postavené na predpoklade heteroskedasticity, t. j. že rozptyl (resp. štandardná odchýlka) náhodnej zložky modelu sa mení v čase.
Inak povedané, rozptyl hodnôt časového radu je závislý od jeho vlastných predchádzajúcich hodnôt. Tento typ modelu je vhodný najmä pre časové rady s premenlivou volatilitou, ako napríklad finančné trhy.
Základný tvar ARCH(q) modelu:
Kde:
- εt = náhodná zložka s nulovou strednou hodnotou,
- ht = podmienený rozptyl v čase t,
- α0, α1, …, αq = parametre modelu.
Modelovanie (G)ARCH v jazyku R prebieha takmer rovnako ako modelovanie ARIMA procesov. Najprv je potrebné určiť typ a stupeň G(ARCH) procesu, nasleduje odhad parametrov modelu a diagnostika.

Určenie stupňa (G)ARCH modelu
Mnohými aplikáciami týchto modelov bolo zistené, že veľkú väčšinu existujúcich reálnych procesov je možné modelovať za pomoci procesu GARCH(1,1).
Preto i my budeme zväčša využívať GARCH modely 1. stupňa ako prvotný (častokrát i jediný) stupeň (G)ARCH k modelovaniu procesov.
Odhad parametrov (G)ARCH modelu
Základný príkaz na modelovanie (G)ARCH efektov v jazyku R je garchFit()
.
Parametre, ktoré do nej vstupujú, sú: arma(1,2,1)
, garch(1,1)
a samotné dáta.
Výpočet typu a stupňa AR(i)MA je uvedený v predchádzajúcej sekcii. Do modelu ho zahrnieme preto, že chceme vytvárať prognózy celého procesu, a nie iba jeho reziduí.
Príklad: Odhad (G)ARCH modelu
Nasleduje načítanie dát:
Dáta použité v tomto príklade nájdete tu: Odkazy na použité a reálne dáta
Potom stačí zavolať samotnú funkciu garchFit()
:
model = garchFit(~arma(8,1,8) + garch(1,1), data = data)
Výsledok (ukázaná len časť výpisu):
Series Initialization: ARMA Model: arma Formula Mean: ~ arma(1, 2, 1) GARCH Model: garch Formula Variance: ~ garch(1, 1) ARMA Order: 1 0 Max ARMA Order: 1 GARCH Order: 1 1 Max GARCH Order: 1 Maximum Order: 1 Conditional Dist: norm h.start: 2 llh.start: 1 Length of Series: 100 Recursion Init: mci Series Scale: 4.132703
Ak chceme podrobnejší výpis, použijeme:
summary(model)
Verifikácia odhadnutého (G)ARCH modelu
Odhadnutý model je potrebné verifikovať pomocou rezíduí. Tie musia byť štandardizované, čo dosiahneme nasledovným príkazom:
GarchRezidua = model@residuals / model@sigma.t
Po výpočte štandardizovaných rezíduí môžeme overiť kvalitu modelu pomocou:
- ArchTest – test na prítomnosť heteroskedasticity,
- Ljung-Box štatistiky – test na autokorelácie rezíduí,
- BDS testu – test na nezávislosť rezíduí,
- Grafickej diagnostiky – pomocou Q-Q grafov (kvantil-kvantil).
Výsledky týchto testov nám pomôžu rozhodnúť, či model dostatočne popisuje časový rad alebo je potrebné model upraviť.
ArchTest pre GARCH modely
ArchTest nájdete podrobne popísaný v sekcii ARIMA modely. V prípade GARCH modelov testujeme rezíduá vypočítané z GARCH procesu.
Testujeme nulovú hypotézu, že v rezíduách sa nenachádza ďalší ARCH efekt.
Ak je hodnota p-value
väčšia ako zvolená hladina významnosti, túto hypotézu prijímame.
Najčastejšie sa odporúča testovať pre lags = 1, 5, 12
.
ArchTest(GarchRezidua, lags = 1)
Výsledok:
ARCH LM-test; Null hypothesis: no ARCH effects data: GarchRezidua Chi-squared = 0.0582, df = 1, p-value = 0.8094
Vzhľadom na vysokú hodnotu p-value = 0.8094 nemáme dôkaz o prítomnosti ďalšieho ARCH efektu v rezíduách — rezíduá sú v poriadku.
Diagnostika pomocou Ljung-Box štatistiky
Výstup zo summary(model)
obsahuje niekoľko štatistických testov štandardizovaných reziduí. Medzi nimi sa nachádza aj
Ljung-Box štatistika, ktorá testuje autokoreláciu v rezíduách.
Ak je hodnota p-value
menšia ako zvolená hladina významnosti (napr. 0.05), môžeme zamietnuť hypotézu o bielom šume a predpokladáme,
že rezíduá obsahujú ešte závislosť.
Ukážka výstupu:
Standardised Residuals Tests: Statistic p-Value Jarque-Bera Test R Chi^2 6.316023 0.04251018 Shapiro-Wilk Test R W 0.9645913 0.00866055 Ljung-Box Test R Q(10) 37.45633 4.717499e-05 Ljung-Box Test R Q(15) 41.64911 0.0002544548 Ljung-Box Test R Q(20) 47.70409 0.0004679968 Ljung-Box Test R^2 Q(10) 6.301758 0.7893057 Ljung-Box Test R^2 Q(15) 10.42755 0.7920196 Ljung-Box Test R^2 Q(20) 11.74053 0.9247172 LM Arch Test R TR^2 10.19812 0.5985843
Z výsledkov môžeme vyvodiť, že napr. test Ljung-Box R Q(10) má veľmi nízke p-value = 4.7e-05
, teda existuje významná autokorelovaná štruktúra.
Naopak Ljung-Box R² testy naznačujú, že pre štvorce reziduí autokorelácia už nie je prítomná, čo naznačuje, že GARCH model dobre zachytil volatilitu.
Diagnostika rezíduí pomocou BDS testu
Ďalším spôsobom overenia kvality GARCH modelu je BDS test, ktorý zisťuje prítomnosť nelineárnych závislostí v rezíduách.
Ak je p-value
väčšia ako hladina významnosti, rezíduá sú náhodné (biely šum) a GARCH efekt je správne zachytený.
Príkaz v R:
bds.test(GarchRezidua)
Ukážka výstupu:
BDS Test data: GarchRezidua Embedding dimension = 2 3 Epsilon for close points = 0.5025 1.0050 1.5075 2.0100 Standard Normal = [ 0.5025 ] [ 1.005 ] [ 1.5075 ] [ 2.01 ] [ 2 ] -0.6156 0.4706 0.4590 0.6581 [ 3 ] -0.2098 1.5286 1.3965 1.5571 p-value = [ 0.5025 ] [ 1.005 ] [ 1.5075 ] [ 2.01 ] [ 2 ] 0.5382 0.6379 0.6463 0.5105 [ 3 ] 0.8338 0.1264 0.1626 0.1194
Ako vidíme, väčšina p-hodnôt je väčšia než 0.05, čo znamená, že BDS test nepotvrdil prítomnosť ďalšej štruktúry a rezíduá možno považovať za náhodné. Model tak adekvátne zachytáva dynamiku série.
Grafická diagnostika pomocou teoretických kvantilov
Táto diagnostika umožňuje vizuálne posúdiť, či majú rezíduá GARCH modelu normálne rozdelenie. Porovnáva sa rozdelenie štandardizovaných rezíduí s teoretickým normálnym rozdelením pomocou tzv. QQ-plotu.
Príkaz v R:
qqnorm(GarchRezidua) abline(0, 1)
V ideálnom prípade budú body na grafe kopírovať priamku, čím sa potvrdí normalita rezíduí. Odchýlky od priamky môžu naznačovať nevyhovujúce rozdelenie, čo by si vyžadovalo transformáciu dát alebo výber iného modelu.

Výsledný zápis (G)ARCH modelu
Po odhadnutí parametrov môžeme model zapísať vo forme rovnice. Pre (G)ARCH modely sú kľúčové parametre:
omega
(konštanta), alpha1
(váha predchádzajúceho šoku) a beta1
(váha predchádzajúcej podmienenej
volatility).
Príklad odhadnutých parametrov:
omega = 0.03447 alpha1 = 1.00000 beta1 = 0.35933
Na základe toho zapíšeme výsledný model GARCH(1,1) takto:
σ²t = 0.03447 + 1.00000·ε²t−1 + 0.35933·σ²t−1
Tento zápis opisuje spôsob, akým sa vypočítava aktuálna podmienená variancia na základe predchádzajúcich rezíduí a variancie.
Prítomnosť vysokého alpha1
naznačuje silnú reakciu na nové informácie.
Zdroje:
- Bábel, J.: DIPLOMOVÁ PRÁCA: Moderné prognostické metódy v modelovaní vysokofrekvenčných dát, 2008
- Falát, L., Laštík, T., Tkáč, P.: FRI MANUÁL v1.0