6章イベントベース・バックテストのためのクラスの作成

実のところ、人生の悲劇は人の先入観とは無関係です。結局のところ、その単純さ、デザインの壮大さ、そしてそれらに内在する奇妙な要素に、人はいつも当惑させられるのです。

—ジャン・コクトー

まず、NumPyやpandasを用いたベクトル化バックテストは、コードが簡潔であるため、実装するには便利で効率的であることが一般的です。また、これらのパッケージがこのような操作に最適化されているため、実行速度も速いです。しかし、このアプローチでは、すべての種類のトレード戦略や、アルゴリズムトレーダーが実際に遭遇する現象に対処することはできません。ベクトル化バックテストに関しては、以下のような潜在的な欠点があります。

先読みバイアス
ベクトル化バックテストは、まとまって利用可能なデータセットに基づいたものであり、新しいデータが段階的に到着することは考慮されていません。
単純化
例えば、固定取引コストは、ベクトル化ではモデル化できません。主に相対リターンに基づいているからです。また、トレードごとに固定された量や、単一の金融商品(例えば、株式1株)の非分割性も適切にモデル化できません。
非再帰性
トレード戦略を具現化するアルゴリズムは、ある時点までの損益もしくはそれに似た経路依存型の統計量のような、時間の経過とともに変化する状態変数に対して、再帰計算をする必要があるかもしれません。ベクトル化ではこのような特徴に対処できません。

一方、イベントベースのバックテストでは、実際のトレードをモデル化するためのより現実的なアプローチを用いて、これらの問題に対処することができます。基本的なことですが、新しいデータを受け取ることをイベントとみなします。Apple社の株式を対象としたトレード戦略を、EODデータを用いてバックテストする場合、Apple社の株式の終値が更新されることがイベントと言えるでしょう。金利の変化やストップロスレベルへの到達がイベントになることもあります。イベントベースのバックテストの手法の利点は、一般的に以下の通りです。 ...

Get Pythonからはじめるアルゴリズムトレード ―自動売買の基礎と機械学習の本格導入に向けたPythonプログラミング now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.