VectorBT:Pythonで最速のバックテストフレームワーク

Pythonでアルゴトレードや取引戦略のバックテストに携わったことがあるなら、おそらく同じ問題に直面したことがあるでしょう。それは速度です。従来のライブラリ(BacktraderやZiplineなど)はオブジェクト指向のアプローチを採用しており、ヒストリカルデータをイベントごとに(イベント駆動型で)反復処理します。これはロジックを書くのには便利ですが、数千通りの組み合わせでパラメータを最適化する場合、何時間も待たされるのは耐え難いものです。
そこで登場したのが**VectorBT**です。これは、バックテストに対して根本的に異なるアプローチを適用する計量分析ライブラリです。
VectorBTとは?

VectorBTはpandasとNumPyオブジェクトのみを扱い、計算を高速化するためにNumbaコンパイラを使用します。これにより、信じられないほどの速度と拡張性であらゆるデータを分析でき、文字通り数秒で数万の戦略をテストできます。
(従来のバックテスターのように)各バーやティックを順番に処理する代わりに、VectorBTは複雑なデータを構造化された配列として表現します。Numba(Pythonのループをマシンコードにコンパイルできるようにすることでパス依存性の問題を解決します)と連携した操作のベクトル化は、C言語レベルのパフォーマンスを提供します。
主な特徴

- ベクトル化されたバックテスト: 数行のコードで戦略をテスト。遅いPythonのループは不要。
- 大規模な最適化: 多くのパラメータ、タイムフレーム、資産にわたって取引戦略を一度に同時に最適化。
- インタラクティブな可視化: 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: float64
イーサリアム、ソラナ、さらに数十のコインを追加したいですか?それらの価格を1つのDataFrameに結合するだけです。異なる時間範囲をテストしたいですか?range_split関数を使用してください。ベクトル表現により、RAMが十分にある限り、次元をほぼ無制限に増やすことができます。
VectorBT PRO

このライブラリには、さらに強力なツールを追加する商用バージョンVectorBT PROもあります。これには、並列処理、高度なポートフォリオ最適化、価格パターン認識、イベント予測、証拠金取引や指値注文の計算、その他実際の取引に重要な100以上のメトリクスが含まれています。
なぜVectorBTを使用するのか?
1つの金融商品で1つの戦略を「実行」するだけなら、標準的なフレームワークで十分かもしれません。しかし、探索的分析、統計的パターンの発見(アルファ)、数千の銘柄での同時仮説検証が目標であれば、VectorBTはあなたにとって真の発見となるでしょう。
これは、トレーディングに持ち込まれたデータサイエンティストのツールです。Pythonで他の市場参加者が行うよりも数十倍、数百倍速くアイデアをチェックできることで、競争上の情報の優位性をもたらします。
MarketMaker.cc Team
クオンツ・リサーチ&戦略