ARCH·GARCH·EGARCH·IGARCH로 금융 변동성 예측하기
ARCH·GARCH·EGARCH·IGARCH의 조건부 이분산 구조와 분포 선택, 진단, 백테스트를 바탕으로 금융 시계열 변동성을 예측하는 방법을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
수익률 분산이 고정되지 않을 때
금융 수익률의 분산은 시간에 따라 움직인다. 변동성 모델은 이 시간가변적 분산을 추정하고 예측하기 위한 방법론이며, 리스크 관리, 옵션 가격결정, 스트레스 테스트에서 사용된다.
수익률은 다음처럼 나타낼 수 있다.
- 조건부 이분산(Conditional Heteroskedasticity)
수익률 r_t = μ_t + ε_t, ε_t = σ_t z_t, z_t ~ i.i.d(0,1). 시점 t의 분산 σ_t^2가 과거 정보에 조건부로 변화하는 구조.
ARCH(p)는 과거 충격의 제곱을 분산에 반영한다.
- ARCH(p)
σt^2 = ω + Σ{i=1..p} αi ε{t-i}^2. 과거 충격의 제곱(뉴스)만 반영. 단기 메모리 표현에 유리.
GARCH(p,q)는 과거 충격뿐 아니라 과거 조건부 분산까지 함께 반영한다.
- GARCH(p,q)
σt^2 = ω + Σ α_i ε{t-i}^2 + Σ βj σ{t-j}^2. 변동성 군집과 장기 지속성(persistence) 포착. 실무 기본형: GARCH(1,1).
EGARCH(p,q)는 로그 분산을 사용하므로 음수 분산을 피하며, 충격 방향에 따른 비대칭도 표현한다.
- EGARCH(p,q)
log σt^2 = ω + Σ β_j log σ{t-j}^2 + Σ [γ z_{t-i} + α(|z_{t-i}| - E|z|)]. 로그 분산 모형으로 음수 분산 방지, 레버리지(비대칭) 효과 표현.
IGARCH(Integrated GARCH)는 GARCH(1,1)에서 α+β = 1인 경우처럼 분산의 단위근 특성을 다룬다.
- IGARCH(Integrated GARCH)
α+β = 1(예: GARCH(1,1)). 분산의 단위근 특성. 무조건분산(Unconditional variance) 미존재, 충격의 영속적 영향 모델링.
표준화 잔차 z_t의 분포는 Gaussian, Student-t, Skew-t를 사용할 수 있다. 팻테일 데이터에서는 Student-t 계열이 VaR/ES 예측 안정화에 유리하다.
평균과 분산을 함께 설계하는 과정
입력 데이터에서는 로그수익률 변환, 결측·이상치 처리, 캘린더 효과 점검이 선행된다. 평균방정식 μ_t에는 ARMA 또는 ARIMAX를 적용해 잔차의 백색성을 확보한다. ARIMAX에는 거시변수·이벤트 더미를 포함할 수 있다.
ARCH/GARCH는 양의 제약(ω>0, α_i≥0, β_j≥0)과 정상성(Σα+Σβ<1)을 고려한다. EGARCH는 로그 분산을 쓰므로 양의 제약이 필요 없고 γ로 레버리지 효과를 포착한다. IGARCH는 지속성=1을 가정하므로 장기평균 분산이 정해지지 않으며, 장기 하향편향을 피하는 데 사용된다.
모수는 최대우도추정(MLE)으로 추정하고, 정보기준(AIC/BIC) 및 ARCH-LM·Ljung–Box 같은 유효성 검정을 함께 본다. QQ-plot과 잔차 팻테일 지표로 분포 적합성을 평가하며, 비대칭이 필요할 때는 EGARCH를 고려한다.
예측 단계에서는 h-스텝 변동성을 구해 VaR/ES를 산출한다. Kupiec/Christoffersen 테스트는 초과손실의 빈도와 독립성을 검증한다. 운영에서는 롤링 재추정, 모델 버전관리, 재현성을 위한 시드 고정, 원소스·원파이프라인 원칙이 필요하다.
모형마다 달라지는 제약과 운용 특성
| 모델 | 성능(적합/예측) | 확장성 | 일관성(양의 분산/비대칭) | 안정성(정상성 조건) | 운영 편의 |
|---|---|---|---|---|---|
| ARCH(p) | 단기충격 민감, p 증가 시 과적합 리스크 | p 커지면 비효율 | 양의 보장, 비대칭 미지원 | Σα_i < 1 시 분산 유한 | 파라미터 다수, 추정 부담 큼 |
| GARCH(1,1) | 베이스라인 우수, 대부분 자산에 견조 | 고빈도/대규모에도 실용 | 양의 보장, 비대칭 미지원 | α+β < 1 필요 | 구현 용이, 추정 안정 |
| EGARCH(1,1) | 레버리지·팻테일 처리 시 우수 | 다변량 확장은 복잡 | 로그형으로 음수 분산 불가, 비대칭 지원 | |β| < 1 등 수렴 조건 | 제약 완화, 해석 직관성 |
| IGARCH(1,1) | 장기 지속성 자료에 적합 | GARCH와 동등 | 양의 보장, 비대칭 미지원 | α+β = 1, 무조건분산 없음 | 장기평균 추정 불필요, 예측 단순 |
주: EGARCH 정상성은 모수 제약으로 수렴 보장, IGARCH는 무조건분산 미정.
조건부 분산이 미래로 전개되는 방식
GARCH(1,1)의 1-스텝 예측은 다음과 같다.
- σ*{t+1|t}^2 = ω + α ε_t^2 + β σ_t^2
h-스텝에서는 장기분산 v̄ = ω / (1 − α − β)를 향해 σ*{t+h|t}^2 → v̄ 수렴.
IGARCH(1,1)는 α+β=1이며 장기분산이 정해지지 않는다. σ_{t+h|t}^2는 최근 σ_t^2에 근접하고 충격의 영속성을 반영한다.
EGARCH(1,1)는 다음 로그 공간의 식으로 예측한다.
- log σt^2 = ω + β log σ{t-1}^2 + γ z*{t-1} + α(|z*{t-1}| − E|z|). 비대칭(γ)과 팻테일에 민감. 지수(로그) 공간에서 예측.
Student-t 또는 Skew-t를 선택하면 극단치에 대한 VaR/ES 예측을 안정화할 수 있다. 이때 자유도와 왜도 모수의 식별성을 확인해야 한다.
리스크 측정과 헤지에 연결하는 방법
시장 리스크 관리에서는 일일 VaR/ES를 산출하고 백테스트 합격률을 개선하며, 결과를 리밸런싱·레버리지 한도와 연결할 수 있다.
옵션 가격결정과 헤지에서는 예측 변동성을 바탕으로 IV 스마일을 스무딩하고 델타-베가 헤지 감도를 조정한다. 포트폴리오 리스크 패리티는 예측 변동성으로 가중치를 산정해 리스크 균형화를 구현한다.
스트레스·시나리오 분석에서는 충격 경로(ε_t 시퀀스)를 시뮬레이션해 경계조건을 검증한다.
재추정 실패까지 포함한 운영 설계
파이프라인은 입력(가격·캘린더), 전처리, 평균·분산 동시추정, 진단, 예측, 리포팅 순서로 구성한다. 롤링 윈도우 재학습은 예: 3~5년을 권장한다.
데이터 스냅샷을 고정하고, 추정과 예측은 동일 배치에서 원자적으로 수행한다. 파라미터와 시드는 버전관리 대상이다.
비수렴이 발생하면 returns×100 스케일링, 초기값 다중 시도, 제약 완화(EGARCH), 분포 교체(Gaussian→t)를 적용할 수 있다. 이상치 구간은 윈도우에서 제외하거나 로버스트 추정을 사용한다.
Python에서 GARCH와 EGARCH를 추정하는 예시
전제조건: Python 3.11+, pandas 2.x, arch 6.x, yfinance 0.2.x
환경 설치:
- pip install arch yfinance
S&P 500 일일 종가에서 로그수익률을 계산한 뒤 GARCH(1,1), EGARCH(1,1)을 적합하고, 1~10일 변동성 예측과 1% VaR을 산출한다.
import warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
import yfinance as yf
from arch import arch_model
# 데이터 로드
spx = yf.download("^GSPC", start="2015-01-01", progress=False)["Adj Close"].dropna()
ret = 100 * np.log(spx).diff().dropna() # 수익률(%)
# GARCH(1,1), Student-t
garch = arch_model(ret, mean="ARX", lags=0, vol="GARCH", p=1, q=1, dist="t")
g_res = garch.fit(update_freq=0, disp="off")
print("GARCH(1,1):", g_res.params.round(4))
# EGARCH(1,1), Student-t
egarch = arch_model(ret, mean="ARX", lags=0, vol="EGARCH", p=1, o=0, q=1, dist="t")
e_res = egarch.fit(update_freq=0, disp="off")
print("EGARCH(1,1):", e_res.params.round(4))
# 10일 예측
g_fc = g_res.forecast(horizon=10, reindex=False)
e_fc = e_res.forecast(horizon=10, reindex=False)
# 조건부분산(%)^2 → 일변동성(%) 변환
g_vol = np.sqrt(g_fc.variance.values[-1])
e_vol = np.sqrt(e_fc.variance.values[-1])
print("GARCH 1~10일 예측 변동성(%):", np.round(g_vol, 3))
print("EGARCH 1~10일 예측 변동성(%):", np.round(e_vol, 3))
# 1% VaR (Student-t, 예측평균 0 가정)
from scipy.stats import t
nu = g_res.params.get("nu", 8.0)
q = t.ppf(0.01, df=nu)
var1 = g_vol[0] * q # 1일 1% VaR(%)
print("GARCH 1일 1% VaR(%):", round(var1, 3))
리샘플링은 거래일 기준으로 일관되게 처리하고, 롤링 윈도우 추정과 오버래핑 예측을 관리한다. 백테스트는 횟수 초과, 독립성, 시기별 파손 분석까지 자동화하며 모델 스위칭 규칙을 정의한다.
예측 성능과 운영상 기대할 수 있는 변화
단순 EWMA와 비교해 단기 VaR 예측의 Brier/QLoss가 5~15% 개선된 사례가 관측되었다. 이 수치는 자산·기간에 의존한다.
예측 변동성을 활용한 리스크 패리티 또는 목표 변동성 전략에서는 드로다운이 5~10% 완화될 수 있다. 로그형 EGARCH와 t-분포를 채택하면 극단치 민감도를 완화하고 백테스트 합격률 개선을 기대할 수 있다.
지속성(α+β), 레버리지(γ) 같은 파라미터는 시장 체 regime를 진단하는 해석 단서가 된다. GARCH(1,1)과 Student-t를 기준선으로 두고, 레버리지가 있으면 EGARCH를, 장기 지속성이 강하면 IGARCH를 선택한다.