rugarch 패키지

R에서의 GARCH 모델

Kris Boudt

Professor of finance and econometrics

상수 평균을 가진 정규 GARCH(1,1) 모형

정규 GARCH 모형

$$ R_t = \mu + e_t $$ $$ e_t \sim N(0, \sigma^2_t) $$ $$ \sigma^2_t = \omega + \alpha e^2_{t-1} + \beta \sigma^2_{t-1} $$

  • 네 개의 모수: $\mu, \omega, \alpha, \beta$.
  • 최대우도법으로 추정: 관측된 수익률 시계열을 생성했을 가능성이 가장 높은 모수 값을 탐색합니다.
R에서의 GARCH 모델

Alexios Ghalanos

library(rugarch)
citation("rugarch")

To cite the rugarch package, please use: Alexios Ghalanos (2018). rugarch: Univariate GARCH models.R package version 1.4-0.
R에서의 GARCH 모델

워크플로

  • 세 단계:

    • ugarchspec(): 사용할 GARCH 모형 지정 (평균 $\mu_t$, 분산 $\sigma^2_t$, $e_t$의 분포)

      • ugarchfit(): 수익률 시계열 $R_1,...,R_T$에 GARCH 모형 추정.

      • ugarchforecast(): 추정된 GARCH 모형으로 $R_{T+1}$,...의 변동성 예측.

R에서의 GARCH 모델

R에서의 워크플로

ugarchspec()으로 사용할 GARCH 모형을 지정합니다.

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                           variance.model = list(model = "sGARCH"),
                           distribution.model = "norm")

ugarchfit()으로 GARCH 모형을 추정합니다.

garchfit <- ugarchfit(data = sp500ret, spec = garchspec)

ugarchforecast()으로 미래 수익률의 변동성을 예측합니다.

garchforecast <- ugarchforecast(fitORspec = garchfit, n.ahead = 5)
R에서의 GARCH 모델

ugarchfit 객체

  • ugarchfit은 GARCH 모형 추정 결과를 담은 객체를 반환합니다.
  • coef, uncvar, fitted, sigma 메서드 사용:
# Coefficients
garchcoef <- coef(garchfit)
# Unconditional variance
garchuncvar <- uncvariance(garchfit)
# Predicted mean
garchmean <- fitted(garchfit) 
# Predicted volatilities
garchvol <- sigma(garchfit)

R에서의 GARCH 모델

일별 S&P 500 수익률에 대한 GARCH 계수

print(garchcoef)
          mu        omega       alpha1        beta1 
5.728020e-04 1.220515e-06 7.792031e-02 9.111455e-01 

$$ R_{t} = 5.7 \times 10^{-4} + e_{t} $$ $$ e_{t} \sim N(0, \hat{\sigma}^{2}_{t}) $$ $$ \hat{\sigma}^{2}_{t} = 1.2 \times 10^{-6} + 0.08 e^{2}_{t-1} + 0.91 \hat{\sigma}^{2}_{t-1} $$

sqrt(garchuncvar)
0.01056519
R에서의 GARCH 모델

추정된 변동성

garchvol <- sigma(garchfit)
plot(garchvol)

R에서의 GARCH 모델

미래 변동성은 어떨까요?

tail(garchvol, 1)
2017-12-29 0.004862908

시계열 종료 이후 날들의 변동성은 어떻게 될까요?

R에서의 GARCH 모델

h일 선행 변동성 예측

  • ugarchforecast 객체에 sigma() 메서드를 적용하면 변동성 예측값을 얻을 수 있습니다:
sigma(garchforecast)
      2017-12-29
T+1  0.005034754
T+2  0.005127582
T+3  0.005217770
T+4  0.005305465
T+5  0.005390797
R에서의 GARCH 모델

h일 선행 변동성 예측

ugarchforecast 객체에 fitted() 메서드를 적용하면 평균 예측값을 얻을 수 있습니다:

fitted(garchforecast)
      2017-12-29
T+1  0.000572802
T+2  0.000572802
T+3  0.000572802
T+4  0.000572802
T+5  0.000572802
R에서의 GARCH 모델

전술적 자산 배분에의 적용

위험 자산(변동성 $\sigma_t$)에 비중 $w$를 투자하고 나머지 $1-w$를 무위험 예금에 보유하는 포트폴리오의 변동성은

$$ \sigma_p = w \sigma_t$$

$w$를 어떻게 설정할까요? 변동성 목표 방법: 연환산 포트폴리오 변동성이 목표치(예: 5%)가 되도록 $w$를 설정합니다. 즉:

$$ w^* = 0.05 /\sigma_t $$

GARCH 변동성이 변하므로 최적 비중도 함께 변합니다.

R에서의 GARCH 모델

rugarch를 직접 사용해 봅시다!

R에서의 GARCH 모델

Preparing Video For Download...