듀얼 모멘텀 자동매매 전략

듀얼 모멘텀이란?

듀얼 모멘텀(Dual Momentum)은 게리 안토나치(Gary Antonacci)가 제안한 퀀트 투자 전략으로, 절대 모멘텀상대 모멘텀을 결합하여 수익률을 극대화하고 낙폭을 줄이는 방법입니다. 단순히 “오른 종목을 사라”가 아니라, 시장 전체의 추세와 개별 자산 간의 상대적 강도를 동시에 판단합니다.

이 전략은 학술적으로도 검증된 모멘텀 프리미엄을 실전에 적용할 수 있도록 체계화한 것이 핵심입니다. 백테스트 결과, S&P 500 단독 보유 대비 연평균 수익률은 높이고 최대낙폭(MDD)은 절반 이하로 줄이는 성과를 보여왔습니다.

절대 모멘텀 vs 상대 모멘텀

구분 절대 모멘텀 상대 모멘텀
판단 기준 자산의 과거 수익률 > 0 여부 자산 간 수익률 비교
역할 시장 하락 시 현금 전환 (리스크 관리) 강한 자산에 집중 투자 (수익 극대화)
장점 대형 하락장 회피 상승장에서 초과 수익
단점 횡보장 Whipsaw 하락장 방어력 부족

듀얼 모멘텀은 이 두 가지를 순차적으로 적용합니다. 먼저 상대 모멘텀으로 가장 강한 자산을 선택하고, 절대 모멘텀 필터를 거쳐 해당 자산의 추세가 양(+)인 경우에만 투자합니다.

듀얼 모멘텀 실전 구현 로직

가장 기본적인 듀얼 모멘텀 전략의 구현 흐름은 다음과 같습니다:

  1. 룩백 기간 설정: 일반적으로 12개월(252 거래일) 수익률을 기준으로 합니다.
  2. 상대 모멘텀 비교: 미국 주식(SPY)과 해외 주식(EFA) 등 자산군의 12개월 수익률을 비교합니다.
  3. 절대 모멘텀 필터: 선택된 자산의 12개월 수익률이 무위험 수익률(또는 0%)보다 높은지 확인합니다.
  4. 포지션 결정: 절대 모멘텀 통과 시 해당 자산 매수, 실패 시 채권(AGG) 또는 현금으로 전환합니다.
  5. 월 1회 리밸런싱: 매월 말 위 과정을 반복합니다.

파이썬 구현 예시

import pandas as pd
import yfinance as yf

# 자산 데이터 다운로드
tickers = ['SPY', 'EFA', 'AGG']  # 미국주식, 해외주식, 채권
data = yf.download(tickers, start='2010-01-01')['Close']

# 12개월 수익률 계산
lookback = 252  # 거래일 기준
returns_12m = data.pct_change(lookback)

# 월말 데이터만 추출
monthly = returns_12m.resample('M').last()

# 듀얼 모멘텀 시그널 생성
def dual_momentum_signal(row):
    spy_ret = row['SPY']
    efa_ret = row['EFA']

    # 상대 모멘텀: SPY vs EFA 비교
    if spy_ret > efa_ret:
        winner = 'SPY'
        winner_ret = spy_ret
    else:
        winner = 'EFA'
        winner_ret = efa_ret

    # 절대 모멘텀: 수익률 > 0 여부
    if winner_ret > 0:
        return winner
    else:
        return 'AGG'  # 안전자산 전환

signals = monthly.apply(dual_momentum_signal, axis=1)
print(signals.tail(12))

위 코드는 기본적인 듀얼 모멘텀 로직을 보여줍니다. 실전에서는 거래 비용, 슬리피지, 세금 효과까지 반영해야 합니다. 샤프 비율 성과 분석을 통해 전략의 위험 조정 수익률을 평가할 수 있습니다.

듀얼 모멘텀의 핵심 장점

1. 대형 하락장 회피

절대 모멘텀 필터 덕분에 2008년 금융위기, 2020년 코로나 폭락 같은 대형 하락장에서 자동으로 안전자산으로 전환됩니다. 이는 MDD를 크게 줄여 장기 복리 수익률을 보호하는 핵심 메커니즘입니다.

