https://pmorissette.github.io/bt/index.html
bt는 ffn을 베이스로 하는 백테스팅 패키지다. 사용법은 간단하다.
- data = bt.get(ticker, period)로 데이터 불러오기(->data 변수에 저장)
- s = bt.Strategy(name, [Algorithms])로 백테스팅 알고리즘 생성하기(->s 변수에 저장)
- test = bt.Backtest(s, data)로 백테스팅 객체 생성하기 (->test 변수에 저장)
- res = bt.run(test)으로 백테스팅 실행하기 (-> res 변수에 저장)
- res.plot()으로 시각화하기
이 흐름으로 전개되며 1번에서 어떤 티커 데이터를 어떤 기간만큼 가져올지 정하고, 2번에서 어떤 알고리즘을 사용할지 정하면 된다.
bt 패키지에서 기본적으로 제공하는 알고리즘들이 있으며, class 객체로 상속받아 커스텀할 수 있다. 여기서는 간단하게 특정 시점에 매매 후 장기투자하는 전략을 테스트해보자.
마이크로소프트(msft), 애플(aapl), 테슬라(tsla), 엔비디아(nvda) 4개 종목을 포트폴리오에 담는다고 했을 때, 미국 기술주 전반에 투자하는 것(qqq)과 미국 시장에 투자하는 것(spy) 등 총 5가지 옵션을 두고 위와 같이 수익률을 확인해볼 수 있다.
future2(테슬라, 엔비디아) 종목의 상승 폭으로 인해 그래프상 다른 전략의 움직임이 보이지 않을 때 display() 함수로 디테일한 내용들을 살펴보면 된다.
최대 낙폭이나 샤프지수, 소르티노 지수 등 자주 포는 포트폴리오 평가 척도를 간편하게 확인할 수 있다.