VectorBT: 파이썬을 위한 가장 빠른 백테스팅 프레임워크

파이썬으로 알고리즘 트레이딩이나 전략 백테스팅을 해본 경험이 있다면, 아마도 같은 문제에 직면했을 것입니다. 바로 속도입니다. 기존의 라이브러리(예: Backtrader 또는 Zipline)는 객체 지향 방식을 사용하여 과거 데이터를 이벤트별로 하나씩 처리(이벤트 기반)합니다. 이는 로직을 작성하기에는 편리하지만, 수천 개의 조합으로 매개변수 최적화를 수행할 때는 수 시간의 대기 시간이 고통스럽게 느껴질 수 있습니다.
여기서 바로 **VectorBT**가 등장합니다. 이는 백테스팅에 대해 근본적으로 다른 접근 방식을 적용하는 양적 분석 라이브러리입니다.
VectorBT란 무엇인가요?

VectorBT는 오직 pandas와 NumPy 객체만을 다루며, 계산 속도를 높이기 위해 Numba 컴파일러를 사용합니다. 이를 통해 상상할 수 없는 속도와 확장성으로 데이터를 분석하고, 수만 개의 전략을 단 몇 초 만에 테스트할 수 있습니다.
전통적인 백테스터처럼 각 바(bar)나 틱(tick)을 차례대로 처리하는 대신, VectorBT는 복잡한 데이터를 구조화된 배열로 표현합니다. 파이썬 루프를 기계어로 컴파일할 수 있게 하여 경로 의존성 문제를 해결하는 Numba와 작업 벡터화의 결합은 C 언어 수준의 성능을 제공합니다.
주요 기능

- 벡터화된 백테스팅: 단 몇 줄의 코드로 전략 테스트가 가능합니다. 느린 파이썬 루프가 필요 없습니다.
- 대규모 최적화: 한 번의 실행으로 수많은 매개변수, 타임프레임, 자산에 대해 동시에 트레이딩 전략을 최적화할 수 있습니다.
- 대화형 시각화: Plotly 및 Jupyter Widgets와의 내장 통합을 통해 Jupyter Notebook에서 렌더링 지연 없이 (Tableau와 같은) 매우 복잡한 차트와 대시보드를 직접 생성할 수 있습니다.
- 제어권 유지: TradingView와 같은 클라우드 플랫폼과 달리 데이터와 알고리즘이 사용자에게만 유지됩니다. 동시에 계산 성능은 기성 플랫폼과 대등하거나 종종 이를 능가합니다.
- 데이터 준비: 시계열 분석 및 머신러닝 모델을 위한 특성 공학(Feature Engineering)에 탁월한 도구 세트를 제공합니다.
작동 방식 (예시)

비트코인(BTC)에 대해 고전적인 이중 이동 평균 크로스오버(DMAC) 전략을 테스트해보겠습니다.
기존의 OOP 프레임워크에서는 전략 클래스를 만들고, 각 바에서 트리거되는 next() 로직을 설명하고, 모든 바를 반복해야 합니다. VectorBT에서는 모든 것이 훨씬 더 우아하고 빠릅니다.
import vectorbt as vbt
btc_price = vbt.YFData.download('BTC-USD', start='2019-01-01 UTC', end='2020-01-01 UTC').get('Close')
fast_ma = vbt.MA.run(btc_price, [10, 20], short_name='fast')
slow_ma = vbt.MA.run(btc_price, [30, 30], short_name='slow')
entries = fast_ma.ma_crossed_above(slow_ma)
exits = fast_ma.ma_crossed_below(slow_ma)
pf = vbt.Portfolio.from_signals(btc_price, entries, exits)
print(pf.total_return())
이 예제에서 우리는 순식간에 DMAC 전략의 여러 변형(조합 (10, 30) 및 (20, 30))을 테스트했습니다. 결과(열 형태)는 각 매개변수 옵션에 대한 수익률이 됩니다.
fast_window slow_window
10 30 0.848840
20 30 0.543411
Name: total_return, dtype: Korean
이더리움, 솔라나 및 수십 개의 코인을 더 추가하고 싶으신가요? 각 가격을 하나의 DataFrame으로 결합하기만 하면 됩니다. 서로 다른 시간 범위를 테스트하고 싶으신가요? range_split 함수를 사용하세요. 벡터 표현을 사용하면 RAM이 충분한 한 거의 무한하게 차원을 확장할 수 있습니다.
VectorBT PRO

이 라이브러리의 상용 버전인 VectorBT PRO도 있습니다. 여기에는 훨씬 더 강력한 도구들이 포함되어 있습니다. 병렬 처리, 고급 포트폴리오 최적화, 가격 패턴 인식, 이벤트 예측, 마진 거래 및 지정가 주문 계산, 그리고 실제 거래에 중요한 100가지 이상의 기타 지표들이 포함되어 있습니다.
왜 VectorBT를 사용해야 하나요?
하나의 종목에 대해 하나의 전략을 "실행"하기만 하면 된다면 표준 프레임워크로도 충분할 수 있습니다. 하지만 목표가 탐색적 분석, 통계적 패턴(알파) 찾기, 수천 개의 종목에 대해 동시에 가설을 테스트하는 것이라면 VectorBT는 여러분에게 진정한 발견이 될 것입니다.
이것은 트레이딩에 도입된 데이터 사이언티스트의 도구입니다. 파이썬에서 다른 시장 참여자들이 하는 것보다 수십 배, 수백 배 빠르게 아이디어를 확인할 수 있게 함으로써 경쟁적인 정보 우위를 제공합니다.
MarketMaker.cc Team
퀀트 리서치 및 전략