주식시장의 방향성을 예측하는 방법 중, 변곡점을 예측하는 방법(Change point detection)과 국면을 판단하는 방법(Market regime)이 많이 사용됨. 이 중 국면을 판단하는 방법으로 자주 사용되는 모델이 Hidden Markov Model(HMM). 이번 리서치에서는 HMM의 컨셉을 간단히 살펴보고, 이를 적용해서 섹터 로테이션 전략을 적용한 페이퍼인 “Sector Rotation in Times of Crisis”의 내용을 간단히 요약해 봄. 이어서 SPY 지수에 HMM 모델을 적용하여 간단한 트레이딩 전략을 시뮬레이션 해 봄. 국면을 판단하는 모델은 응용 방법이 다양하므로, 향후 다양한 전략에 응용이 가능할 것으로 기대
2. 응용사례
Pratiksha Sharma et al., “Sector Rotation in Times of Crisis”, Journal of Portfolio management
VIX 지수에 HMM을 적용하여 변동성 확대/축소 국면을 나눈 뒤 변동성 확대 국면에 채권에 투자하는 비중을 높이거나 변동성이 낮은 섹터 지수에 투자하는 전략
Ethan Johnson, “Using the Hidden Markov Model to Classify the S&P500, https://medium.datadriveninvestor.com/using-the-hidden-markov-model-to-classify-the-s-p500-9de74eacf452
GARCH 모형을 이용해서 변동성을 예측한 후, 해당 값을 이용한 HMM 모델을 통해 다음 예측 시기의 Regime을 예측
Matthew Wang et al., “Regime-Switching Factor Investing with Hidden Markov Models”, Risk and Financial Management,
HMM으로 3가지 Regime 을 구별한 후, 5개 팩터모델(파마-프랜치, Modified 파마-프랜치, Carhart, Value, AQR)의 국면별 성과를 이용하여 모델을 Rotation하며 투자하는 전략.
Kent Daniel et al., “A Hidden Markov Model of Momentum”, Colombia Business School
HMM을 이용하여 국면을 나눈 후, 모멘텀 전략을 다르게 적용하여 Momentum crash를 방지하고 더 나은 out-of-sample 성과를 보임
3. HMM 모델의 컨셉
HMM은 시계열 관측치를 통해 우리가 관찰할 수 없는 Hidden state를 추정하고자 함. 모델은 이 Hidden state가 마코프 확률가정을 따른다고 가정.
위 그림에서 관측치 X1, X2, X3는 우리가 관찰할 수 없는 latent variable Z에 따라 결정되는 것. 아래에서는 2가지 다른 분포에서 생성된 데이터를 생성하고, 이를 통해 HMM의 컨셉을 간단히 이해해보고자 함.
Markov Switching Model
Call: msmFit(object = mod, k = 2, sw = c(TRUE, TRUE), p = 0)
AIC BIC logLik
374.0329 388.4536 -185.0164
Coefficients:
Regime 1
---------
Estimate Std. Error t value Pr(>|t|)
(Intercept)(S) 2.1019 0.1173 17.919 < 2.2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.9776932
Multiple R-squared: 0
Standardized Residuals:
Min Q1 Med Q3 Max
-2.2574249385 -0.5520816898 -0.0008494965 0.4919211816 2.1296725982
Regime 2
---------
Estimate Std. Error t value Pr(>|t|)
(Intercept)(S) -3.1613 0.7048 -4.4854 7.278e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.354697
Multiple R-squared: 0
Standardized Residuals:
Min Q1 Med Q3 Max
-4.5817286 0.1203298 0.1626861 0.3320539 4.0758409
Transition probabilities:
Regime 1 Regime 2
Regime 1 0.93644428 0.2138482
Regime 2 0.06355572 0.7861518
이론적인 내용에 대한 자세한 설명은 Edwith내 문일철 교수의 “인공지능 및 기계학습 개론 II” - “CHAPTER 9 - Hidden Markov Model” 참고.
4. 페이퍼 요약: Sector Rotation in Times of Crises
VIX 지수와 9개 섹터 ETF에 대해 2 State HMM 모델을 적합한 후, 이를 변동성 확대 국면과 축소 국면으로 해석. VIX는 지수 그대로, 섹터 ETF는 로그수익률 데이터에 대해 모형을 적합. 매일마다 모형을 재학습.
Hmm equation
VIX 지수에 대해 모형이 도출한 state는 아래와 같음. 주황선으로 표시된 state 1은 고변동성 국면으로, state 2는 저변동성 국면으로 해석
VIX 지수 뿐 아니라 섹터 ETF에 대해서도 같은 방법으로 HMM 모델을 이용해 국면을 나눔.
우선, VIX 지수에 기반한 아래 시그널 전략을 테스트
V1: 고변동성 국면에서 T-Bills로 교체하고, 저변동성 국면에서 섹터 ETF를 동일 가중으로 투자
V2: 저변동성 국면에서 T-Bills로 교체하고, 고변동성 국면에서 섹터ETF를 동일 가중으로 투자
시뮬레이션 결과 V1 전략이 단순 SPY에 투자하는 것보다 더 우월한 Annualized return을 보임.
다음으로 섹터 ETF의 국면을 이용하여 섹터를 스위칭하는 전략을 테스트
Fixed Weight : 저변동성 국면에 있는 섹터 ETF만 1/N씩 투자하고, 나머지 \((1-N)/9\) 만큼의 비중은 T-Bills에 투자
Variable Weight : 저변동성 국면에 있는 섹터 ETF를 동일가중으로 투자. 예를 들어 위의 V1케이스에서 저변동성 국면이 나와 섹터 ETF를 투자하게 되었고, 이때 2개 섹터 ETF가 저변동성 국면에 위치했을 경우 2개 ETF를 50%씩 투자.
위의 V1, V2조합에 더해, 섹터 ETF를 투자할 경우 비중 투자 방식을 2가지로 나누어 총 4개의 조합에 대해 테스트
시뮬레이션 결과 고변동성 국면에서 T-Bills로 교체하는 S1과 S3가 높은 성과를 보였으며, 그 중에서도 저변동성 국면 ETF만 1/9씩 투자하고 나머지 비중은 T-Bills에 투자하는 S1 전략이 가장 높은 수익률을 보임.
5. S&P 500 지수를 이용한 시뮬레이션
위 페이퍼와 비슷한 아이디어로, SPY ETF의 수익률에 대해 HMM 모형을 구하고, 국면에 따른 투자전략을 시뮬레이션 해봄.
5. 1. 전체 기간에 대한 모형
전체 기간에 대해 모형을 적합해 보고 과거의 국면이 어떠한지 살펴봄. 투자 관점에서 주된 관심은 현재 국면을 파악하거나 미래 국면을 예측하는 것이므로, 과거의 국면에 대한 정보는 유용성이 떨어질 수 있음. 그러나 뒷부분에서 볼 롤링 방식의 모형과 성능을 비교하기 위해 탐색해 봄.
국면2에 해당하는 기간에 변동성이 커지고 시장이 하락하는 모습. 육안으로 봤을 때에는 대부분의 하락기간이 국면2에 할당됨.
분포로 봤을 때에는 국면 2가 꼬리가 더 길고 왼쪽으로 더 치우친 모습.
각 시점에서 국면의 판단은 확률에 기반하여 정해짐. 이 모형은 국면을 2개로 설정했기 때문에 0.5를 임계점으로 하여 국면이 나뉘게 됨. 확률을 8개의 구간으로 쪼개서 분포를 살펴볼 경우 Quantile1의 값이 가장 넓은 산포를 보임. 따라서 국면을 판단하는 임계값 0.5와 국면의 수 2개가 전체 기간을 적절히 설명하기에 부족할 수 있음.
Regime
Mean
Median
Sd
Skewness
Kurtosis
Obs. Percentage
1
0.354
0.383
1.463
-0.145
0.064
0.697
2
-0.314
-0.343
3.953
-0.186
1.990
0.303
5. 2. Walk-forward analysis
주단위 데이터에 대해 특정 time-window를 rolling 하면서 현재 국면을 판단해 봄. 모형의 성과는 그닥 좋지 않은데, 개별 모형에서 정의된 hidden state의 특성이 다르기 때문일 수도 있을 듯. 예를들면 T 시점에서 과거 5년으로 계산한 모형은 저변동성 국면에 regime 1을 할당하고, 고변동성 국면에 regime 2를 할당. 그런데 T+1시점에서 계산한 모형에서는 저변동성 국면에 regime 2가 할당될 수 있음.
Regime
Mean
Median
Sd
Skewness
Kurtosis
Obs. Percentage
1
0.249
0.203
2.274
-0.179
2.542
0.517
2
0.257
0.491
2.336
-0.845
8.012
0.483
각 시점별 모형에 대해 국면의 평균 변동성을 계산해 본 후 변동성이 높은 구간에 할당된 regime을 살펴봄. 우선 각 regime에 대해 계산된 표준편차를 도시해보면, 모형이 변동성이 높은 구간과 낮은 구간을 명확히 나누고 있음을 알 수 있음.
하지만 변동성이 높은 구간에 할당된 regime을 조사해보면 일관성이 없게 나타남.
5. 3. Walk-forward analysis 두번째 접근
각 모형은 5년 기간의 모든 국면 정보를 도출하는데, 각 국면에 대해 표준편차가 더 큰 국면을 1로 정의하고, 낮은 국면을 2로 정의.
regime의 잦은 변경을 방지하기 위해 regime 확률을 평활화(Smoothing)
Smoothing 함수 : mean, median, min, max 등
smoothing 기간 : 2주~5주
국면 판단을 위한 Threshold 조절
이에 대한 그리드 서치를 진행했으나, 그만큼 오버피팅의 확률도 높음.
아래 그림은 10년 time window로 학습했을 때의 그리드 서치 결과. 그 외 1년 3년, 5년 time window 또한 시뮬레이션 하였으나, 10년이 가장 적합하다고 판단.
MAX 함수를 사용했을 때, 전반적으로 변동성 혹은 Downside Deviation (하락구간에서의 변동성)이 낮은 것으로 나타남.
이를 바탕으로 threshold 0.5, 평활화 함수로 MAX 함수 사용, 평활화 기간은 3주를 적용하였을 때 아래 그림과 같이 국면이 구분됨.
Regime
Mean
Median
Sd
Skewness
Kurtosis
Obs. Percentage
Low_Vol
0.373
0.404
1.481
-0.064
0.278
0.739
High_Vol
-0.096
-0.079
3.749
-0.213
1.237
0.261
5. 4. 국면을 이용한 트레이딩 전략 - SPY / TLT
국면에 따른 트레이딩 전략을 시뮬레이션 해봄. 고변동성 국면에서는 TLT를 40% 주식을 60% 보유하고, 저변동성 국면에서는 주식을 100% 보유하는 전략. 매매수수료는 ETF임을 감안하여 15bp를 적용.
5. 4. 1. Weekly data - 10y window
주단위로 국면을 판단하고, 국면이 전환되었을 경우 매매를 실시. 아래의 전략을 시도해 봄.