거래 전략 백테스팅 프로젝트 설명
요약
본 프로젝트는 Python 3을 사용하여 현대 포트폴리오 이론(MPT) 기반의 다양한 거래 전략 백테스팅 방법을 제공합니다. 최적 마코위츠, 글로벌 최소 분산, 리스크 패리티 등 여러 포트폴리오를 구축하고 월별 재조정을 통해 아웃-오브-샘플 결과를 비교 분석할 수 있습니다.
핵심 포인트
- MPT 기반의 4가지 핵심 포트폴리오 전략 구현
- 다양한 ETF(SPY, TLT, IAU 등)를 활용한 백테스팅 환경 제공
- 월별 재조정 및 아웃-오브-샘플 테스트 수행 가능
- Python 스크립트를 통한 체계적인 개발 구조 제시
거래 전략 백테스팅
최종 업데이트 2021년 2월 25일
Matteo Bottacini, [email protected]
프로젝트 설명
이 프로젝트는 Python 3에서 현대 포트폴리오 이론(Modern Portfolio Theory, MPT)의 다양한 접근 방식을 적용하여 여러 거래 전략을 백테스팅하는 것입니다.
백테스트되는 전략은 다음과 같습니다:
- 최적 마코위츠 포트폴리오 (The Optimal Markowitz Portfolio);
- 글로벌 최소 분산 포트폴리오 (The Global Minimum Variance Portfolio);
- 리스크 패리티 포트폴리오 (The Risk-Parity Portfolio);
- 동일 가중치 포트폴리오 (The Equally Weighted Portfolio)
고려된 ETF는 다음과 같습니다:
- EEM: iShares MSCI Emerging Markets ETF
- EMLC: VanEck Vectors J.P. Morgan EM Local Currency Bond ETF
- IAU: iShares Gold Trust
- IEF: iShares 7-10 Year Treasury Bond ETF
- IWM: iShares Russell 2000 ETF
- SPY: SPDR S&P 500 ETF Trust
- TIP: iShares TIPS Bond ETF
- TLT: iShares 20+ Year Treasury Bond ETF
- VGK: Vanguard FTSE Europe Index Fund ETF Shares
스크립트가 수행하는 작업은 다음과 같습니다:
- 금융 데이터 다운로드 및 분석;
- 최적 마코위츠 포트폴리오 (평균-분산, mean-variance) 찾기;
- 글로벌 최소 분산 (GMV) 포트폴리오 (최소 분산, minimum variance) 찾기;
- 리스크 패리티 포트폴리오 (risk parity) 찾기;
- 동일 가중치 포트폴리오 (equally weighted) 찾기;
- 월별 재조정(rebalance)을 통해 아웃-오브-샘플 결과로 거래 전략 백테스트 수행;
- 결과 비교.
폴더 구조:
trading-strategy-backtest/
deliverable/
run_backtest.py
src/
equally_weighted_portfolio.py
mean_variance_portfolio.py
minimum_variance_portfolio.py
risk_parity_portoflio.py
README.md
거래 전략 구성
각 모델은 해당 스크립트에 설정되어 있습니다.
동일 가중치 포트폴리오 (Equally weighted portfolio)
def equally_weighted_portfolio(ret):
init_weights = [1 / len(ret.columns)] * len(ret.columns)
opt_weights = init_weights
...
리스크 패리티 포트폴리오 (Risk parity portfolio)
def risk_parity_portfolio(ret):
init_guess = 1 / ret.std()
opt_weights = list(init_guess / init_guess.sum())
...
최소 분산 포트폴리오 (Minimum variance portfolio)
import numpy as np
from scipy.optimize import minimize
...
평균-분산 포트폴리오 (Mean-variance portfolio)
# 모듈 임포트
import numpy as np
from scipy.optimize import minimize
...
백테스트 설정 (Backtest configuration)
스크립트 ../deliverable/run_backtest.py에서 주요 변수를 변경하여 이상적인 자산 배분 및 전략을 찾을 수 있습니다.
변경할 수 있는 매개변수는 다음과 같습니다:
- 자산(Assets);
- 학습 세트 길이 (Length of the training set)
# 다음 매개변수들을 자유롭게 변경하세요:
tickers = []
months_training_set = 12 * 5
결과 (Results)

지원되는 버전 (Supported versions)
이 설정은 Python 3.8을 기준으로 테스트되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · 9b2255ca의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기