この本の目的は、ML が実践的かつ包括的な方法でアルゴリズム取引戦略にどのように価値を付加できるかを示すことです。線形回帰から深層強化学習まで幅広い ML 手法をカバーし、モデル予測に基づく取引戦略を構築、バックテスト、評価する方法を示します。
23 章と付録からなる4 部構成で、 800 ページ以上にわたって説明されています。
このリポジトリには、この本で説明されている概念、アルゴリズム、使用例を実践する150 を超えるノートブックが含まれています。彼らは、次のことを示す多数の例を提供しています。
本を読みながらノートを確認することを強くお勧めします。これらは通常、実行状態にあり、スペースの制約により含まれていない追加情報が含まれることがよくあります。
このリポジトリの情報に加えて、この本の Web サイトには章の概要と追加情報が含まれています。
読者が本の内容やコード例、独自の戦略の開発と実装、業界の発展について簡単に質問できるように、オンライン プラットフォームをホストしています。
コミュニティに参加して、取引戦略に ML を活用することに興味のあるトレーダー仲間とつながり、経験を共有し、お互いに学びましょう。
何よりもまず、この本では、さまざまなデータ ソースからシグナルを抽出し、さまざまな教師あり、教師なし、強化学習アルゴリズムを使用して、さまざまな資産クラスの取引戦略を設計する方法を説明します。また、アルゴリズムの調整や結果の解釈を容易にするために、関連する数学的および統計的知識も提供します。さらに、市場データやファンダメンタルデータの操作、有益な特徴の抽出、取引戦略のパフォーマンスの管理に役立つ財務背景もカバーしています。
実践的な観点から、第 2 版は、独自の ML ベースの取引戦略を開発するための概念的な理解とツールを身につけることを目的としています。この目的を達成するために、ML をスタンドアロンの演習ではなくプロセスの重要な要素としてフレーム化し、データ ソーシング、特徴量エンジニアリング、モデルの最適化から戦略設計とバックテストに至る取引ワークフローにエンドツーエンドの ML を導入します。
具体的には、ML4T ワークフローは、明確に定義された投資ユニバースのアイデアを生成し、関連データを収集し、有益な特徴を抽出することから始まります。また、予測タスクに適した ML モデルの設計、調整、評価も含まれます。最後に、モデルの予測シグナルに基づいて動作する取引戦略を開発し、バックテスト エンジンを使用して履歴データに基づいてパフォーマンスをシミュレートおよび評価する必要があります。実際の市場でアルゴリズム戦略を実行すると決めたら、新しい情報と変化する環境を組み込むためにこのワークフローを繰り返し繰り返すことになります。
第 2 版では ML4t ワークフローに重点が置かれており、戦略バックテストに関する新しい章、100 を超える異なるアルファ要素を説明する新しい付録、および多くの新しい実用的なアプリケーションが追加されています。また、わかりやすく、読みやすくするために、既存のコンテンツのほとんどを書き直しました。
取引アプリケーションは現在、毎日の米国株式価格を超えて、国際株式や ETF を含む、より広範囲のデータ ソースを使用しています。また、分単位の株式データを使用した日中戦略に ML を使用する方法も示します。さらに、代替データソースの対象範囲を拡張し、センチメント分析や利益予測のための SEC 提出書類や、土地利用を分類するための衛星画像を含めます。
第 2 版のもう 1 つの革新は、最近トップジャーナルに掲載されたいくつかの取引アプリケーションを複製したことです。
現在、すべてのアプリケーションは、pandas 1.0 や TensorFlow 2.2 など、利用可能な最新 (執筆時点) のソフトウェア バージョンを使用しています。取引戦略を設計するときに機械学習モデルの予測を簡単に含めることができる、Zipline のカスタマイズされたバージョンもあります。
コード例は、データ サイエンスおよび金融ドメインの幅広い Python ライブラリに依存しています。
バージョンの競合が発生する可能性が高まるため、すべてのライブラリを一度にインストールする必要はありません。代わりに、特定の章に必要なライブラリを途中でインストールすることをお勧めします。
2022 年 3 月の更新:
zipline-reloaded
、pyfolio-reloaded
、alphalens-reloaded
、およびempyrical-reloaded
がconda-forge
チャネルで利用できるようになりました。チャネルml4t
には古いバージョンのみが含まれており、間もなく削除されます。
2021 年 4 月の更新: Zipline の更新により、Docker を使用する必要がなくなりました。インストール手順では、ノートブックの実行を簡素化する OS 固有の環境ファイルについて言及するようになりました。
2021 年 2 月の更新: コード サンプル リリース 2.0 は、Docker イメージによって提供される conda 環境を Python 3.8、Pandas 1.2、TensorFlow 1.2 などに更新します。 Zipline バックテスト環境では Python 3.6 が使用されるようになりました。
conda
環境をセットアップし、必要に応じてノートブックで使用されるパッケージをマシンに直接インストールするための構成ファイルも含まれています (システムによっては、さらに努力する準備ができています)。環境のインストール、データのダウンロード、コードの実行で問題が発生した場合は、リポジトリ (ここ) でGitHub の問題を提起してください。 GitHub の問題の処理については、ここで説明されています。
更新: 本書で使用されているalgoseekデータはここからダウンロードできます。前処理の手順については第 2 章を、勾配ブースティング モデルを使用した日中の例については第 12 章を参照してください。
更新: Figure ディレクトリには、この本で使用されている図表のカラー バージョンが含まれています。
この本は 4 つのパートで構成されており、市場の調達と連携、基本的および代替データの調達、取引コンテキストにおけるさまざまな予測タスクに対する ML ソリューションの開発、および生成される予測シグナルに依存する取引戦略の設計と評価の際に生じるさまざまな課題に対処します。 ML モデル。
各章のディレクトリには、内容、コード例、追加リソースに関する追加情報を含む README が含まれています。
パート 1: データから戦略開発まで
パート 2: 取引のための機械学習: 基礎
パート 3: 取引のための自然言語処理
パート 4: 深層学習と強化学習
最初の部分では、機械学習 (ML) によって駆動される取引戦略を開発するためのフレームワークを提供します。本書で説明する ML アルゴリズムと戦略を強化するデータに焦点を当て、ML モデルに適した機能を設計および評価する方法、取引戦略を実行しながらポートフォリオのパフォーマンスを管理および測定する方法について概説します。
この章では、投資業界における競争上の優位性の源として ML の出現につながった業界のトレンドについて説明します。また、アルゴリズム取引戦略を可能にするために、ML が投資プロセスのどこに適合するかについても見ていきます。
より具体的には、次のトピックについて説明します。
この章では、市場データとファンダメンタルデータの操作方法を示し、それらが反映する環境の重要な側面について説明します。たとえば、さまざまな注文タイプと取引インフラストラクチャに精通していることは、データの解釈だけでなく、バックテスト シミュレーションを正しく設計するためにも重要です。また、Python を使用して取引データや財務諸表データにアクセスし、操作する方法も説明します。
実用的な例では、後で ML ベースの日中戦略に使用する需要と供給のダイナミクスをキャプチャする豊富な属性セットを備えた、NASDAQ ティック データと Algoseek 分足データからの取引データを操作する方法を示します。また、さまざまなデータ プロバイダー API や SEC から財務諸表情報を入手する方法についても説明します。
この章では特に次の内容について説明します。この章では、代替データのカテゴリーとユースケースの概要を説明し、爆発的に増加するソースとプロバイダーを評価する基準を説明し、現在の市場状況を要約します。
また、本の第 3 部では、自然言語処理 (NLP) やセンチメント分析アルゴリズムで使用する決算報告の記録を収集するなど、Web サイトをスクレイピングして代替データ セットを作成する方法も説明します。
より具体的には、この章では次の内容について説明します。
すでに ML に精通している場合は、特徴量エンジニアリングが予測を成功させるための重要な要素であることをご存知でしょう。それは少なくともトレーディング分野では重要であり、学術研究者や業界研究者は何十年にもわたって、何が資産市場と価格を動かすのか、どの特徴が価格変動の説明や予測に役立つのかを調査してきました。
この章では、アルファ要素を独自に探求する出発点として、この研究の重要なポイントを概説します。また、アルファ係数を計算およびテストするための重要なツールも紹介し、NumPy、pandas、TA-Lib ライブラリがどのようにデータの操作を容易にし、データのノイズを低減するのに役立つウェーブレットやカルマン フィルターなどの一般的な平滑化技術をどのように提示するかを強調します。これを読むと、次のことがわかります。
アルファファクターは、アルゴリズム戦略が取引に変換されるシグナルを生成し、その結果、ロングポジションとショートポジションが生成されます。結果として得られるポートフォリオのリターンとリスクによって、戦略が投資目的を満たしているかどうかが決まります。
ポートフォリオを最適化するには、いくつかのアプローチがあります。これらには、資産間の階層関係を学習し、ポートフォリオのリスク プロファイルを設計する際にそれらを補完または代替として扱うための機械学習 (ML) のアプリケーションが含まれます。この章では以下について説明します。
2 番目の部分では、基本的な教師あり学習アルゴリズムと教師なし学習アルゴリズムを取り上げ、それらの取引戦略への応用を説明します。また、本書で開発されたデータと ML テクニックを活用および組み合わせて、ライブ マーケットで取引を実行するアルゴリズム戦略を実装できる Quantopian プラットフォームも紹介します。
この章はパート 2 の始まりで、さまざまな教師ありおよび教師なし ML モデルを取引に使用する方法を説明します。さまざまな Python ライブラリを使用して関連するアプリケーションをデモンストレーションする前に、各モデルの前提条件とユースケースについて説明します。
これらのモデルとそのアプリケーションの多くには共通する側面がいくつかあります。この章では、次の章でモデル固有の使用法に焦点を当てることができるように、これらの一般的な側面について説明します。体系的なワークフローとして ML モデルの予測パフォーマンスを定式化、トレーニング、調整、評価する方法の概要を説明することで、準備を整えます。内容には次のものが含まれます。
線形モデルは、回帰および分類コンテキストでの推論と予測のための標準ツールです。広く使用されている多くの資産価格モデルは線形回帰に依存しています。 Ridge 回帰や Lasso 回帰などの正規化モデルは、過学習のリスクを制限することで、より適切な予測をもたらすことがよくあります。一般的な回帰アプリケーションは、資産の収益を促進するリスク要因を特定して、リスクの管理や収益の予測を行います。一方、分類問題には方向性のある価格予測が含まれます。
第 07 章では次のトピックについて説明します。
この章では、ML アルゴリズムによる取引戦略の設計、シミュレーション、評価に関するエンドツーエンドの視点を示します。 Python ライブラリのバックトレーダーと Zipline を使用して、過去の市場コンテキストで ML 主導の戦略をバックテストする方法を詳しく説明します。 ML4T ワークフローの最終的な目的は、候補戦略を実際の市場に展開して資金をリスクにさらすかどうかを決定するのに役立つ履歴データから証拠を収集することです。戦略の現実的なシミュレーションでは、証券市場がどのように運営され、どのように取引が実行されるかを忠実に表現する必要があります。また、不適切な投資決定につながる偏った結果や誤った発見を避けるために、いくつかの方法論的な側面に注意が必要です。
具体的には、この章を読み進めると、次のことができるようになります。
この章では、時系列の履歴からシグナルを抽出して同じ時系列の将来の値を予測するモデルに焦点を当てます。時系列モデルは、取引に固有の時間次元のため広く使用されています。定常性などの時系列特性を診断し、潜在的に有用なパターンを捕捉する特徴を抽出するツールを提供します。また、マクロ データとボラティリティ パターンを予測するための単変量および多変量時系列モデルも導入されています。最後に、共積分が時系列全体にわたる共通の傾向を特定する方法を説明し、この重要な概念に基づいてペア取引戦略を開発する方法を示します。
特に、以下の内容がカバーされます。
ベイズ統計を使用すると、将来の出来事に関する不確実性を定量化し、新しい情報が到着したときに原則に基づいた方法で推定値を精緻化することができます。このダイナミックなアプローチは、金融市場の進化する性質にうまく適応します。 ML へのベイジアン アプローチにより、統計指標、パラメーター推定、予測に関する不確実性に対する新たな洞察が可能になります。アプリケーションは、より詳細なリスク管理から、市場環境の変化を組み込んだ予測モデルの動的な更新まで多岐にわたります。
より具体的には、この章では次の内容について説明します。
この章では、デシジョン ツリーとランダム フォレストを取引に適用します。デシジョン ツリーは、非線形の入出力関係をエンコードするデータからルールを学習します。デシジョン ツリーをトレーニングして回帰問題と分類問題を予測し、モデルによって学習されたルールを視覚化して解釈し、モデルのハイパーパラメーターを調整してバイアスと分散のトレードオフを最適化し、過学習を防ぐ方法を示します。
この章の第 2 部では、複数のデシジョン ツリーをランダム化された方法で組み合わせて、より誤差の少ない単一の予測を生成するアンサンブル モデルを紹介します。最後に、ランダム フォレスト モデルによって生成された取引シグナルに基づいた日本株のロングショート戦略を示します。
つまり、この章の内容は次のとおりです。
勾配ブースティングは、代替のツリーベースのアンサンブル アルゴリズムであり、多くの場合、ランダム フォレストよりも優れた結果が得られます。重要な違いは、ブースティングでは、モデルによって生じた累積誤差に基づいて各ツリーのトレーニングに使用されるデータが変更されることです。ランダム フォレストはデータのランダムなサブセットを使用して多くのツリーを独立してトレーニングしますが、ブースティングは順番に進行し、データの重み付けを変更します。この章では、最先端のライブラリがどのように優れたパフォーマンスを達成し、日次データと高頻度データの両方にブースティングを適用して日中取引戦略をバックテストするかを説明します。
より具体的には、次のトピックについて説明します。
次元削減とクラスタリングは、教師なし学習の主なタスクです。
より具体的には、この章では次の内容について説明します。
テキスト データは内容が豊富ですが、形式が構造化されていないため、機械学習アルゴリズムが潜在的な信号を抽出できるようにするために、より多くの前処理が必要です。重要な課題は、テキストをアルゴリズムで使用できる数値形式に変換すると同時に、コンテンツのセマンティクスや意味を表現することで構成されます。
次の 3 章では、人間が容易に理解できる言語のニュアンスを捉えて、機械学習アルゴリズムでも解釈できるようにするいくつかのテクニックについて説明します。
テキスト データは内容が非常に豊富ですが、構造化されていないため、ML アルゴリズムが関連情報を抽出できるようにするには、より多くの前処理が必要になります。重要な課題は、テキストの意味を失わずにテキストを数値形式に変換することです。この章では、テキスト分類とセンチメント分析の入力として機能するドキュメント用語マトリックスを作成することにより、ドキュメントをトークン数のベクトルとして表現する方法を説明します。また、Naive Bayes アルゴリズムも導入し、そのパフォーマンスを線形モデルおよびツリーベースのモデルと比較します。
この章では特に、以下について説明します。
この章では、教師なし学習を使用して潜在トピックをモデル化し、文書から隠れたテーマを抽出します。これらのテーマは、財務レポートの大規模なコーパスに対する詳細な洞察を生成できます。トピック モデルは、洗練された解釈可能なテキスト機能の作成を自動化し、これにより広範なテキストのコレクションから取引シグナルを抽出するのに役立ちます。これらにより、ドキュメントのレビューが高速化され、類似したドキュメントのクラスタリングが可能になり、予測モデリングに役立つ注釈が生成されます。アプリケーションには、企業開示、決算報告書や契約書の重要なテーマの特定、感情分析や関連資産の収益の使用に基づく注釈などが含まれます。
より具体的には、以下の内容がカバーされます。
この章では、ニューラル ネットワークを使用して、単語や段落などの個々の意味単位のベクトル表現を学習します。これらのベクトルは、バッグ オブ ワード モデルの高次元の疎なベクトルと比較して、数百の実数値エントリを含む高密度です。結果として、これらのベクトルは、連続ベクトル空間に各意味単位を埋め込むか、または配置します。
埋め込みは、トークンをそのコンテキストに関連付けるモデルをトレーニングすることで得られ、同様の使用法は同様のベクトルを意味するという利点があります。その結果、相対的な位置を通じて単語間の関係などの意味論的な側面がエンコードされます。これらは強力な機能であり、次の章で深層学習モデルで使用します。
より具体的には、この章では次のことについて説明します。
パート 4 では、アルゴリズム取引にディープラーニングを活用する方法を説明し、実演します。非構造化データのパターンを識別する深層学習アルゴリズムの強力な機能により、画像やテキストなどの代替データに特に適しています。
サンプル アプリケーションでは、テキスト データと価格データを組み合わせて SEC 提出書類から予想外の収益を予測する方法、合成時系列を生成してトレーニング データの量を拡大する方法、深層強化学習を使用して取引エージェントをトレーニングする方法などが示されています。これらのアプリケーションのいくつかは、トップジャーナルで最近発表された研究を再現しています。
この章では、フィードフォワード ニューラル ネットワーク (NN) について説明し、過学習のリスクを管理しながらバックプロパゲーションを使用して大規模なモデルを効率的にトレーニングする方法を示します。また、TensorFlow 2.0 と PyTorch の使用方法、および NN アーキテクチャを最適化して取引シグナルを生成する方法も示します。次の章では、この基盤に基づいて、代替データに焦点を当てて、さまざまなアーキテクチャをさまざまな投資アプリケーションに適用します。これらには、時系列や自然言語などのシーケンシャル データに合わせて調整されたリカレント NN と、特に画像データに適した畳み込み NN が含まれます。また、敵対的生成ネットワーク (GAN) を使用して合成データを作成する方法など、教師なし深層学習についても説明します。さらに、環境から対話的に学習するエージェントを訓練するための強化学習についても説明します。
この章では特に、次の内容について説明します。
CNN アーキテクチャは進化し続けています。この章では、成功するアプリケーションに共通する構成要素について説明し、転移学習で学習を高速化する方法、およびオブジェクト検出に CNN を使用する方法を示します。 CNN は画像または時系列データから取引シグナルを生成できます。衛星データは、農地、鉱山、輸送ネットワークの航空画像を通じて商品の傾向を予測できます。カメラ映像は消費者の活動を予測するのに役立ちます。衛星画像内の経済活動を分類する CNN を構築する方法を示します。 CNN は、画像との構造的類似性を利用することで高品質の時系列分類結果を提供することもでき、画像と同様にフォーマットされた時系列データに基づいて戦略を設計します。
より具体的には、この章では次の内容について説明します。
Recurrent Neural Networks(RNNS)は、各出力を以前の出力と新しいデータの関数として計算し、より深い計算グラフでパラメーターを共有するメモリを使用してモデルを効果的に作成します。顕著なアーキテクチャには、長期依存性の学習の課題に対処する長期記憶(LSTM)とゲート再発ユニット(GRU)が含まれます。 RNNは、1つ以上の入力シーケンスを1つ以上の出力シーケンスにマッピングするように設計されており、特に自然言語に適しています。また、市場または基本的なデータを予測するために、単変量および多変量の時系列に適用することもできます。この章では、RNNが第16章でカバーした単語埋め込みを使用して、文書で表現された感情を分類する方法を使用して、代替テキストデータをモデル化する方法について説明します。
より具体的には、この章では次のことです。
この章では、取引のために監視されていない深い学習を活用する方法を示しています。また、自動エンコーダー、つまり、隠れ層のパラメーターによってエンコードされた新しい表現を学習しながら、入力を再現するように訓練されたニューラルネットワークについて説明します。自動エンコーダーは、非線形の寸法削減に長い間使用されており、過去3つの章でカバーしたNNアーキテクチャを活用しています。自動エンコーダーが取引戦略を支える方法を示す最近のAQRペーパーを再現します。自動エンコーダーに依存する深いニューラルネットワークを使用して、リスク要因を抽出し、株式属性の範囲を条件付けした株式リターンを予測します。
より具体的には、この章では、次のことを学びます。
この章では、生成的敵対的ネットワーク(GAN)を紹介します。 GANSは、発電機と差別装置ネットワークを競争力のある設定でトレーニングして、発電機が特定のクラスのトレーニングデータと区別できないサンプルを生成することを学ぶようにします。目標は、このクラスを代表する合成サンプルを生成できる生成モデルを生成することです。画像データに最も人気がありますが、GANは医療ドメインで合成時系列データを生成するためにも使用されています。 GANSがMLトレーニングまたは戦略のバックテストに役立つ代替価格軌道を作成できるかどうかを、財務データを使用したその後の実験が調査されました。 2019年のニューリップスの時系列ガンペーパーを複製して、アプローチを説明し、結果を示します。
より具体的には、この章では、次のことを学びます。
強化学習(RL)は、確率的環境と相互作用するエージェントによる目標指向学習をモデル化します。 RLは、報酬信号から州の価値とアクションを学習することにより、長期的な目的に関するエージェントの決定を最適化します。究極の目標は、行動ルールをエンコードし、状態をアクションにマップするポリシーを導き出すことです。この章では、RLの問題を策定して解決する方法を示します。モデルベースとモデルのない方法をカバーし、Openaiジム環境を導入し、深い学習をRLと組み合わせて、複雑な環境をナビゲートするエージェントを訓練します。最後に、客観的な関数を最適化しようとしながら金融市場と対話するエージェントをモデル化することにより、RLをアルゴリズム取引に適応させる方法を示します。
より具体的には、この章ではについて説明します。
この最後の章では、詳細の後に全体像を見失うことを避けるために、本全体で学んだ必須のツール、アプリケーション、および教訓を簡単に要約します。その後、カバーしていない領域を特定しますが、紹介した多くの機械学習技術を拡張し、毎日の使用で生産的になる際に焦点を当てる価値があります。
要するに、この章では、そうします
この本を通して、適切な前処理や除去など、機能のスマートなデザインが通常、効果的な戦略につながる方法を強調しました。この付録は、機能エンジニアリングで学んだ教訓の一部を統合し、この重要なトピックに関する追加情報を提供します。
この目的のために、TA-LIB(第4章を参照)とWorldQuantの101の定型アルファペーパー(Kakushadze 2016)によって実装される幅広い指標に焦点を当てています。 0.6-6.4日。
この章では: