자산배분

TQQQ, TMF 절대 모멘텀 백테스트(1)

unius 2022. 12. 15. 15:24
728x90
반응형

지금까지 두편의 글에서 TQQQ를 단순 매입 후 보유하는 전략과 대비하여 TQQQ, TMF를 고정 비중으로 혼합하는 전략과 1~12개월 상대 모멘텀 전략에 따른 백테스트 결과를 살펴보았다.  2010년부터 TQQQ를 매입 후 보유하는 전략의 연간 수익률은 35% 가 넘고 누적수익률은 4,700% 가 넘지만 MDD가 -80%를 초과하기 때문에 현실에서는 이와같은 방식으로 20년 이상 지속적으로 운용하기는 불가능하다. 그렇기에 우리는 자산배분을 통하여 포트폴리오 전체의 MDD는 낮추면서 기대수익률은 시장수익률 이상을 얻을 수 있는 지속 가능한 투자방법을 찾기위해서 다양한 전략으로 백테스트를 수행해보는 것이다.

 

지금까지 테스트해 본 고정 비중과 상대모멘텀을 따르는 자산배분 전략으로는 내가 원하는 충분한 결과를 얻지 못했다. 개인적으로는 연간 수익률 25% 이상에 MDD -35% 이하면 좋을 듯 하지만 지난 두가지 전략으로는 MDD 측면에서 별다른 효과를 얻을 수 없었다.

 

이번 글에서는 절대 모멘텀 전략을 수행해본다. 상대 모멘텀 전략은 투자자산군 중에서 상위 종목을 선택하는 전략으로 시장이 전체적으로 하락 추세에 있는 경우에는 보다 덜 하락한 종목을 선택하여 투자하는 방법이기에 하락장을 회피하는 측면에서는 보완이 필요하다. 반면에 절대 모멘텀은 모멘텀. 즉, 추세가 살아있는 자산에만 투자하는 방법이기에 하락장에서 보다 더 적극적인 대처가 가능하다. 추세의 판단은 다양한 방법이 있을 수가 있겠지만 난 일반적으로 많이 사용하는 1~12개월 수익률을 기준으로 판단하여 백테스트를 수행하였다.

# 절대모멘텀 백테스트
def AbsoluteMomentum_BT(assets, rank, months, start_day, run_on_end_of_period=False, lag=1, name='Absolute Momentum'):
    s = bt.Strategy(name, [bt.algos.RunAfterDate(start_day),
                           bt.algos.RunQuarterly(run_on_first_date=False, run_on_end_of_period=run_on_end_of_period, run_on_last_date=False),
                           SelectAbsoluteMomentum(rank=rank, lookback=pd.DateOffset(months=months), lag=pd.DateOffset(days=lag)),
                           bt.algos.WeighEqually(),
                           bt.algos.Rebalance()])
    return bt.Backtest(s, assets, initial_capital=10000.0)
    
# 절대모멘텀 상위 1종목 (1~12개월 비교)
absolutemomentum = {}
for i in range(0, 12):   
    absolutemomentum[i] = AbsoluteMomentum_BT(assets[tickers[0]].to_frame(), 1, i+1, start_day, False, 1, name='{}({})'.format(tickers[0],str(i+1)))
    
am_report = bt.run(*absolutemomentum.values())

과거 데이터를 가져오는 코드는 이전 글을 참고하면 된다. 투자자산은 TQQQ 단일 종목으로 하였고 시작일자는 최대 12개월 모멘텀을 사용하므로 첫번째 데이터의 1년 후의 날짜부터 수행하였다. 그리고 전략 생성시에  bt.Algo를 상속한 SelectAbsoluteMomentum() 이라는 자체 구현한 클래스의 인스턴스를 생성해서 전략을 구성했다. 이에 대한 설명은 다음 글에서 하고 이번에는 생략한다.

am_report.plot(figsize=(20,7), grid=True, logy=True, title='Absolute Momentum(1~12 months)')
am_report.set_date_range(start=start_day)
am_report.display()

결과를 살펴보면 연간 수익률이 25% 를 초과하는 경우는 없으며 그나마 4개월 모멘텀의 연간 수익률이 27%를 넘지만 MDD가 여전히 70%를 기록하고 있다. 상대 모멘텀 전략에 비하면 MDD가 조금 개선된 부분도 보이지만 전반적으로 고정 비중 전략과 비교해보면 연간수익률은 낮고 MDD는 더 높다.  최소한 MDD가 -50% 아래로는 내려가야 하지 않을까? 연 27%의 수익을 얻기 위해서 최대 -70%의 위험을 감수하기는 어렵겠다.

 

다음 글에서는 TQQQ와 TMF 2종목으로 투자자산을 구성하여 절대 모멘텀 전략에 따라서 백테스트를 수행해 보겠다.

 

1편 : TQQQ, TMF 고정 비중 백테스트
2편 : TQQQ, TMF 상대 모멘텀 백테스트
3편 : TQQQ, TMF 절대 모멘텀 백테스트(1)
4편 : TQQQ, TMF 절대 모멘텀 백테스트(2)
5편: TQQQ,TMF 듀얼 모멘텀 백테스트
6편: TQQQ, TMF 평균 모멘텀 스코어 백테스트
7편: TQQQ, TMF 수익곡선 모멘텀 백테스트

8편: TQQQ, TMF 평균모멘텀 전략의 비중 계산 Algo 클래스

9편: TQQQ, TMF 가속듀얼모멘텀 백스트

 

☞ 이 글은 순수하게 개인적인 의도로 테스트한 결과이며 내용상 오류가 있을 수도 있습니다.

.

728x90
반응형