2. 단순한 룰 기반 운용

월 1회, 단 3개 자산만으로 운용 가능합니다. 복잡한 최적화나 파라미터 튜닝이 거의 필요 없어 오버피팅 위험이 낮습니다. 실전 적용이 쉬운 전략 중 하나입니다.

3. 학술적 근거

모멘텀 효과는 Jegadeesh & Titman(1993) 이후 수많은 논문에서 검증된 가장 견고한 시장 이상 현상(anomaly)입니다. 듀얼 모멘텀은 이 학술적 근거를 자산배분에 적용한 것입니다.

실전 적용 시 주의사항

Whipsaw(채찍톱) 리스크

횡보 장세에서 신호가 빈번하게 전환되며 거래 비용이 누적될 수 있습니다. 이를 완화하는 방법:

  • 이동평균 필터 추가: 200일 이동평균선 위/아래 여부를 보조 필터로 활용
  • 다중 룩백 기간: 3개월, 6개월, 12개월 수익률의 평균을 사용하여 신호 안정화
  • 최소 보유 기간: 전환 후 최소 2개월은 유지하는 규칙 추가

자산군 확장

기본 3자산(SPY/EFA/AGG) 외에도 다양한 자산군으로 확장할 수 있습니다:

  • 신흥국 주식(EEM), 부동산(VNQ), 금(GLD), 원자재(DBC)
  • 섹터별 ETF로 세분화하여 상대 모멘텀 적용
  • 국내 시장에 적용 시 KODEX 200, TIGER 미국S&P500 등 활용

세금과 거래비용

월 1회 리밸런싱이지만, 자산 전환 시 양도세가 발생할 수 있습니다. ISA 계좌나 연금계좌 활용을 통해 세금 효율을 높이는 것이 중요합니다. 슬리피지 최적화 전략도 함께 참고하세요.

백테스트 성과 비교

지표 S&P 500 (Buy & Hold) 듀얼 모멘텀
연평균 수익률(CAGR) 약 10% 약 13~15%
최대낙폭(MDD) -50% 이상 -20% 내외
샤프 비율 0.4~0.5 0.7~0.9
연간 거래 횟수 0회 3~5회

위 수치는 2003~2023년 기간 백테스트 기준이며, 실제 성과는 시장 환경에 따라 달라질 수 있습니다. 백테스트 오버피팅 방지법을 반드시 숙지한 후 전략을 검증하시기 바랍니다.

듀얼 모멘텀 자동매매 적용

듀얼 모멘텀은 월 1회 리밸런싱이므로 완전 자동화가 용이합니다. 파이썬 스케줄러(cron, APScheduler)와 증권사 API를 연동하면 매월 말 자동으로 포지션을 조정할 수 있습니다.

# 자동 리밸런싱 스케줄 예시
from apscheduler.schedulers.blocking import BlockingScheduler

def monthly_rebalance():
    signal = calculate_dual_momentum()
    current = get_current_position()

    if signal != current:
        sell_position(current)
        buy_position(signal)
        log_trade(signal)

scheduler = BlockingScheduler()
# 매월 마지막 영업일 장 마감 30분 전 실행
scheduler.add_job(monthly_rebalance, 'cron',
                  day='last', hour=15, minute=0)
scheduler.start()

자동매매 시스템 구축에 대한 더 자세한 내용은 파이썬 자동매매 봇 만들기 글을 참고하세요.

마무리

듀얼 모멘텀 전략은 단순함, 학술적 근거, 실전 성과라는 세 가지를 모두 갖춘 몇 안 되는 퀀트 전략입니다. 복잡한 머신러닝이나 고빈도 매매 없이도 시장을 이길 수 있는 체계적인 접근법을 제공합니다.

다만, 어떤 전략이든 만능은 아닙니다. 횡보장에서의 Whipsaw, 모멘텀 크래시(momentum crash) 등의 위험을 인지하고, 자신의 투자 성향과 자금 규모에 맞게 조정하는 것이 중요합니다. 전략을 신뢰하되, 맹신하지 마세요.

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