DCC-GARCH와 Realized GARCH로 변동성과 상관 리스크 다루기

DCC-GARCH와 Realized GARCH의 구조, 데이터 요건, 진단 방법을 바탕으로 변동성·상관 리스크 측정에 적용하는 방법을 정리한다.

2026-08-14 · 최초 발행 2024-04-29

변동성과 상관을 함께 추정해야 하는 이유

금융 수익률의 조건부 분산은 시간에 따라 달라지고, 자산 간 상관도 고정돼 있지 않다. 단변량 GARCH만으로는 포트폴리오 공분산이나 스트레스 국면의 상관 변화까지 충분히 설명하기 어렵다.

DCC-GARCH와 Realized GARCH는 이 문제를 서로 다른 방향에서 다룬다. 전자는 다변량 상관의 동학을 모델에 넣고, 후자는 초고빈도 가격에서 집계한 실현변동성을 잠재 변동성 추정에 결합한다.

GARCH(Generalized Autoregressive Conditional Heteroskedasticity)는 과거 충격과 변동성으로 현재 조건부 분산을 설명하는 시계열 모델이다. DCC-GARCH(Dynamic Conditional Correlation GARCH)는 각 자산의 조건부 분산을 개별 GARCH로 추정한 뒤, 표준화 잔차를 바탕으로 갱신되는 상관행렬을 결합하는 다변량 확장이다. Realized GARCH는 잠재 변동성에 RV, bipower variation 같은 실현변동성 관측치를 측정방정식으로 연결한다.

모델별 정보 활용 방식

DCC-GARCH에서는 공분산을 Σt = Dt Rt Dt로 분해한다. Dt는 대각 조건부 표준편차 행렬이고, Rt는 시간에 따라 변하는 상관행렬이다. 개별 분산을 먼저 추정하고 상관을 다음 단계에서 추정하는 2단계 절차를 사용하므로, 다변량 구조를 직접 다루는 방식보다 차원 확장에 상대적으로 유리하다. 상관 업데이트에는 평균회귀형 구조가 쓰이며 cDCC, aDCC 변형도 포함된다.

Realized GARCH는 상태 방정식과 측정 방정식을 함께 사용한다. 측정 방정식에서는 log(실현변동성)가 log(잠재분산), 잡음, 그리고 선택적으로 레버리지 항과 연결된다. 실현변동성은 일중 제곱수익률을 합산해 만들며, 더 정교한 관측 정보를 변동성 추정과 예측에 반영할 수 있다.

추정에서는 DCC-GARCH가 개별 GARCH와 DCC를 잇는 2단계 QMLE를 사용해 계산 부담을 완화한다. 꼬리 위험을 다루기 위해 Student-t나 skew-t 분포를 적용할 수 있다. Realized GARCH는 상태와 측정 방정식을 준최대우도(QMLE)로 공동 추정하며, 실현변동성의 잡음 구조를 반영하면 효율성을 높일 수 있다.

데이터 품질과 운영 조건

DCC-GARCH에는 일간 또는 주간 수익률과 결측·이상치 처리 절차가 필요하다. 자산 수가 많아질수록 상관 추정의 안정성을 위해 shrinkage나 팩터 구조를 검토해야 한다. 계산 부담은 자산 수 증가에 따라 O(N^2)~O(N^3)까지 커질 수 있어 팩터-DCC, 클러스터링, 블록 구조가 차원 축소 수단이 된다.

Realized GARCH는 초고빈도 데이터의 동기화와 미시구조 잡음 완화가 선행돼야 한다. 서브샘플링과 프리애버리징을 적용할 수 있으며, 실현변동성은 일중 제곱수익률 합으로 집계한다. 고빈도 처리 비용은 사전 집계 파이프라인, 병렬화, RV/BV 요약지표 캐싱으로 줄일 수 있다.

두 모델 모두 잔차 독립성·이분산성을 Ljung-Box와 ARCH-LM으로 확인하고, 분포 적합성을 점검해야 한다. 리스크 모델은 VaR/ES 백테스트로 실효성을 검증한다. 운영 단계에서는 롤링 또는 확장 윈도우, 파라미터 재추정 주기, 양의 분산과 수렴성 같은 경계조건, 실패 시 폴백 전략을 미리 정의한다.

포트폴리오와 파생상품 리스크에 적용하는 방식

시간가변 공분산은 최소분산 포트폴리오와 리스크패리티 구성에 활용할 수 있다. 거래비용을 고려한다면 상관 변동성 임계치를 기준으로 리밸런싱 규칙을 둘 수 있다.

시장위험 관리에서는 DCC-GARCH 공분산으로 포트폴리오 손익분포 시뮬레이션을 정교화하고, Realized GARCH로 단기 변동성 nowcasting의 정밀도를 높일 수 있다. 동적 상관은 최적 헤지비율 산출에 쓰이며, 섹터와 요인 베타를 시변으로 추정해 리스크 베팅을 조정하는 데도 연결된다.

옵션과 파생상품에서는 실현변동성 기반 신호로 IV-RV 스프레드를 모니터링하고, 단기 변동성 예측을 델타-베가 헤지 정책에 반영할 수 있다.

비수렴/경계 위반비수렴/양정합성 위반미시구조 잡음입력: 종가 수익률, 초고빈도가격전처리: 동기화/결측/이상치처리실현변동성 계산: 일별 RV = Σr_intraday^2단변량 GARCH 사전 추정Realized-GARCH 명세/추정DCC-GARCH 명세/추정진단: 잔차 독립성/분포, VaR백테스트예측: h-step 변동성·상관출력: VaR/ES, 헤지비율,포트폴리오 공분산초기값/분포/옵티마이저재설정서브샘플링/프리애버리징/로버스트 RV

DCC-GARCH와 Realized GARCH의 선택 기준

