페어 트레이딩 자동매매 전략

페어 트레이딩이란?

페어 트레이딩(Pairs Trading)은 상관관계가 높은 두 자산의 가격 괴리를 이용하는 통계적 차익거래(Statistical Arbitrage) 전략입니다. 시장 방향과 무관하게 수익을 추구하는 시장 중립(Market Neutral) 전략으로, 퀀트 트레이딩의 핵심 기법 중 하나입니다.

예를 들어, 삼성전자와 SK하이닉스처럼 같은 반도체 섹터에 속한 종목은 장기적으로 비슷한 방향으로 움직입니다. 그런데 일시적으로 한 종목이 과도하게 오르거나 내리면, 두 종목의 스프레드(Spread)가 평균에서 벗어납니다. 이 괴리가 다시 평균으로 회귀할 것이라 기대하고 진입하는 것이 페어 트레이딩의 핵심입니다.

페어 트레이딩 핵심 원리: 공적분(Cointegration)

단순 상관관계(Correlation)만으로는 페어 트레이딩에 적합한 종목 쌍을 찾기 어렵습니다. 핵심은 공적분(Cointegration) 관계입니다.

  • 상관관계: 두 자산 수익률의 방향이 유사한 정도 → 시간에 따라 변할 수 있음
  • 공적분: 두 자산의 선형 결합이 정상성(Stationarity)을 가지는 관계 → 스프레드가 일정 범위 내에서 유지됨

공적분 검정에는 주로 엥글-그레인저(Engle-Granger) 검정요한센(Johansen) 검정이 사용됩니다. p-value가 0.05 이하이면 공적분 관계가 존재한다고 판단합니다.

파이썬 공적분 검정 코드

import statsmodels.api as sm
from statsmodels.tsa.stattools import coint

# 두 종목의 종가 시계열
score, pvalue, _ = coint(stock_a_prices, stock_b_prices)
print(f"공적분 p-value: {pvalue:.4f}")
if pvalue < 0.05:
    print("공적분 관계 존재 → 페어 트레이딩 후보")

스프레드 계산과 Z-Score 시그널

페어가 확정되면 스프레드를 계산합니다. OLS 회귀로 헤지 비율(Hedge Ratio) β를 구한 뒤, 스프레드 = A - β × B로 정의합니다.

스프레드의 Z-Score를 산출하여 진입/청산 시그널을 생성합니다.

Z-Score 구간 액션 포지션
Z > +2.0 숏 진입 A 매도 + B 매수
Z < -2.0 롱 진입 A 매수 + B 매도
|Z| < 0.5 청산 모든 포지션 정리
|Z| > 3.5 손절 공적분 붕괴 가능성 → 전량 청산

Z-Score 계산 코드

import numpy as np

def calc_zscore(spread, window=60):
    mean = spread.rolling(window).mean()
    std = spread.rolling(window).std()
    return (spread - mean) / std

spread = stock_a - hedge_ratio * stock_b
zscore = calc_zscore(spread)

페어 트레이딩 자동매매 구현 5단계

1단계: 유니버스 스크리닝

같은 섹터, 같은 산업군에서 후보 종목 쌍을 추출합니다. KOSPI 200 내 동일 섹터 종목끼리 조합하면 효율적입니다. 최소 1년 이상의 일봉 데이터를 확보하세요.

2단계: 공적분 검정 + 필터링

모든 후보 쌍에 대해 공적분 검정을 수행합니다. p-value < 0.05이면서 반감기(Half-Life)가 5~60일 범위인 쌍만 선별합니다. 반감기가 너무 짧으면 거래 비용을 감당하기 어렵고, 너무 길면 자금이 묶입니다.

from statsmodels.regression.linear_model import OLS

# 반감기 계산
spread_lag = spread.shift(1).dropna()
spread_diff = spread.diff().dropna()
model = OLS(spread_diff, sm.add_constant(spread_lag.iloc[1:]))
result = model.fit()
half_life = -np.log(2) / result.params.iloc[1]
print(f"반감기: {half_life:.1f}일")

3단계: 헤지 비율 동적 조정

고정 헤지 비율은 시간이 지나면 무효화됩니다. 칼만 필터(Kalman Filter)롤링 OLS로 헤지 비율을 동적으로 업데이트하세요. 롤링 윈도우는 보통 60~120일을 사용합니다.

4단계: 리스크 관리 규칙 설정

  • 포지션 사이징: 총 자산의 5~10%를 한 페어에 배분
  • 손절 기준: Z-Score 3.5 초과 시 강제 청산 (공적분 붕괴 대응)
  • 최대 보유 기간: 반감기의 3배 이내에 청산되지 않으면 강제 종료
  • 동시 페어 수: 최대 5~8페어로 분산 (상관관계 높은 페어 중복 주의)

5단계: 실시간 모니터링 및 재검정

공적분 관계는 영원하지 않습니다. 매주 또는 격주로 공적분을 재검정하고, 관계가 무너진 페어는 즉시 제거합니다. 슬리피지 관리도 병행해야 실전 수익률을 지킬 수 있습니다.

페어 트레이딩의 장점과 한계

장점

  • 시장 중립: 시장 전체 하락에도 수익 가능
  • 통계적 근거: 감이 아닌 데이터 기반 의사결정
  • 자동화 용이: 규칙 기반이므로 자동매매 봇으로 구현하기 적합
  • 낮은 변동성: 시장 리스크를 헤지하므로 MDD가 상대적으로 낮음

한계 및 주의점

  • 공적분 붕괴: 기업 인수합병, 사업 구조 변화 시 관계가 영구적으로 깨질 수 있음
  • 거래 비용: 양방향 매매이므로 수수료·슬리피지가 2배 발생
  • 자금 효율성: 롱숏 동시 보유로 마진 소요가 큼
  • 과적합 위험: 과거 데이터에만 맞는 가짜 공적분을 발견할 수 있음 → 백테스트 과적합 방지법 참고

실전 적용 체크리스트

항목 체크 기준
공적분 p-value < 0.05
반감기 5~60일
진입 Z-Score ±2.0 이상
청산 Z-Score ±0.5 이내
손절 Z-Score ±3.5 초과
포지션 비중 페어당 5~10%
재검정 주기 1~2주
최대 보유 기간 반감기 × 3

마무리

페어 트레이딩은 시장 방향에 의존하지 않는 퀀트 전략의 대표 격입니다. 공적분 검정으로 견고한 페어를 찾고, Z-Score 기반 시그널로 진입·청산하며, 동적 헤지 비율과 철저한 리스크 관리를 결합하면 안정적인 수익 곡선을 만들 수 있습니다.

다만 공적분 관계는 영원하지 않으므로, 주기적 재검정과 손절 규칙을 반드시 포함해야 합니다. 백테스트에서 좋은 결과가 나왔더라도 워크포워드 분석으로 검증한 뒤 실전에 투입하세요.

위로 스크롤
WordPress Appliance - Powered by TurnKey Linux