今回は、エンドツーエンドの定量取引システムに付随する基本コンセプトのいくつかを紹介します。 この投稿は、2 つの読者に役立つことを期待しています。 1 つは、定量トレーダーとしてファンドで仕事を得ようとしている人たちです。 もう 1 つは、自分で「小売」アルゴリズム取引ビジネスを立ち上げようとする人です。
クオンツ取引は、クオンツ金融の中でも非常に高度な分野です。 面接に合格したり、独自の取引戦略を構築したりするために必要な知識を得るには、かなりの時間がかかることがあります。 それだけでなく、少なくともMATLAB、R、Pythonなどの言語による広範なプログラミングの専門知識が必要です。 しかし、ストラテジーの取引頻度が高くなればなるほど、技術的な側面がより重要となってきます。 したがって、C/C++に精通していることが最も重要になります。
定量取引システムは、4つの主要なコンポーネントで構成されています。
- 戦略の特定-戦略の発見、エッジの活用、取引頻度の決定
- 戦略のバックテスト-データの取得、戦略のパフォーマンスの分析、偏りの除去
- 実行システム-証券会社にリンク。
- リスク管理 – 最適な資本配分、「ベットサイズ」/ケリー基準、取引心理
まず、取引戦略を特定する方法について見ていきます。
Strategy Identification
すべての定量的取引プロセスは、最初の研究期間から始まります。 この調査プロセスには、戦略を見つけること、その戦略が実行中の他の戦略のポートフォリオに適合するかどうかを確認すること、戦略をテストするために必要なデータを取得すること、より高いリターンと低いリスクのために戦略を最適化しようとすることなどが含まれます。 個人」トレーダーとして戦略を実行する場合は、自分の必要資金と、取引コストが戦略にどのような影響を与えるかを考慮する必要があります。 学者は定期的に理論的な取引結果を発表しています (ほとんどは取引コストの総和ですが)。 定量的金融のブログでは、戦略について詳しく説明されています。
なぜ個人や企業は、特に他の人が「クラウディング・ザ・トレード」によって長期的にその戦略が機能しなくなることが分かっている場合に、収益性の高い戦略について熱心に議論するのか疑問に思うかもしれません。 その理由は、彼らが実施した正確なパラメータや調整方法について、あまり語ろうとしないことにあります。 これらの最適化は、比較的平凡な戦略を高収益なものに変える鍵である。 実際、独自の戦略を作成する最善の方法の 1 つは、類似の方法を見つけ、独自の最適化手順を実行することです。
ここで、戦略のアイデアを探し始める場所の小さなリストを示します:
- Social Science Research Network – www.ssrn.com
- arXiv Quantitative Finance – arxiv.org/archive/q-fin
- Seeking Alpha – www.seekingalpha.com
- Elite Trader – www.elitetrader.com
- Nuclear Phynance – www.nuclearphynance.com
- Quantivity – quantivity.wordpress.com
あなたが見る戦略の多くは平均回帰とトレンドフォロー/モメンタムのカテゴリーに分類されるでしょう。 平均回帰戦略とは、「価格系列」(2つの相関資産のスプレッドなど)の長期的な平均が存在し、この平均からの短期的な乖離が最終的に回帰するという事実を利用しようとするものです。 モメンタム戦略は、一方向に勢いを増す市場トレンドに「便乗」し、反転するまでそのトレンドに従うことで、投資家心理と大型ファンドの構造の両方を利用しようとします。
定量取引においてもう一つ非常に重要な点は、取引戦略の頻度です。 低頻度取引(LFT)は、一般に、取引日よりも長く資産を保有するすべての戦略を指します。 これに対して、高頻度取引(HFT)とは、一般に、日中に資産を保有する戦略を指します。 超高頻度取引(UHFT)とは、秒単位やミリ秒単位で資産を保有する戦略を指します。 個人投資家にとって、高頻度取引や超高頻度取引は確かに可能ですが、それは取引の「テクノロジー・スタック」とオーダーブックの力学に関する詳細な知識がある場合に限られます。 この入門記事では、これらの側面についてあまり詳しく説明しません。
一旦、戦略または戦略のセットが特定されると、今度は過去のデータで収益性をテストする必要があります。
ストラテジーバックテスト
バックテストの目的は、上記のプロセスを通じて識別された戦略が、過去のデータとサンプル外のデータの両方に適用したときに利益を生むという証拠を提供することです。 これにより、その戦略が「現実世界」でどのように機能するかという期待が設定されます。 しかし、バックテストは、様々な理由から、成功を保証するものではありません。 バックテストには数多くのバイアスが含まれるため、おそらく定量取引で最も微妙な分野であり、慎重に検討し、可能な限り排除する必要があります。 ここでは、ルックアヘッド・バイアス、サバイバーシップ・バイアス、最適化バイアス(「データスヌープ」バイアスとも呼ばれる)を含む、一般的なバイアスの種類について説明します。 バックテストにおいて重要な他の分野は、ヒストリカルデータの可用性と清潔さ、現実的な取引コストの考慮、および堅牢なバックテストプラットフォームの決定が含まれます。 取引コストについては、以下の執行システムのセクションで詳しく説明します。
一旦戦略が特定されると、テストとおそらく改良を実施するためのヒストリデータを取得する必要があります。 すべての資産クラスにおいて、かなりの数のデータベンダーが存在します。 一般的に、データの質、深さ、適時性によってコストは大きく異なります。 クオンツ・トレーダーの初級者(少なくとも個人レベル)は、ヤフー・ファイナンスの無料データセットを利用するのが伝統的な出発点である。 ここではプロバイダーについてあまり触れませんが、ヒストリカルデータセットを扱う際の一般的な問題に集中したいと思います。
ヒストリカルデータに関する主な懸念は、正確性/清潔さ、生存バイアス、配当や株式分割などのコーポレートアクションの調整です。 例えば、スパイクフィルターでは、時系列データの不正確な「スパイク」を検出し、それを補正します。 また、非常に見つけにくい場合もある。 生存率バイアスは、無料あるいは安価なデータセットの特徴であることが多い。 生存者バイアスのあるデータセットとは、もはや取引されていない資産を含んでいないことを意味する。 株式の場合、これは上場廃止や倒産した銘柄を意味します。 このバイアスは、そのようなデータセットでテストされた株式取引戦略が、過去の「勝者」がすでに事前選択されているため、「現実世界」よりも良いパフォーマンスを示す可能性が高いことを意味します。
バックテスト手順を実行するために、それはソフトウェアプラットフォームを使用する必要があります。 Tradestation などの専用のバックテスト ソフトウェア、Excel や MATLAB などの数値計算プラットフォーム、または Python や C++ などのプログラミング言語によるフル カスタム実装のいずれかを選択することができます。 私は、完全な自社技術スタックを構築することを信じているので、Tradestation(または類似の)、Excel、MATLABについてあまり深く考えません(理由は後述します)。 そうすることの利点の一つは、極めて高度な統計的戦略であっても、バックテストソフトウェアと実行システムを緊密に統合することができることです。 特にHFT戦略では、カスタム実装を使用することが不可欠です。
システムをバックテストする場合、それがどの程度うまく機能しているかを定量化できなければなりません。 定量的戦略の「業界標準」の指標は、最大ドローダウンとシャープレシオです。 最大ドローダウンは、特定の期間(通常は年間)の口座の株式曲線の最大のピークからスルーの低下を特徴としています。 これは、ほとんどの場合、パーセンテージで示されます。 LFT 戦略は、多くの統計的要因によって HFT 戦略よりもドローダウン が大きくなる傾向があります。 ヒストリカル・バックテストでは過去の最大ドローダウンが表示さ れ、これは戦略の将来のドローダウンパフォーマンスの良いガイドとなる。 2 つ目の測定はシャープ比であり、これは超過リターンの平均 をその標準偏差で割ったものとして発見的に定義される。 ここで、超過リターンとは、S&P500 や 3 ヶ月物国債など、あらかじめ決められたベンチマークを上回る戦略のリターンを指す。 年率換算リターンは、(シャープ比とは異なり)戦略のボラティリティを考慮しないため、通常利用される指標ではないことに注意してください。
Execution Systems
実行システムは、戦略によって生成された取引リストがブローカーによって送信および実行される手段である。 取引生成は半自動、あるいは全自動であるにもかかわらず、執行メカニズムは手動、半自動(すなわち「ワンクリック」)、あるいは全自動である可能性があります。 LFT戦略では、手動および半手動の手法が一般的です。 執行システムを作成する際に考慮すべき重要な点は、証券会社へのインターフェース、取引コスト(手数料、スリッページ、スプレッドなど)の最小化、バックテストされたパフォーマンスからのライブシステムの性能の乖離です。 それらは、電話でブローカーを呼び出すことから、完全に自動化された高性能のアプリケーション プログラミング インターフェース (API) に至るまで、さまざまです。 理想的には、取引の実行を可能な限り自動化したいものです。 そうすることで、研究に専念できるようになり、複数の戦略やより高頻度の戦略を実行できるようになります(実際、HFTは自動実行なしでは本質的に不可能です)。 MATLAB、Excel、Tradestation などの一般的なバックテスト・ソフトウェアは、頻度が低く、単純な戦略に適しています。 しかし、本格的なHFTを行うには、C++のような高性能言語で書かれた社内実行システムを構築する必要があります。 逸話ですが、私が以前勤めていたファンドでは、10分ごとに新しいマーケットデータをダウンロードし、その情報をもとに同じ時間枠で取引を行う「取引ループ」を組んでいました。 これには最適化されたPythonスクリプトが使われていました。 分または秒単位のデータに近いものについては、C/C++がより理想的だと思います。
大規模なファンドでは、執行を最適化することは、クオンツトレーダーの領域ではないことがよくあります。 しかし、小規模な店舗やHFT企業では、トレーダーは執行者であるため、より幅広いスキルセットが望まれることがよくあります。 ファンドに就職する場合は、このことを念頭に置いてください。 プログラミングのスキルは、統計学や計量経済学の才能と同じくらい、あるいはそれ以上に重要です。 取引コストには、一般的に3つの要素があります。 手数料(または税金)は、証券会社、取引所、SEC(または同様の政府規制機関)によって課される手数料です。スリッページは、注文が満たされることを意図した価格と実際に満たされた価格との差です。 スプレッドは一定ではなく、市場の現在の流動性 (すなわち、買い/売り注文の可用性) に依存することに注意してください。
取引コストは、シャープ比が良好で極めて収益性の高い戦略と、シャープ比が最低で極めて収益性の低い戦略の違いを生み出す可能性があります。 バックテストから取引コストを正しく予測することは困難な場合があります。 戦略の頻度によっては、過去の取引所データ(ビッド/アスク価格のティックデータを含む)にアクセスする必要があります。 このような理由から、大規模なファンドでは、クオンツのチーム全体が執行の最適化に専念しています。 ファンドが大量の取引(その理由は様々です!)をオフロードする必要があるシナリオを考えてみましょう。 多くの株式を市場に「投棄」することで、価格が急速に下落し、最適な執行が行われない可能性があります。 そのため、市場に注文を「滴下」するアルゴリズムが存在しますが、その場合、ファンドはスリッページのリスクを負うことになります。 さらに、他の戦略はこのような必然性を「食い物」にし、非効率性を利用することができます。 これはファンド構造裁定取引の領域です。
執行システムに関する最後の主要な問題は、バックテストされたパフォーマンスからの戦略パフォーマンスの乖離に関係しています。 これは、多くの理由で発生する可能性があります。 私たちはすでに、バックテストを考慮する際に、ルックアヘッド・バイアスと最適化バイアスについて深く議論してきました。 しかし、戦略の中には、展開前にこれらのバイアスをテストすることが容易でないものがあります。 これは、最も一般的なHFTで発生します。 取引システムだけでなく取引戦略自体にもバグがあり、バックテストでは表示されないがライブ取引では表示されることがある。 取引戦略を導入した後に、市場の体制が変化した可能性があります。 新しい規制環境、投資家心理の変化、マクロ経済現象はすべて、市場の動き、ひいてはお客様の戦略の収益性に乖離をもたらす可能性があります。
Risk Management
定量取引のパズルの最後のピースは、リスク管理のプロセスです。 「リスク」には、これまで説明したすべてのバイアスが含まれます。 それは、取引所に併設されたサーバーが突然ハードディスクの故障を発症するような技術的なリスクも含みます。 ブローカーが倒産するなどのブローカー・リスクも含まれます(最近のMF Globalの騒動を考えれば、それほどおかしな話ではないでしょう!)。 要するに、取引に支障をきたす可能性のあるものはほぼすべて網羅されており、その情報源は数多く存在するのだ。 定量的戦略のリスク管理については、一冊の本がまるまる費やされているので、ここで起こりうるすべてのリスク要因について解明しようとは思いません。 これは、資本が一連の異なる戦略およびそれらの戦略内の取引に割り当てられる手段です。 これは複雑な分野であり、自明ではない数学に依存している。 最適な資本配分と戦略のレバレッジが関係する業界標準は、ケリー基準と呼ばれています。 これは入門記事であるため、その計算については触れない。 ケリー基準は、リターンの統計的性質についていくつかの仮定を置いていますが、金融市場ではそれが当てはまらないことが多いため、トレーダーはその実施に関して保守的になりがちです。
リスク管理のもう一つの重要な要素は、自分自身の心理的プロファイルに対処することです。 トレーディングに忍び込む可能性のある認知バイアスは数多く存在します。 しかし、アルゴリズム取引では、戦略を放置しておけば、この問題はあまり生じません。 よくあるバイアスは損失回避で、損失を認識するのが苦痛なため、負けたポジションを決済しないことです。 同様に、すでに得た利益を失うことへの恐怖が大きすぎるため、利益を早く出しすぎることがあります。 もう一つの一般的なバイアスは、再帰性バイアスと呼ばれるものです。 これは、トレーダーが最近の出来事を重視しすぎて、長期的な視点が欠けている場合に生じます。 そしてもちろん、恐怖と貪欲という典型的な感情的バイアスがあります。 これらはしばしば過小または過大なレバレッジにつながり、爆発 (すなわち、口座の資本がゼロまたはそれ以上になること!) または利益の減少を引き起こす可能性があります。 この記事では、このトピックの表面を文字通り引っ掻いただけですが、すでにかなり長くなっています。 私がほんの一、二文しか書いていないような問題については、本や論文が丸ごと一冊書かれているのです。 そのため、クオンツファンドトレードの仕事に応募する前に、相当な量の下調べをする必要があります。 少なくとも、統計学と計量経済学の広範なバックグラウンドと、MATLAB、Python、R などのプログラミング言語による実装の多くの経験が必要です。高い周波数帯のより高度な戦略では、Linux カーネルの改造、C/C++、アセンブリプログラミング、ネットワークの遅延最適化がスキルセットに含まれると思われます。 私の希望としては、データ取得、ストラテジーバックテスター、実行システムの多くをできるだけ自分で構築することです。 もし自分の資金が危険にさらされているのなら、自 分のシステムを完全にテストし、その落とし穴や特定の問題 を認識していれば、夜もよく眠れるのではないでしょうか? これを業者に委託すると、短期的には時間を節約できる可能性がありますが、長期的には非常に高くつく可能性があります
。