R에서의 GARCH 모델
Kris Boudt
Professor of finance and econometrics
Robert Engle

Tim Bollerslev






평균에 대한 AR(MA) 모델은 Datacamp의 시계열 분석 강좌를 참고하십시오.



GARCH 프로세스를 현실적으로 만들기 위한 조건:
$\omega$, $\alpha$, $\beta$는 $>0$: 이는 $\sigma^2_t >0$을 항상 보장합니다.
$\alpha + \beta < 1$: 이는 예측 분산 $\sigma^2_t$가 항상 장기 분산으로 회귀함을 보장합니다:
$$ \sigma^{2}_{t} = \omega + \alpha e^{2}_{t-1} \beta \sigma^{2}_{t-1} $$
# Set parameter values
alpha <- 0.1
beta <- 0.8
omega <- var(sp500ret) * (1 - alpha - beta)
# Then: var(sp500ret) = omega / (1 - alpha - beta)
# Set series of prediction error
e <- sp500ret - mean(sp500ret) # Constant mean
e2 <- e ^ 2
# We predict for each observation its variance.
nobs <- length(sp500ret)
predvar <- rep(NA, nobs)
# Initialize the process at the sample variance
predvar[1] <- var(sp500ret)
# Loop starting at 2 because of the lagged predictor
for (t in 2:nobs){
predvar[t] <- omega + alpha * e2[t - 1] + beta * predvar[t-1]
}
# Volatility is sqrt of predicted variance
predvol <- sqrt(predvar)
predvol <- xts(predvol, order.by = time(sp500ret))
# We compare with the unconditional volatility
uncvol <- sqrt(omega / (1 - alpha-beta))
uncvol <- xts(rep(uncvol, nobs), order.by = time(sp500ret))
# Plot
plot(predvol)
lines(uncvol, col = "red", lwd = 2)

R에서의 GARCH 모델