[알고리즘 트레이딩] ETF 페어 트레이딩 전략 (KODEX 200 vs KODEX 인버스)
ETF를 활용한 페어 트레이딩은 두 종목 간의 가격 차이(스프레드)가 평균으로 수렴한다는 전제 아래, 동시 매수/동시 매도 전략을 통해 수익을 추구하는 방식입니다.
✅ 전략 개요
-
페어: KODEX 200 (정방향) vs KODEX 인버스 (역방향)
-
두 ETF는 일반적으로 KOSPI200 지수와 역방향으로 움직이는 경향이 있어, 가격 차이의 움직임이 일정한 통계적 특성을 보입니다.
-
이러한 가격 스프레드의 평균 회귀성을 활용하여, 가격이 벌어졌을 때 진입, 평균으로 돌아오면 청산합니다.
🧮 Z-score 기반 진입 조건
-
스프레드 계산:
spread = log(price_kodex200) - log(price_inverse)
-
Z-score 계산:
zscore = (spread - spread.mean()) / spread.std()
-
매매 조건:
-
진입 시점:
Z-score < -2
-
→ 평균으로 회귀할 가능성이 크다고 판단
-
→ KODEX 200 매수 + KODEX 인버스 매수
-
-
청산 시점:
Z-score ≈ 0
-
→ 평균에 도달했다고 판단
-
→ 양쪽 포지션 동시 매도(청산)
-
❗ 공매도 없이도 구현 가능: 인버스 ETF를 공매도하지 않고도 해당 전략이 가능합니다. 양 ETF를 같이 매수 → 같이 매도하는 방식으로 접근합니다.
🧠 진입 타이밍 정리 (공매도 없이)
Z-score 값 | 해석 | 액션 |
---|---|---|
Z-score < -2 |
스프레드 벌어짐 → 회귀 가능성 ↑ | KODEX 200 매수 + KODEX 인버스 매수 |
Z-score ≈ 0 |
평균 회귀 완료 | 양쪽 청산 (매도) |
Z-Score ↓↓↓ Z-Score = 0 Z-Score ↑↑↑
(스프레드 벌어짐) (평균 수렴) (스프레드 반대방향 벌어짐)
[매수 진입 시점] [청산 시점] [매수 진입 시점]
KODEX 200: 매수 KODEX 200: 매도 KODEX 인버스: 매수
KODEX 인버스: 매수 KODEX 인버스: 매도 KODEX 200: 매수
🧪 시뮬레이션 & 자동화 도구 제안
1. 실시간 Z-score 계산기
-
Python + Pandas + matplotlib
-
주기적으로 ETF 가격을 가져와 스프레드 및 Z-score 시각화
2. 진입 타이밍 자동 감지 코드 (예시)
if zscore[-1] < -2 and not in_position:
buy('KODEX 200')
buy('KODEX 인버스')
in_position = True
elif zscore[-1] > -0.2 and zscore[-1] < 0.2 and in_position:
sell('KODEX 200')
sell('KODEX 인버스')
in_position = False
3. 백테스트 + 시뮬레이터 개발
-
과거 ETF 가격 데이터로 진입/청산 시점 백테스트
-
수익률, MDD, 평균 보유 기간 등 시뮬레이션
4. 향후 확장
-
KODEX 200 & KODEX 레버리지/인버스 레버리지 간 페어 구성 실험
-
Z-score 외에 Hurst 계수, Cointegration 분석 기법 추가
ETF를 활용한 페어 트레이딩은 저위험-저수익 구조로 알고리즘 트레이딩에 적합하며, 단순 가격 추세 예측보다 통계 기반의 수렴 패턴을 노리는 전략입니다. 공매도 없이도 실현 가능하다는 점에서 개인 투자자에게도 실행 가능한 전략이 될 수 있습니다.
댓글
댓글 쓰기