관점 DCC-GARCH Realized GARCH
성능(예측력) 중장기 공분산·상관 예측 강점. 분포 선택으로 꼬리 리스크 대응 단기 변동성 nowcasting 우수. 고빈도 품질이 예측력을 좌우
확장성 N 증가 시 계산·메모리 부담. 팩터/블록 구조로 완화 자산별 독립 추정 용이. 고빈도 집계 파이프라인 필요
일관성(추정 안정성) 2단계 QMLE로 견고. 상관 업데이트 민감도 튜닝 필요 측정방정식으로 정보 효율↑. 실현치 잡음 처리 필수
안정성(로버스트) 이상치·점프에 민감. 로버스트 잔차·필터 필요 미시구조 잡음에 민감. 로버스트 RV 사용 권장
운영 편의 일별 수익률만으로도 운용 용이 고빈도 수집/정제 파이프라인 요구. 초기 구축 비용 존재

R에서 실현변동성과 Realized GARCH 추정하기

전제조건은 R ≥ 4.2와 rugarch, rmgarch, xts 패키지 설치다. 데이터는 단일 자산 수익률 r(xts), 다변량 수익률 R(xts, 열=자산), 초고빈도 가격 hf_price(xts, 분봉 이상)를 사용한다.

# 패키지
library(xts)
library(rugarch)

# 1) 실현변동성 계산 (초고빈도 가격 → 일별 RV)
# hf_price: xts, 정렬된 초고빈도 체결가 (예: 1분)
hf_ret <- diff(log(hf_price))            # 초고빈도 로그수익률
rv_daily <- apply.daily(hf_ret^2, sum)   # 일별 RV 합산
rv_daily <- rv_daily[!is.na(rv_daily)]

# 2) 일별 종가 수익률 r와 날짜 정렬
# r: xts, 일별 로그수익률
common_idx <- intersect(index(r), index(rv_daily))
r  <- r[common_idx]
rv <- rv_daily[common_idx]

# 3) Realized-GARCH 명세 및 추정
spec_rg <- ugarchspec(
  mean.model     = list(armaOrder = c(0, 0)),
  variance.model = list(model = "realGARCH", garchOrder = c(1, 1)),
  distribution.model = "std"  # Student-t
)
fit_rg <- ugarchfit(spec = spec_rg, data = r, realizedVol = rv, solver = "hybrid")

# 4) 1일 선행 예측
fc_rg <- ugarchforecast(fit_rg, n.ahead = 1, realizedVol = tail(rv, 1))
sigma_fc <- sigma(fc_rg)  # 예측 표준편차

hf_price의 비동기와 결측은 리샘플링(예: 1분)으로 다루되 결측 보간은 지양하고 결측 구간을 제외한다. 미시구조 잡음은 서브샘플링(5~10분), 프리애버리징, 로버스트 RV와 highfrequency 패키지를 검토해 완화할 수 있다. 수렴하지 않으면 초기값을 다각화하고, 분포를 std에서 sstd로 바꾸거나, 경계조건을 완화하고 롤링 윈도우를 축소한다.

R에서 DCC-GARCH 공분산을 예측하기

library(rmgarch)
library(rugarch)

# R: xts (T x N), 각 열이 자산 수익률
N <- ncol(R)

# 1) 개별 GARCH 사양
uspec <- ugarchspec(
  mean.model     = list(armaOrder = c(0, 0)),
  variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
  distribution.model = "std"
)
mspec <- multispec(replicate(N, uspec))

# 2) DCC 사양 및 추정
dcc_spec <- dccspec(uspec = mspec, dccOrder = c(1, 1), distribution = "mvt") # 다변량 t
dcc_fit  <- dccfit(dcc_spec, data = R)

# 3) 1일 선행 공분산/상관 예측
dcc_fc   <- dccforecast(dcc_fit, n.ahead = 1)
Rc1      <- rcov(dcc_fc)[[1]][,,1]  # 예측 공분산행렬
Rt1      <- rcor(dcc_fc)[[1]][,,1]  # 예측 상관행렬

DCC-GARCH를 운영할 때는 양정합성(positive definiteness)이 유지되는지 확인한다. 실패하면 shrinkage(예: Ledoit-Wolf)와 혼합하는 방식을 고려한다. 고차원(N>50)에서는 팩터-DCC, 블록-DCC, 포트폴리오 분해 접근이 필요하며, 롤링 재추정 주기는 매일 부분 업데이트와 주간 완전 재추정처럼 운영 비용과 안정성의 균형을 맞춰 설계한다.

기대할 수 있는 변화와 적용 방향

VaR 실패율(POF test)은 시장·자산군·윈도우에 따라 1030% 개선 가능 범위가 있다. Realized GARCH는 단기 구간(15일)에서 변동성 예측 MSE/QLIKE 지표를 520% 개선한 사례가 빈번하며, 포트폴리오 분산 추정 오차 감소는 거래비용 고려 효율 Sharpe를 515%p 개선할 수 있다.

실현변동성 정보를 반영하면 리스크 신호의 시의성이 높아지고, DCC는 스트레스 국면의 상관 급등을 포착하는 데 도움이 된다. 백테스트와 진단을 체계화하면 모델 투명성과 규제 대응력을 높일 수 있으며, 운영 자동화는 재현성 강화로 이어진다.

단기 리스크 nowcasting에는 Realized GARCH를, 중장기 공분산·상관과 포트폴리오 판단에는 DCC-GARCH를 중심에 둘 수 있다. 고차원 환경에서는 팩터·블록·shrinkage 결합을 검토하고, 백테스트 기반 혼합 전략과 운영 자동화로 성능의 안정성을 관리한다.

변동성 모델DCC-GARCHRealized GARCH리스크 관리시계열