본문 바로가기
Statistics/Time Series Analysis

TSA - ARIMA + GARCH

by bents 2020. 12. 2.


# 복습

- ARMA : 추세에 대한 모델 ( 가격의 자기상관성AR, 평균가격의 자기상관성MA)
- ARIMA : 추세의 변화속도(미분;방향&폭)에 대한 모델

 

# SARIMA

: 계절성 패턴이 존재하는 추세의 변화속도에 대한 모델

 

# 필수개념 - 이분산성의 정의와 종류

the standard deviations of a predicted variable, monitored over different values of an independent variable or as related to prior time periods, are non-constant 이분산성이란 잔차의 분산이 일정하지 않고 특정한 패턴을 가지고 있음을 말한다. 

Conditional heteroskedasticity identifies nonconstant volatility 
related to prior period's (e.g., daily) volatility. 

Unconditional heteroskedasticity refers to general structural changes in volatility 
that are not related to prior period volatility. 
used when future periods of high and low volatility can be identified.

주식가격은 과거와의 상관성이 깊다. 또한 종목간의 상관성이 존재한다. 동일 업종간 상관성이 존재함.

예를 들어 패닉셀, 패닉바잉 구간에서 강한 급등/강한 급락이 나온다. 즉, 어제의 분산이 내일의 분산에 영향을 주는 기간이 존재한다. 분산모델도 그냥 AR모델을 사용할까? NO! 등분산(정규성)조건 만족못함. 주식가격의 오차(분산)에 대한 모델링은 MA, ARMA, ARIMA도 있지만 이분산성(White noise에 추세/패턴)때문에 성능낮아짐. 이분산성(분산확산)과 자기상관성을 모두 모델링해보자!

 

# ARCH란? Autoregressive Conditional Heteroskedastic 

조건부 이분산성에 대한 모델이다. 과거에 영향받는 이분산성에 대한 분산모델임! 

즉, 분산의 과거값을 사용하여 시간에 따른 분산의 변화를 설명하는 모델

= 현재 잔차(y-yhat)의 분산은 과거 잔차의 분산의 선형조합

 

*주의 : 어디까지나 분산에 대한 모델링임.

          보통 추세나 계절적 특성이 있는 데이터는 ARIMA, SARIMA가 적절함. 기억!

# ARCH(2)
# 제곱하면 잔차eps의 분산.
eps[t] = w[t] * np.sqrt((a0 + a1*eps[t-1]**2 + a2*eps[t-2]**2))

 

# GARCH란?

ARCH에 ARMA 모델방식을 적용한 모델.

= 현재 값의 분산(y의 분산)은 과거 분산과 과거 잔차의 분산의 선형조합

    *주의* 잔차_t = 분산_t * white noise

# GARCH(1,1)
sigsq[i] = a0 + a1*(eps[i-1]**2) + b1*sigsq[i-1]
eps[i] = w[i] * np.sqrt(sigsq[i])

 

## ARMA와 GARCH의 차이점은? 

ARMA: 주식가격(의 평균)은 과거 주가의 선형결합과 과거 (평균에 대한)잔차값의 선형조합의 합. 분산고정.

GARCH: 주식가격의 분산은 과거 주가 분산의 선형결합과 과거 잔차 분산의 선형조합의 합. 평균고정.

ARMA-GARCH : 과거 평균값, 과거 분산값을 모두 고려하는 선형모델.

*ARMA계열도 동일하게 적용가능. ARIMA, SARIMA, AR, MA

 

# 활용

Now apply the procedure to a financial time series. The process is as follows:

  • Iterate through combinations of ARIMA(p, d, q) models to best fit our time series.
  • Pick the GARCH model orders according to the ARIMA model with lowest AIC.
  • Fit the GARCH(p, q) model to our time series.
# 1. Find the best ARIMA fit 
# Returns meas "diff=1" (so, set differencing to 0) 
  res_tup = _get_best_model(TS)
  order = res_tup[1]
  model = res_tup[2]
  
#2. feed result of ARIMA, to GARCH model
  p_ = order[0]
  o_ = order[1]
  q_ = order[2]

#3. GARCH fit
import arch
garch = arch_model(returns, vol='garch', p=1, o=0, q=1)
garch_fitted = garch.fit() # .fit(update_freq=5, disp='off')

# predict one-step out-of sample forecast
garch_forecast = garch_fitted.forecast(horizon=1)

 

# ARIMA-GARCH

개념설명 생략 ; 합치면 된당.

- 활용

 

 

 

*source: 

www.investopedia.com/terms/h/heteroskedasticity.asp

stats.stackexchange.com/questions/41509/what-is-the-difference-between-garch-and-arma

 

What is the difference between GARCH and ARMA?

I am confused. I don't understand the difference a ARMA and a GARCH process.. to me there are the same no ? Here is the (G)ARCH(p, q) process $$\sigma_t^2 = \underbrace{ \underbrace{ \

stats.stackexchange.com

'Statistics > Time Series Analysis' 카테고리의 다른 글

TSA - 3. 패턴분해  (0) 2021.01.22
TSA - 2. 일반회귀  (0) 2021.01.22
TSA - 1. 시각화 및 벤치마크 예측기법  (0) 2021.01.22
모수추정방법 /  (0) 2021.01.22
TSA - Integration, Cointegration, and Stationarity  (0) 2020.11.26