[알고리즘 트레이딩] 페어 트레이딩으로 스마트하게 투자하기

삼성전자와 SK하이닉스를 활용한 롱/숏 전략 + 자동화 아이디어


📌 페어 트레이딩(Pair Trading)이란?

페어 트레이딩은 **가격이 유사한 움직임을 보이는 두 종목 간의 가격 차이(스프레드)**를 분석하여,
그 차이가 평균에서 벗어났을 때 매매를 하는 시장 중립적 전략입니다.

예시: 삼성전자와 SK하이닉스
두 종목이 함께 움직이다가 어느 날 한쪽이 더 오르면,
고평가된 쪽은 매도(숏), 저평가된 쪽은 매수(롱).


🧪 우리가 활용한 데이터와 도구

  • 데이터 소스: Yahoo Finance (일봉 데이터)

  • 종목: 삼성전자 (005930.KS) vs SK하이닉스 (000660.KS)

  • 도구:

    • yfinance: 주가 데이터 수집

    • pandas: 데이터 처리

    • statsmodels: OLS 회귀로 헤지 비율 계산

    • matplotlib: 그래프 시각화


🔍 분석 로직 요약

  1. 전날 기준 1년치 데이터 수집

  2. OLS 회귀로 헤지 비율 (hedge ratio) 계산

  3. 스프레드 = Target1 - hedge_ratio × Target2

  4. 스프레드의 Z-score 계산

  5. 진입 조건:

    • z-score > 1: Target1 매도, Target2 매수

    • z-score < -1: Target1 매수, Target2 매도


💡 예제 코드 (핵심 부분 요약)

import yfinance as yf import pandas as pd import statsmodels.api as sm from datetime import datetime, timedelta # 날짜 설정 end_date = datetime.today() - timedelta(days=1) start_date = end_date - timedelta(days=365) # 심볼 설정 symbol1 = '005930.KS' # 삼성전자 symbol2 = '000660.KS' # SK하이닉스 # 데이터 다운로드 df1 = yf.download(symbol1, start=start_date, end=end_date) df2 = yf.download(symbol2, start=start_date, end=end_date) # 병합 및 정제 df = pd.concat([df1['Close'], df2['Close']], axis=1).dropna() df.columns = ['Target1', 'Target2'] # OLS 회귀로 hedge ratio 구하기 X = sm.add_constant(df['Target2']) model = sm.OLS(df['Target1'], X).fit() hedge_ratio = model.params['Target2'] # 스프레드 및 z-score 계산 df['Spread'] = df['Target1'] - hedge_ratio * df['Target2'] df['Zscore'] = (df['Spread'] - df['Spread'].mean()) / df['Spread'].std() # 오늘 기준 시그널 출력 z = df['Zscore'].iloc[-1] print(f"z-score: {z:.2f}") if z > 1: print("📉 전략: 매도(Target1), 매수(Target2)") elif z < -1: print("📈 전략: 매수(Target1), 매도(Target2)") else: print("⏸️ 전략: 대기")

📈 실제 결과 예시 (삼성전자 & 하이닉스)

  • 기간: 최근 1년간

  • 누적 수익률:39.56% (z-score 진입 후, 원상 복귀 기준)

  • 수수료 반영 시 (0.03%)도 전략 수익이 유지됨


🔔 자동화 아이디어

1️⃣ 롱/숏 포지션 알림 시스템

  • 매일 아침 전날 데이터를 기준으로:

    • 어떤 종목을 매수할지 / 매도할지 자동 판단

    • Slack, Telegram, 이메일 등으로 알림

2️⃣ 페어 종목 추천 기능

  • 다수 ETF나 주식 리스트에서:

    • 상관계수 높은 조합 자동 탐색

    • 공적분(cointegration) 검정 통과 여부 확인

    • 유망 페어 자동 제안


🌱 향후 확장 방향

  • Streamlit 기반 시각화 대시보드

  • 백테스트 모듈 탑재

  • 자동 트레이딩 봇 연동 (실거래 or 가상 계좌)

  • 머신러닝 기반 스프레드 예측 모델


✅ 마무리

페어 트레이딩은 시장 방향성과 무관하게 수익을 낼 수 있는 전략입니다.
특히 삼성전자 vs SK하이닉스처럼 유사한 업종/섹터에 있는 종목들은
실제로 좋은 성능을 보이는 경우가 많죠.

이번 글에서는 단순한 통계적 방법으로 롱/숏 전략을 수립했고,
향후 자동화 및 추천 시스템까지 연결할 수 있는 기틀을 마련했습니다.
여러분도 이 전략을 개선하고 백테스트하면서 자신만의 퀀트 전략을 개발해보세요!

댓글

이 블로그의 인기 게시물

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

[PLC] PLC 아날로그 입출력 기본

제너 다이오드에 저항을 연결하는 이유

[농사] 실내 식물 재배 조명, 어떤 걸 선택해야 할까?

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

공압 속도 제어: 미터인 vs 미터아웃

[스마트팜] 아쿠아포닉스에서 pH 제어를 자동화해보자! (Python 활용)

커패시터에 저장된 에너지 계산

[아두이노] 74HC595 시프트 레지스터 연동

[PLC] 릴레이와 전자 접촉기 (MC)