강환국 작가의 "거인의 포트폴리오"에 나오는 듀얼 모멘텀(Dual Momentum) 전략에 대한 글이다. 해당 전략의 특징은 아래와 같다.
듀얼 모멘텀(Dual Momentum) 전략
- 자산 종류
- 미국 주식(SPY), 선진국 주식(EFA), 미국 채권(AGG)
- 전략
- 미국 주식 SPY, 선진국 주식 EFA, 초단기채권 BIL의 최근 12개월 수익률 계산
if SPY > BIL: # 12개월 수익률 기준 매수(max(SPY, EFA)) else: 매수(AGG)
- 매도 전략 : 월 1회 리밸런싱
자동화 코드는 아래와 같다. VAA 비해 간단하다.
from FinanceDataReader import DataReader
from datetime import timedelta
# Dual Momentum 전략
date_start = '20210101'
etf_names = ['SPY', 'BIL', 'EFA']
data_dict = {}
for etf_name in etf_names:
data_dict[etf_name] = DataReader(etf_name, date_start)
SPY = data_dict['SPY']
today = SPY.index[-1]
one_year_ago = today - timedelta(365)
def get_earning_rate(etf_name):
"""이름이 etf_name인 ETF의 12개월간 수익률 리턴"""
etf_data = data_dict[etf_name]
today_price = etf_data.loc[today].Close
score = 0
print(f'{etf_name} 12개월간 수익률', ':', end=' ')
date = one_year_ago
past_price = etf_data.loc[etf_data.index > date].iloc[0].Close
earning_rate = (today_price - past_price) / past_price * 100
print(f'{earning_rate:.3f}%')
return earning_rate
er_SPY = get_earning_rate('SPY')
er_BIL = get_earning_rate('BIL')
er_EFA = get_earning_rate('EFA')
if er_SPY > er_BIL:
print("{}를 매수하세요.".format(max(er_SPY, er_EFA)))
else:
print("AGG를 매수하세요.")
'재테크' 카테고리의 다른 글
231015 chatGPT 음성 대화 경험 관련 투자 생각 (2) | 2023.10.15 |
---|---|
VAA 공격형 전략 Python 자동화 코드 (0) | 2022.08.05 |