주식시장의 방향성을 예측하는 방법 중, 변곡점을 예측하는 방법(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가 마코프 프로세스를 따른다고 가정. 즉, \(Z_t\) 는 \(Z_{t-1}\) 에만 의존함. 관측치 \(X_t\) 는 Hidden state \(Z_t\) 에만 의존.
주식 시장에 적용한다면, 2개의 Hidden state를 가정할 때, 변동성 확대 국면/축소 국면 혹은 Bear/Bull market 등으로 해석할 수 있음. 경제에 적용할 경우 경기 확장/축소 혹은 금리 상승/인하 등.
HMM 모델은 아래 세 가지 정의에서 출발함.
Initial State Probabilities : \[P(z_1)\sim Mult(\pi_1, \pi_2, ... , \pi_k)\]
Evaluation question : HMM모형 \(M\)과 \(\pi, a, b, X\) 가 주어졌다고 할 때 \(P(X|M,\pi, a, b)\) 를 찾는 것. 즉 훈련된 모형에서 주어진 시퀀스 \(X\) 가 관찰된 확률이 어떻게 되는가? - Forward algorithm
Decoding question : \(argmax_z P(Z|M, a, b, X)\) 를 찾는 것. 즉 우리가 관측한 데이터에 대해 가장 가능성이 높은 hidden state는 무엇인가? - Viterbi algorithm
Learning question : \(argmax_{\pi, a, b}P(X|M,\pi,a,b)\) 관측치가 주어졌을 때 가장 확률이 높은 HMM의 파라미터는 무엇인가? - Baum-Welch algorithm
위 그림에서 관측치 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) -3.1613 0.7050 -4.4841 7.322e-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
Regime 2
---------
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.2574249386 -0.5520816900 -0.0008494965 0.4919211814 2.1296725977
Transition probabilities:
Regime 1 Regime 2
Regime 1 0.7861518 0.06355572
Regime 2 0.2138482 0.93644428
이론적인 내용에 대한 자세한 설명은 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.360
0.386
1.478
-0.139
0.084
0.704
2
-0.351
-0.401
3.970
-0.167
1.986
0.296
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.317
0.396
2.066
0.104
3.796
0.509
2
0.178
0.342
2.523
-0.822
5.480
0.491
각 시점별 모형에 대해 국면의 평균 변동성을 계산해 본 후 변동성이 높은 구간에 할당된 regime을 살펴봄. 우선 각 regime에 대해 계산된 표준편차를 도시해보면, 모형이 변동성이 높은 구간과 낮은 구간을 명확히 나누고 있음을 알 수 있음.
하지만 변동성이 높은 구간에 할당된 regime을 조사해보면 일관성이 없게 나타남.
5. 3. Walk-forward analysis 두번째 접근
각 모형은 5년 기간의 모든 국면 정보를 도출하는데, 각 국면에 대해 표준편차가 더 큰 국면을 1로 정의하고, 낮은 국면을 2로 정의. 고변동성 국면에서는 SPY 40%, 채권 ETF 60%를 보유하고, 저변동성 국면에서는 SPY를 100% 보유.
regime의 잦은 변경을 방지하기 위해 regime 확률을 평활화(Smoothing)
Smoothing 함수 : mean, median, min, max 등
smoothing 기간 : 0주~5주
국면 판단을 위한 Threshold 조절
이에 대한 그리드 서치를 진행했으나, 그만큼 오버피팅의 확률도 높음.
아래 그림은 10년 time window로 학습했을 때의 그리드 서치 결과. 그 외 1년 3년, 5년 time window 또한 시뮬레이션 하였으나, 10년이 가장 적합하다고 판단.
MAX 함수를 사용했을 때, 전반적으로 변동성 혹은 Downside Deviation (하락구간에서의 변동성)이 낮은 것으로 나타남.
이를 바탕으로 threshold 0.15, 평활화 함수로 MAX 함수 사용, 평활화 기간은 3주를 적용하였을 때 아래 그림과 같이 국면이 구분됨. max 함수를 썼을 때 drowdown이 전반적으로 개선되고, 적당한 평활화를 적용했을 때 턴오버가 유의미하게 낮아지기 떄문. Threshold는 5.1. 에서 분석한 수익률 분포를 바탕으로 0.1 ~ 0.15 정도로 설정.
Regime
Mean
Median
Sd
Skewness
Kurtosis
Obs. Percentage
Low_Vol
0.293
0.342
1.348
-0.182
0.165
0.604
High_Vol
0.171
0.478
3.263
-0.377
2.066
0.396
5. 4. 국면을 이용한 트레이딩 전략 - SPY / TLT
국면에 따른 트레이딩 전략을 시뮬레이션 해봄. 고변동성 국면에서는 TLT를 40% 주식을 60% 보유하고, 저변동성 국면에서는 주식을 100% 보유하는 전략.
매매수수료는 ETF임을 감안하여 15bp를 적용.
해당 날짜의 종가를 이용해서 국면에 대한 정보를 얻은 이후에는 그 다음 영업일 종가로 리밸런싱 한다고 가정. (예를들면 1월 27일 종가를 이용해서 구한 모델에 대한 리밸런싱은 29일 수익률부터 적용)
5. 4. 1. Weekly data - 10y window
모델을 구하기 위한 Time window로 10년(52주 * 10) 데이터를 사용. 급락 구간에서 TLT로 교체하면서 수익률을 방어하는 모습. 그러나 코로나 이후 급상승장에서 주식 비중을 변동시키고, 22년 하락 장에서 TLT의 하락폭이 주식보다 크게 나타나면서 최근 성과는 부진한 모습. (22년 SPY 하락폭 18.37%인 반면, TLT는 31.11%)
AnnualizedReturn
AnnualizedSharpe(Rf=0%)
AnnualizedStdDev
SortinoRatio(MAR=0%)
maxDrawdown.1
DownsideDeviation.1
avg_turnover
0.1
0.85
0.12
0.08
0.31
0.01
1.31
5. 4. 2. Weekly Data 10y cumulative
위에서는 모든 모형이 10년 윈도우로 계산되었으나, 이번에는 데이터를 누적하여 모델을 구해봄. 과거의 값을 얼마나 모형에 사용할 것인가의 문제.
분포
Regime
Mean
Median
Sd
Skewness
Kurtosis
Obs. Percentage
Low_Vol
0.296
0.363
1.32
-0.172
0.007
0.593
High_Vol
0.169
0.405
3.24
-0.374
2.079
0.407
결과
수익률 측면에서 봤을 때에는 유의미한 개선이 있다고 보기 어려움. 하지만 일관되게 변동성이 크게 증가하는 급락 구간에서 중간에 TLT로 교체하면서 수익률을 방어.
AnnualizedReturn
AnnualizedSharpe(Rf=0%)
AnnualizedStdDev
SortinoRatio(MAR=0%)
maxDrawdown.1
DownsideDeviation.1
avg_turnover
0.11
0.94
0.12
0.08
0.31
0.01
1.27
5. 4. 3. TLT 대신 CASH
2022년 주식과 채권의 상관관계가 높아지면서 변동성이 높아진 때에 채권에 투자하는 전략은 수익률이 떨어짐. 이에 TLT의 국면이 고변동성일 때 현금으로 교체하는 전략과 SPY와 TLT의 1년 상관계수가 커질 때 현금으로 교체하는 전략을 테스트해봄.
TLT의 국면이 고변동성 국면일 때 현금으로 교체한다면? : 주식이 고변동성 국면일 때 채권도 고변동성 국면인 경우가 많아 현금을 보유하는 기간이 길어짐. 이로 인해 오히려 성과가 악화됨.
TLT와 SPY간의 1년 상관계수가 -0.3 보다 커지는 경우 TLT가 아닌 현금을 보유한다면?
컷오프 값을 -0.3으로 설정한 이유는 전체 기간 혹은 10년 정도의 1년 롤링 상관계수의 미디언 값이 -0.3에 가깝기 때문. (미래참조 편향)
AnnualizedReturn
AnnualizedSharpe(Rf=0%)
AnnualizedStdDev
SortinoRatio(MAR=0%)
maxDrawdown.1
DownsideDeviation.1
avg_turnover
0.12
1.12
0.11
0.1
0.14
0
1.63
5. 5. 국면을 이용한 트레이딩 전략 - 섹터 ETF
Sector Rotation in Times of Crises 에서 사용된 전략을 그대로 구현해 봄.
구성
SPY가 고변동성일 때 주식 40%/TLT 60%, 저변동성일 때 주식 100%
Fixed weight : 주식 투자 포트폴리오 내에서는 섹터 ETF 중 저변동성 국면인 ETF를 1/9씩 투자. 잔여 비중은 SPY로 보유.
Variable weight : 주식 비중에 대해 저변동성 국면에 있는 ETF를 동일가중으로 투자. 만약 SPY 고변동성 국면에서, 저변동성 국면에 있는 ETF가 2개일 경우, 전체 포트폴리오에서 해당 ETF를 각각 \(0.4 / 2 = 0.2\) 씩 투자.
결과 - Fixed weight
AnnualizedReturn
AnnualizedSharpe(Rf=0%)
AnnualizedStdDev
SortinoRatio(MAR=0%)
maxDrawdown.1
DownsideDeviation.1
avg_turnover
0.09
0.81
0.11
0.07
0.28
0.01
1.45
결과 - Variable weight
AnnualizedReturn
AnnualizedSharpe(Rf=0%)
AnnualizedStdDev
SortinoRatio(MAR=0%)
maxDrawdown.1
DownsideDeviation.1
avg_turnover
0.08
0.73
0.11
0.07
0.28
0
1.63
5. 6. Daily data를 이용한 결과
데일리 데이터를 이용해서도 비슷한 방식으로 시뮬레이션 진행.
데일리로 모델을 적합할 경우 노이즈가 더 심하기 때문에, 스무딩이 없을 경우 지나친 턴오버 발생.
스무딩 함수로 max를 적요할 경우 지니차게 많은 구간이 고변동성 국면으로 분류. 전체 샘플 중 대략 25% ~ 30% 정도가 고변동성 국면으로 분류되기를 희망.
아래 결과는 threshold 0.4, 평활화 기간 21일, 평활화 함수 Mean을 적용한 결과. 여러 실험 결과 중 좋은 결과를 뽑은 것으로, 과적합 우려가 있음.
Regime
Mean
Median
Sd
Skewness
Kurtosis
Obs. Percentage
Low_Vol
0.057
0.076
0.793
-0.673
5.367
0.639
High_Vol
0.017
0.049
1.762
0.079
8.133
0.361
AnnualizedReturn
AnnualizedSharpe(Rf=0%)
AnnualizedStdDev
SortinoRatio(MAR=0%)
maxDrawdown.1
DownsideDeviation.1
avg_turnover
0.1
0.78
0.12
0.07
0.3
0.01
1.55
6. 결론
의의
HMM 모형을 이용하여 국면에 따라 주식 편입비를 적용한 결과 급락구간에서 하락폭을 줄일 수 있음을 확인.
SPY뿐 아니라 원자재 등 다른 자산에 대해서도 트레이딩 전략에 적용할 수 있음.
한계
변동성 확대/축소 구간을 식별하는 데에는 용이하나, 급락이후 급등하는 국면에도 높은 변동성을 보이기 때문에, 이 때 편입비를 확대하지 못하면서
급락 구간 외에서의 시그널도 존재. 그러나 국면의 수를 증가시키면 변동성 확대/축소 구간을 보다 잘 식별할 수 있다는 페이퍼도 존재. 그러나 본고에서는 국면 수를 증가시켰을 때 수치적으로 모델이 실패하는 경우가 다수 발생하여 국면수를 2개로 한정.