본문 바로가기
카테고리 없음

모멘텀 전략 기본 원리 구현 예시

by 유후후우후 2025. 2. 12.

모멘텀 전략 기본 원리

 

1. 모멘텀 전략이란?

모멘텀 전략(Momentum Strategy)은 주식이나 자산이 최근 상승 추세를 보이면 계속 상승할 가능성이 높다고 보고 매수하고, 하락 추세를 보이면 하락이 지속될 것으로 예상하여 매도하는 투자 전략입니다. 즉, "강한 자산을 사서 더 오를 때까지 보유하고, 약한 자산을 팔아서 추가 하락을 피한다"는 원칙을 따릅니다.

(1) 모멘텀 전략의 기본 원리

  • 추세 지속성(Trend Persistence): 상승한 자산은 더 오를 확률이 높고, 하락한 자산은 더 떨어질 확률이 높다는 가설을 기반으로 함
  • 시장 비효율성(Behavioral Finance): 투자자들이 새로운 정보를 천천히 반영하는 경향이 있기 때문에, 특정 종목이 지속적으로 강세나 약세를 보이는 현상이 발생
  • 거래량과 가격의 관계: 높은 거래량을 수반하는 가격 상승은 더 강한 모멘텀을 형성

(2) 모멘텀 전략의 유형

  • 절대 모멘텀 (Absolute Momentum): 특정 자산의 과거 수익률이 일정 기준 이상이면 매수, 기준 이하이면 매도
  • 상대 모멘텀 (Relative Momentum): 여러 자산 중에서 가장 성과가 좋은 자산을 선택하여 투자
  • 크로스오버 모멘텀 (Moving Average Crossover): 단기 이동평균선이 장기 이동평균선을 상향 돌파하면 매수, 하향 돌파하면 매도

2. 모멘텀 전략 구현

(1) 데이터 준비

Python을 사용하여 모멘텀 전략을 구현하는 과정을 설명합니다. 먼저, 필요한 라이브러리를 설치하고 데이터를 준비합니다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf

# 주식 데이터 가져오기 (삼성전자 예제)
ticker = "005930.KQ"
data = yf.download(ticker, start="2020-01-01", end="2024-01-01")

# 종가(Close) 데이터 선택
data = data[["Close"]]
data.head()

(2) 모멘텀 지표 계산

① 가격 모멘텀 (Price Momentum)

단순히 n일 전 가격과 비교하여 모멘텀을 계산할 수 있습니다.

# 30일 모멘텀 (현재 가격 - 30일 전 가격)
data["Momentum"] = data["Close"] - data["Close"].shift(30)

# 시각화
plt.figure(figsize=(12,6))
plt.plot(data["Close"], label="Stock Price")
plt.plot(data["Momentum"], label="30-Day Momentum", linestyle="dashed", color="red")
plt.legend()
plt.show()

② 상대 모멘텀 (Relative Momentum)

여러 자산의 상대적인 성과를 비교하여 가장 강한 종목을 선택합니다.

# 비교 대상 종목 데이터 (삼성전자, 현대차, 카카오)
tickers = ["005930.KQ", "005380.KQ", "035720.KQ"]
stocks = yf.download(tickers, start="2020-01-01", end="2024-01-01")["Close"]

# 3개월 수익률 계산
returns = stocks.pct_change(90)

# 가장 높은 수익률을 기록한 종목 선택
best_performing_stock = returns.iloc[-1].idxmax()
print(f"가장 강한 모멘텀을 가진 종목: {best_performing_stock}")

③ 이동평균 크로스오버 (Moving Average Crossover)

단기 이동평균선이 장기 이동평균선을 상향 돌파하면 매수, 하향 돌파하면 매도합니다.

# 이동평균선 계산 (50일 & 200일)
data["SMA50"] = data["Close"].rolling(window=50).mean()
data["SMA200"] = data["Close"].rolling(window=200).mean()

# 매수/매도 신호 생성
data["Signal"] = np.where(data["SMA50"] > data["SMA200"], 1, -1)

# 시각화
plt.figure(figsize=(12,6))
plt.plot(data["Close"], label="Stock Price")
plt.plot(data["SMA50"], label="50-day SMA", linestyle="dashed")
plt.plot(data["SMA200"], label="200-day SMA", linestyle="dotted")
plt.legend()
plt.show()

(3) 백테스팅

모멘텀 전략이 실제로 효과적인지 확인하기 위해 백테스팅을 실행합니다.

# 전략 수익률 계산
data["Strategy Returns"] = data["Signal"].shift(1) * data["Close"].pct_change()

# 누적 수익률 계산
data["Cumulative Returns"] = (1 + data["Strategy Returns"]).cumprod()

# 결과 시각화
plt.figure(figsize=(12,6))
plt.plot(data["Cumulative Returns"], label="Momentum Strategy")
plt.plot((1 + data["Close"].pct_change()).cumprod(), label="Buy & Hold", linestyle="dashed")
plt.legend()
plt.show()

3. 모멘텀 전략의 장단점

장점 단점
추세를 이용하여 높은 수익 가능 급격한 변동성(Flash Crash)에 취약
단기/장기 투자 모두 적용 가능 거래 비용이 증가할 가능성
다양한 자산군에 적용 가능 추세 반전이 발생할 경우 손실 위험

4. 결론

모멘텀 전략은 주가의 추세를 이용하여 투자 수익을 극대화하는 효과적인 방법입니다. 그러나 모든 시장 환경에서 성공하는 것은 아니므로, 백테스팅을 통해 신중하게 전략을 검증하는 것이 중요합니다.

실전 투자 적용을 위한 체크리스트

  • 과거 데이터를 활용하여 백테스팅을 수행
  • 거래 비용과 슬리피지를 고려한 전략 조정
  • 다양한 모멘텀 전략을 조합하여 최적의 투자 방법 선택
  • 포트폴리오 분산 투자로 리스크 관리

AI 및 머신러닝을 활용하여 보다 정교한 모멘텀 전략을 개발할 수도 있으며, 향후 시장 환경 변화에 따라 지속적인 전략 개선이 필요합니다.