평균 회귀란 무엇인가?
평균 회귀(Mean Reversion)는 가격이 평균에서 크게 벗어나면 다시 평균으로 돌아오려는 성질을 이용한 매매 전략입니다. 퀀트 투자에서 모멘텀과 함께 가장 오래된 두 축 중 하나이며, “급락하면 반등하고, 급등하면 조정받는다”는 시장의 본능적 리듬을 체계적으로 포착합니다.
핵심 논리는 단순합니다. 과매도 구간에서 매수하고, 과매수 구간에서 매도하는 것입니다. 하지만 단순한 논리와 달리 실전 구현에는 수많은 함정이 존재합니다.
평균 회귀가 작동하는 시장 조건
모든 시장에서 평균 회귀가 작동하는 것은 아닙니다. 전략을 적용하기 전에 시장 환경을 반드시 파악해야 합니다.
| 시장 상태 | 평균 회귀 유효성 | 판단 지표 |
|---|---|---|
| 횡보장(레인지) | ✅ 매우 효과적 | ADX < 25, 볼린저밴드 폭 축소 |
| 약한 추세장 | ⚠️ 제한적 효과 | ADX 25~35, 이평선 완만 기울기 |
| 강한 추세장 | ❌ 위험, 손실 확대 | ADX > 35, 이평선 급경사 |
| 변동성 폭발 | ❌ 극도로 위험 | VIX 급등, 갭 빈발 |
핵심 원칙: 평균 회귀 전략은 횡보장에서 수익을 내고, 추세장에서 손실을 냅니다. 따라서 레짐 필터가 필수입니다.
대표적인 평균 회귀 지표 4가지
1. 볼린저밴드(Bollinger Bands)
20일 이동평균선에서 ±2 표준편차 범위를 설정합니다. 가격이 하단 밴드를 터치하면 과매도, 상단 밴드를 터치하면 과매수로 판단합니다. 가장 직관적이지만, 강한 추세에서는 밴드를 따라 계속 이동하는 밴드 워킹(Band Walking) 현상이 발생합니다.
2. RSI(Relative Strength Index)
14일 RSI가 30 이하면 과매도, 70 이상이면 과매수로 판단합니다. 평균 회귀 전략에서는 RSI 20 이하의 극단적 과매도에서 진입하고, RSI 50(중립) 복귀 시 청산하는 방식이 더 효과적입니다.
3. Z-Score
현재 가격이 이동평균에서 표준편차 몇 배 떨어져 있는지를 수치화합니다. Z-Score가 -2 이하이면 매수, +2 이상이면 매도 신호입니다. 통계적으로 가장 엄밀한 접근법입니다.
4. 이격도(Disparity)
현재 가격과 이동평균선의 괴리율을 측정합니다. 국내 시장에서 특히 많이 사용되며, 20일 이격도가 95% 이하이면 매수 구간, 105% 이상이면 매도 구간으로 봅니다.
Python 평균 회귀 시그널 구현
import pandas as pd
import numpy as np
def mean_reversion_signals(prices, lookback=20, entry_z=-2.0, exit_z=0):
"""Z-Score 기반 평균 회귀 매매 시그널 생성"""
ma = prices.rolling(lookback).mean()
std = prices.rolling(lookback).std()
zscore = (prices - ma) / std
signals = pd.Series(0, index=prices.index)
# 과매도 진입: Z-Score가 -2 이하
signals[zscore <= entry_z] = 1 # 매수
# 평균 복귀 시 청산: Z-Score가 0 근처
signals[zscore >= exit_z] = 0 # 청산
return signals, zscore
def regime_filter(prices, adx_period=14, threshold=25):
"""ADX 기반 레짐 필터: 횡보장에서만 매매 허용"""
# ADX가 threshold 미만이면 횡보장으로 판단
high = prices.rolling(2).max()
low = prices.rolling(2).min()
tr = high - low
atr = tr.rolling(adx_period).mean()
trend_strength = atr / prices * 100
return trend_strength < threshold # True = 횡보장
레짐 필터와 시그널을 결합하면, 횡보장에서만 평균 회귀 전략을 실행하고 추세장에서는 자동으로 거래를 멈출 수 있습니다.
평균 회귀 전략의 치명적 함정
떨어지는 칼날 잡기(Catching a Falling Knife)
가장 흔한 실패 패턴입니다. "많이 떨어졌으니 반등하겠지"라는 판단으로 진입했지만, 가격이 계속 하락하는 상황입니다. 평균 회귀가 실패하는 것이 아니라, 추세 전환이 일어난 것을 놓친 것입니다.
이를 방지하는 방법:
- 반드시 손절 설정: 진입가 대비 3~5% 손절선 고정
- 분할 진입: Z-Score -2에서 30%, -2.5에서 30%, -3에서 40% 식으로 분산
- 펀더멘탈 필터: 실적 악화·악재가 있는 종목은 평균 회귀 대상에서 제외
- 시간 손절: 진입 후 N일 내 반등하지 않으면 청산
모멘텀과 평균 회귀의 조합
흥미로운 점은 모멘텀과 평균 회귀가 서로 다른 시간 프레임에서 동시에 작동한다는 것입니다:
- 단기(1~5일): 평균 회귀가 우세 — 급락 후 반등, 급등 후 조정
- 중기(1~12개월): 모멘텀이 우세 — 상승 추세 지속, 하락 추세 지속
- 장기(3~5년): 평균 회귀가 우세 — 고평가 자산의 저평가 복귀
이를 활용하면 중기 모멘텀이 양수인 종목 중에서 단기 과매도 구간에 진입하는 복합 전략을 만들 수 있습니다. 퀀트 팩터 투자에서 다룬 멀티팩터 접근과 동일한 원리입니다.
실전 체크리스트
평균 회귀 전략을 자동매매에 적용하기 전 반드시 점검해야 할 항목입니다:
- ✅ 레짐 필터(ADX 등)가 구현되어 있는가?
- ✅ 개별 포지션 손절이 하드코딩되어 있는가?
- ✅ 분할 진입 로직이 적용되어 있는가?
- ✅ 유동성이 충분한 종목만 대상으로 하는가?
- ✅ 일일 손실 한도가 설정되어 있는가?
- ✅ 시간 손절(최대 보유 기간)이 있는가?
- ✅ 실적 발표·이벤트 기간에 진입을 제한하는가?
결론: 평균은 돌아오지만 계좌는 안 돌아온다
평균 회귀는 통계적으로 검증된 강력한 원리입니다. 하지만 "평균으로 돌아오기 전에 계좌가 먼저 바닥날 수 있다"는 사실을 잊으면 안 됩니다. 레짐 판단, 손절, 분할 진입이라는 세 가지 안전장치 없이 평균 회귀를 시도하는 것은 안전벨트 없이 운전하는 것과 같습니다.