1. 기술/통계, 시계열

파이썬 퀀트 분석 패키지 - bt

swsong 2022. 6. 14. 18:25

https://pmorissette.github.io/bt/index.html

 

bt - Flexible Backtesting for Python — bt 0.2.9 documentation

What is bt? bt is a flexible backtesting framework for Python used to test quantitative trading strategies. Backtesting is the process of testing a strategy over a given data set. This framework allows you to easily create strategies that mix and match dif

pmorissette.github.io

bt는 ffn을 베이스로 하는 백테스팅 패키지다. 사용법은 간단하다.

  1. data = bt.get(ticker, period)로 데이터 불러오기(->data 변수에 저장)
  2. s = bt.Strategy(name, [Algorithms])로 백테스팅 알고리즘 생성하기(->s 변수에 저장)
  3. test = bt.Backtest(s, data)로 백테스팅 객체 생성하기 (->test 변수에 저장)
  4. res = bt.run(test)으로 백테스팅 실행하기 (-> res 변수에 저장)
  5. res.plot()으로 시각화하기

이 흐름으로 전개되며 1번에서 어떤 티커 데이터를 어떤 기간만큼 가져올지 정하고, 2번에서 어떤 알고리즘을 사용할지 정하면 된다.

bt 패키지에서 기본적으로 제공하는 알고리즘들이 있으며, class 객체로 상속받아 커스텀할 수 있다. 여기서는 간단하게 특정 시점에 매매 후 장기투자하는 전략을 테스트해보자.

마이크로소프트(msft), 애플(aapl), 테슬라(tsla), 엔비디아(nvda) 4개 종목을 포트폴리오에 담는다고 했을 때, 미국 기술주 전반에 투자하는 것(qqq)과 미국 시장에 투자하는 것(spy) 등 총 5가지 옵션을 두고 위와 같이 수익률을 확인해볼 수 있다.

future2(테슬라, 엔비디아) 종목의 상승 폭으로 인해 그래프상 다른 전략의 움직임이 보이지 않을 때 display() 함수로 디테일한 내용들을 살펴보면 된다.

최대 낙폭이나 샤프지수, 소르티노 지수 등 자주 포는 포트폴리오 평가 척도를 간편하게 확인할 수 있다.