ヘッジファンドのディープラーニングトレーディング入門

公開: 2022-03-11

過去数年間で、ディープニューラルネットワークは非常に人気があります。 コンピュータサイエンスのこの新しい分野は、生物学的ニューラルネットワークの概念を中心に作成され、ディープラーニングは今日の流行語のようなものになっています。

深層学習の科学者やエンジニアは、生物学的神経系のさまざまなパターンを数学的に記述しようとします。 ディープラーニングシステムは、コンピュータービジョン、音声認識、自然言語処理、機械翻訳など、さまざまな問題に適用されてきました。 一部のタスクで、ディープラーニングが人間の専門家を上回っていることは興味深くエキサイティングです。 今日は、金融セクターでのディープラーニングについて見ていきます。

ディープラーニングのより魅力的なアプリケーションの1つは、ヘッジファンドです。 ヘッジファンドは投資ファンドであり、投資家から資金を調達して管理する金融機関です。 それらは通常、時系列データを処理し、いくつかの予測を行おうとします。 時系列分析に適した特殊なタイプの深層学習アーキテクチャがあります。リカレントニューラルネットワーク(RNN)、またはさらに具体的には、特殊なタイプのリカレントニューラルネットワーク:長短期記憶(LSTM)ネットワークです。

LSTMは、時系列データから最も重要な機能をキャプチャし、その依存関係をモデル化することができます。 株価予測モデルは、ヘッジファンドがそのようなシステムをどのように使用できるかについての実例となるケーススタディとして提示されています。 Pythonで記述されたPyTorchフレームワークは、モデルのトレーニング、実験計画、および結果の描画に使用されます。

実際の例に進む前に、いくつかのディープラーニングの基本から始めます。

  • 抽象概念としてディープラーニングを導入します。
  • RNN(より具体的にはLSTM)と、それらを使用して時系列データをモデル化する方法を紹介します。
  • ディープラーニングに適した財務データを読者によく理解してください。
  • 1つの実際のヘッジファンドがディープラーニングを使用して株式価格を予測する方法を説明します。
  • 最後に、ディープラーニングを使用/活用してパフォーマンスを向上させる方法について、新規および既存のヘッジファンドに実用的な推奨事項を提供します。

ディープラーニングトレーディングの事例を提示する

金融業界で最も挑戦的でエキサイティングなタスクの1つは、株価が将来上昇するか下降するかを予測することです。 今日、深層学習アルゴリズムは複雑なタスクの解決に非常に優れていることを認識しているため、深層学習システムを試して、将来の価格予測の問題をうまく解決できるかどうかを確認する価値があります。

概念として、人工ニューラルネットワークは長い間存在していましたが、ハードウェアは深層学習での高速実験を可能にするのに十分ではありませんでした。 Nvidiaは、Teslaシリーズ製品の汎用コンピューティング用の非常に高速なグラフィックスプロセッシングユニット(GPU)の提供を開始したため、10年前にディープラーニングネットワークに革命をもたらしました。 ゲームやプロのデザインアプリケーションでポリゴンをシェーディングする代わりに、高度に並列化されたGPUは他のデータも計算でき、多くの場合、CPUよりもはるかに優れています。

金融でディープラーニングを使用することについての科学論文はほとんどありませんが、フィンテック企業からのディープラーニングの専門家に対する需要は強く、彼らはその可能性を明らかに認識しています。 この記事では、ディープラーニングシステムの構築に財務データがどのように使用されるかを概説することで、金融におけるディープラーニングがますます普及している理由を説明します。 特殊なタイプのリカレントニューラルネットワークであるLSTMネットワークも紹介されます。 リカレントニューラルネットワークを使用して財務関連のタスクを解決する方法の概要を説明します。

この記事では、実験を通じて提示された、ヘッジファンドがそのようなシステムをどのように使用できるかについての実例となるケーススタディも取り上げています。 また、ディープラーニングシステムをどのように改善できるか、ヘッジファンドがそれらのシステムを構築するために人材を採用する方法、つまり、ディープラーニングの人材がどのような背景を持つ必要があるかについても検討します。

ヘッジファンドの違い

問題の技術的側面に進む前に、ヘッジファンドがユニークである理由を説明する必要があります。 では、ヘッジファンドとは何ですか?

ヘッジファンドは投資ファンドであり、投資家から資金を調達し、短期および長期の投資、あるいはさまざまな金融商品に投資する金融機関です。 それは通常、有限責任会社または有限責任会社として形成されます。 ヘッジファンドの目標は、リターンを最大化することです。 リターンとは、特定の期間におけるヘッジファンドの純資産の増減です。 より多くのリスクが取られると、より高いリターンと損失の可能性が高くなることが一般的に認められています。

良好なリターンを達成するために、ヘッジファンドはさまざまなタイプの投資戦略に依存し、市場の非効率性を利用して収益を上げようとします。 通常の投資ファンドでは認められていない様々な種類の投資戦略のため、ヘッジファンドはファンドとして登録されていません。つまり、通常、他のファンドのように国の監督下にありません。 彼らは投資戦略や業績を公表する必要がないため、非常にリスクが高くなる可能性があります。 一部のヘッジファンドは市場平均よりも多くのお金を生み出しますが、一部はお金を失います。 それらのいくつかは永続的な結果をもたらしますが、ヘッジファンドの結果のいくつかは変動します。

ヘッジファンドに投資することにより、投資家はファンドの純資産を増やします。 しかし、誰もがヘッジファンドに投資できるわけではありません。 ヘッジファンドは、少数の裕福な投資家を対象としています。 通常、ヘッジファンドに参加したい人は認定を受ける必要があります。 それは彼らが金融規制法に関して特別な地位を持たなければならないことを意味します。 誰がその特別な地位を持つことができるかに関して、国ごとに違いがあります。 通常、投資家の純資産は非常に高い必要があります。個人だけでなく、銀行や大企業もヘッジファンドで運用できます。 この認定は、投資に関する重要な知識を持つ個人のみが参加できるように設計されているため、小規模で経験の浅い投資家をリスクから保護します。

米国は世界で最も発展した金融市場を持っているため、この記事では米国の規制の枠組みについて考察します。 したがって、アメリカ合衆国では、「認定投資家」という用語は、米国証券取引委員会(SEC)のレギュレーションDのルール501で定義されています。

この規制によると、認定投資家は次のようになります。

  • 銀行
  • 民間事業開発会社
  • 組織
  • 提供または売却される証券の発行者の取締役、執行役員、およびゼネラルパートナー
  • 個人の純資産、またはその人の配偶者との共同純資産が1,000,000ドルを超える自然人
  • 直近2年間のそれぞれで20万ドルを超える個人所得、またはその配偶者との共同所得がそれぞれの年で30万ドルを超え、今年も同じ所得水準に達することが合理的に期待できる自然人
  • 総資産が5,000,000ドルを超える信託
  • すべてのエクイティ所有者が認定投資家である事業体

ヘッジファンドマネージャーはヘッジファンドを管理します。 ヘッジファンドマネージャーは、成功するために競争上の優位性を生み出す方法、つまり、ライバルよりも優位性を生み出し、より大きな価値を生み出す能力を生み出す方法を見つけなければなりません。 個人がファンドの管理に優れている場合、それは非常に有益である可能性があるため、それは非常に魅力的なキャリアの選択になる可能性があります。

反対に、多くのヘッジファンドマネージャーの決定が悪いことが判明した場合、それらは支払われず、否定的な評判を得るでしょう。 最高のヘッジファンドマネージャーは、すべての業界で最高の有給の職業の1つを構成しています。 ヘッジファンドマネージャーは、運用報酬に加えて、投資家のために得たリターンの一定の割合を受け取ります。 この補償方法により、ヘッジファンドマネージャーはより大きなリターンを得るためにより積極的に投資するようになりますが、一方で、それは投資家のリスクの増加にもつながります。

ヘッジファンドの簡単な歴史

最初のヘッジファンドは1949年に登場し、元作家で社会学者のアルフレッドウィンスロージョーンズによって設立されました。 彼が1948年にフォーチュンの現在の投資動向についての記事を書いていたときでした。

彼はお金を管理しようとし、非常に成功しました。 彼は、現在ロング/ショートエクイティとして広く知られている投資イノベーションを使用して資金を調達しました。 この戦略は依然としてヘッジファンドの間で非常に人気があります。 株式は購入(購入:ロング)または売却(販売:ショート)することができます。

株の価格が低く、株の価格が高くなることが予想される場合、高値のピークに達したらすぐに株を買い(ロング)、売り(ショート)するのが論理的です。これはまさに、アルフレッドウィンスロージョーンズが行ったイノベーションのポイントです。上昇すると予想される株式でロングポジションを取り、下落すると予想される株式でショートポジションを取ります。

財務データとデータセット

財務データは時系列データに属します。 時系列は、時間でインデックス付けされた一連のデータポイントです。 通常、時系列は、連続する等間隔の時点で取得されるシーケンス、つまり離散時間データのシーケンスです。 時系列の例は、海の潮の高さ、黒点の数、およびダウジョーンズ工業株30種平均の毎日の終値です。

このコンテキストでの履歴データは、過去の時系列データです。 これは、将来の価格について推測するための最も重要で最も価値のある部分の1つです。 オンラインで公開されているデータセットがいくつかありますが、通常、そのデータには多くの機能が含まれていません。通常、1日間隔のデータ、1時間間隔のデータ、または1分間隔のデータです。

より豊富な機能とより短い時間間隔のデータセットは、通常、公開されておらず、取得するのに非常に費用がかかる可能性があります。 間隔が短いほど、一定期間の時系列データが多くなります。1年間で365(または366)日あるため、最大365(または366)のデータポイントを使用できます。 1日は24時間であるため、1年間で8,760(または8,784)時間のデータポイントが利用可能であり、毎日86,400分であるため、1年間で525,600(または527,040)分のデータポイントが利用可能です。

より多くのデータがあれば、より多くの情報が利用可能になり、より多くの情報があれば、次の期間に何が起こるかについてより良い結論を出すことができます。もちろん、データが十分に一般化するのに十分な機能で構成されていると仮定します。 世界的な金融危機の真っ只中にある2007年から2008年までの株価データは偏っており、最近の価格予測にはおそらく関係がありません。 時間間隔を短くすると、一定の間隔に多数のデータポイントがあるため、次に何が起こるかを予測しやすくなります。 一定のn年間隔でナノ秒ごとにすべてのデータポイントがある場合、次のナノ秒で何が起こるかを予測する方が、毎年n個すべてのデータポイントがある場合に来年の株式市場で起こることよりも簡単です。固定されたn年間隔。

ただし、それは、短期的な一連の迅速な予測が正しいと仮定すると、長期的な予測も正しいはずであることを意味するものではありません。 各予測はエラーを引き起こし、複数の予測を連鎖させることにより、長期予測には最終的にかなりの量のエラーが含まれ、役に立たなくなります。 以下は、YahooFinanceからオンラインで取得されたGoogle株の1日間隔データの例です。

アルゴリズム取引のためのグーグル株に関する時系列の財務データ

データセットには、日付、始値、高値、安値、終値の数列があります。それぞれ、証券が取引所の開始時に最初に取引される価格であり、証券が特定の取引日に達成した最高価格です。 、特定の取引日に達成された最低価格、および証券がその日に取引された最終価格。

通常、このようなデータセットには、調整済みのクローズとボリュームの2つの列がありますが、ここでは関係ありません。 調整済み終値は、該当する分割と配当分配の調整後の終値であり、ボリュームは、特定の期間中に市場で取引された株式の数です。

一部の日付が欠落していることがわかります。 これらは、証券取引所が機能していない日であり、通常は週末と休日です。 ディープラーニングアルゴリズムのデモンストレーションの目的で、不足している日数は以前に利用可能な価格で補足されます。 たとえば、2010-01-16、2010-01-17、2010-01-18の終値は、2010-01-15の値であるため、すべて288.126007になります。 私たちのアルゴリズムにとって重要なのは、データにギャップがないため、混乱しないようにすることです。 深層学習アルゴリズムは、週末と休日がいつであるかをここから学習できます。たとえば、5営業日後、最終営業日から定価の2日が必要であることが学習されます。

一定期間にわたるGoogleの株価変動の視覚的表現

これは2010年1月4日以降のGoogleの株価変動のチャートです。 グラフのプロットには取引日のみが使用されることに注意してください。

ディープラーニングとは何ですか?

ディープラーニングは機械学習の一部であり、データ表現の学習に基づいています。 機械学習は、機能がプログラムされていないがデータから学習されたアルゴリズムを調べます。 それは本質的に人工知能へのアプローチです。

ディープラーニングは、コンピュータービジョン、音声認識、自然言語処理、機械翻訳などのさまざまな分野に適用されており、これらのタスクの一部では、人間よりも優れたパフォーマンスを実現しています。

ディープニューラルネットワークはディープラーニングの中心です。 ディープニューラルネットワークの最も単純で基本的な例は、フィードフォワードニューラルネットワークです。 以下は、単純なフィードフォワードニューラルネットワークの画像です。 これは、入力層と出力層、および非表示層で構成されています。

単純なフィードフォワードニューラルネットワークの図。入力層と出力層、および学習層がノードとして表されています。

非表示レイヤーは、入力レイヤーと出力レイヤーの間のすべてのレイヤーです。 ニューラルネットワークが複数の隠れ層を持っている場合、それは深いと言います。 各層は、さまざまな数のニューロンで構成されています。 この基本的なフィードフォワードニューラルネットワークの層は線形層と呼ばれます。線形層のニューロンは、1-D(またはデータがネットワークを介してバッチで送信される場合は2-D)入力の値に適切な重みを掛け、積を合計し、最終結果を1-Dまたは2-D出力として提供します。

活性化関数は通常、フィードフォワードネットワークに適用されて非線形性を導入し、ネットワークがより複雑な非線形問題をモデル化できるようにします。 フィードフォワードネットワークでは、データはループバックせずに入力層から出力層に流れます。 ニューロン間の接続には重みが付けられます。 ニューラルネットワークが指定された入力に対して正しい出力を返すように、重みを調整する必要があります。 フィードフォワードネットワークは、入力スペースから出力スペースにデータをマッピングします。 非表示のレイヤーは、前のレイヤーの機能から重要でより抽象的な機能を抽出します。

一般的な深層学習パイプラインは機械学習パイプラインと同じであり、次の手順で構成されています。

  1. データ収集。 データは、トレーニングデータ、検証データ、テストデータの3つの部分に分けられます。
  2. いくつかの「エポック」(それぞれが複数の反復で構成される)にわたるトレーニングデータを使用してDNNをトレーニングし、検証データを使用して各エポックの後に検証します。
  3. 一連のトレーニングセッションと検証の後に、モデル(固定パラメーターを持つニューラルネットワークの1つのインスタンス)をテストします。

ニューラルネットワークのトレーニングとは、実際には、確率的勾配降下法と組み合わせたバックプロパゲーションアルゴリズムを使用して損失関数を最小化することにより、ニューロンのペア間の重みを調整することを意味します。 学習プロセスを通じて決定される重みを除いて、深層学習アルゴリズムでは通常、ハイパーパラメーター(学習されないが学習前に固定されるパラメーター)を設定する必要があります。 ハイパーパラメータは、層の数、層内のニューロンの数、層のタイプ、ニューロンのタイプ、および重みの初期化です。

ハイパーパラメータの設定にはハードウェアの制限があります。 現在、単一のGPUに1兆個のニューロンを設定することは物理的に不可能です。 徹底的なハイパーパラメータ検索の2番目の問題は、組み合わせ爆発です。 無限の時間がかかるため、ハイパーパラメータの可能なすべての組み合わせを検索することはできません。 そのため、ハイパーパラメータはランダムに設定されるか、科学論文に記載されているいくつかのヒューリスティックとよく知られた例を使用して設定されます。このブログ投稿で後述する財務データ分析に使用されるハイパーパラメータの1つは、科学者やエンジニアとしての反復ニューロンの使用です。それらが時系列データでうまく機能することを証明しました。 通常、特定の問題のハイパーパラメータが適切かどうかを確認する最良の方法は、実験を行うことです。

トレーニングのポイントは、ニューラルネットワークをトレーニングデータに適合させることです。 各トレーニングステップの後に実行されるモデル検証と、トレーニング手順全体の後に実行されるモデルテストの両方が、モデルが適切に一般化できるかどうかを確認するために実行されます。 一般化とは、ニューラルネットワークが新しい目に見えないデータを適切に予測できることを意味します。

モデルの選択に関連する2つの重要な用語があります:過剰適合適合。 ニューラルネットワークがトレーニング対象のデータに関して複雑すぎる場合(パラメーターが多すぎる場合(レイヤーが多すぎる、および/またはレイヤー内のニューロンが多すぎる場合))、ニューラルネットワークはデータを過剰適合させる可能性があります。 すべてのデータを収めるのに十分な容量があるため、トレーニングデータにうまく適応できますが、検証およびテストセットのパフォーマンスは低くなります。

ニューラルネットワークがトレーニングされたデータに関して単純すぎる場合、ニューラルネットワークはデータを過小評価する可能性があります。 その場合、ニューラルネットワークの容量は、トレーニングデータに適合し、一般化するのに十分ではないため、トレーニング、検証、およびテストセットのパフォーマンスが低下します。 下の画像では、これらの用語がグラフィカルに説明されています。 青い線は、ニューラルネットワークによってモデル化されたものを表しています。 最初の画像は、ニューラルネットワークのパラメーターが少なく、トレーニングデータを適合させて一般化するのに十分でない場合の状況を示しています。 2番目の画像は、最適な数のパラメーターがあり、ニューラルネットワークが見えないデータでうまく一般化できる状況を示しています。3番目の画像は、ニューラルネットワークのパラメーター数が多すぎて、ニューラルネットワークが完全にできる状況を示しています。トレーニングセットのすべてのデータに適合しますが、検証セットとテストセットのパフォーマンスは低くなります。

アンダーフィット、最適、およびオーバーフィットのシナリオのグラフィック表現

リカレントニューラルネットワーク

ニューラルネットワークのより複雑なバージョンは、リカレントニューラルネットワークです。 リカレントニューラルネットワークでは、フィードフォワードニューラルネットワークとは対照的に、データは任意の方向に流れる可能性があります。 彼らは時系列の依存関係をよく学ぶことができます。 一般的なリカレントニューラルネットワークのアーキテクチャを下の画像に示します。

一般的なrnnアーキテクチャのグラフィック表現

下の画像には、1つのリカレントニューロンが示されています。 X_{t} 、時点tを入力として受け取り、時間tの非表示状態でh_{t}を出力として返します。 隠された出力はニューロンに伝播されます。 右側から同じ画像に示されているように、リカレントニューロンを展開できます。 X_{t_0}は期間t_{0}の時点、期間t_{1} }のX_{t_1} 、期間tX_{t}です。 入力X_{t_0}X_{t_1} 、…、 X_{t_n}を期間t_{0}t_{1} 、…、 t_{n}で使用して取得された出力は、いわゆる非表示出力です: h_{t_0}h_{t_1} 、…、 h_{t_n} 、それぞれ。

リカレントニューロンのi/o構造の視覚的図

最高のリカレントニューラルネットワークアーキテクチャの1つは、LSTMアーキテクチャです。 LSTMを以下に示します。

lstmアーキテクチャの視覚化

LSTMは、一般的なリカレントニューラルネットワークと同じ一般的な構造を持っていますが、リカレントニューロンは、より複雑な構造で少し異なります。 上の画像から、1つのLSTMセル内で多くの計算が行われていることがわかります。 LSTMセルは、この投稿のコンテキストではブラックボックスとして観察できますが、より好奇心旺盛な読者のために、このすばらしいブログ投稿では、LSTM内の計算などについて説明しています。

ニューラルネットワークの入力を「特徴ベクトル」と呼びましょう。 これは、要素が特徴であるn次元のベクトルです: f_{0}f_{1}f_{2} …、 f_{n}

 \vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}]

それでは、リカレントニューラルネットワークを財務関連のタスクに適用する方法を説明しましょう。 リカレントニューラルネットワークの入力は、 [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]です。 n = 5としましょう。 たとえば、2010-01-04と2010-01-08の間、つまり[[311.35], [309.98], [302.16], [295.13], [299.06]] 。 この例の特徴ベクトルは1次元です。 時系列は、5つのそのような特徴ベクトルで構成されます。 リカレントニューラルネットワークの出力は、隠れた特徴[h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}]です。 これらの機能は、入力機能よりも抽象的なレベルにあります[X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}] LSTMは、入力機能の重要な部分を学習し、それらをに投影する必要があります。隠された機能スペース。 これらの非表示の抽象的な機能は、次のLSTMセルで伝播できます。これにより、次の非表示のより抽象的な機能のセットが提供され、次のLSTMに再度伝播できます。 連鎖LSTMのシーケンスの後、ニューラルネットワークの最後のコンポーネントは線形層(前のセクションで説明した単純なフィードフォワードネットワークの構築部分)であり、最後のLSTMからの隠れた特徴を1次元空間のポイントにマッピングします。そのポイントは、ネットワークの最終出力、つまり期間X_{t+1}で予測される終値です。 X_{t+1}のこの例のグラウンドトゥルースは、 298.61です。

注: LSTMの数を1つにすることもできます。LSTMの数を設定することはハイパーパラメーターであり、ヒューリスティックを使用することもできますが、一般的に経験的に見られます。 データがそれほど複雑でない場合は、モデルがデータに過剰適合しないように、それほど複雑でないアーキテクチャを使用します。 データが複雑な場合は、複雑なモデルを使用して、モデルがデータに適合しないようにします。

トレーニングフェーズでは、予測された終値がグラウンドトゥルース価格と比較され、予測された終値とグラウンドトゥルース価格の差は、バックプロパゲーションアルゴリズムと最急降下最適化アルゴリズム(またはその形式の1つ-具体的には、これで)を使用して最小化されます。ブログでは、ニューラルネットワークの重みを変更することにより、いわゆる「最急降下法」バージョンの勾配降下最適化アルゴリズムが使用されます。

トレーニングとテストの後、将来的には、ユーザーは入力データをニューラルネットワークに提供するだけで、予測価格(できれば将来のグラウンドトゥルース価格に非常に近い価格)が返されます。

ここでもう1つ言及することは、通常、ネットワークが1回のパスで複数の出力を計算するために、テストフェーズのトレーニングの両方で、データのバッチがネットワークを介して送信されることです。

以下は、このブログで実験に使用されたアーキテクチャの画像です。 これは、2つのスタックされたLSTMと1つの線形層で構成されています。

上記のアーキテクチャの視覚的表現

ヘッジファンドアルゴリズムを使った実験

次のように、単純なアルゴリズム取引戦略を使用してみてください。アルゴリズムが翌日価格が上がると予測する場合は、会社のn株(この例ではn n = 1 )を購入します。それ以外の場合は、会社(短い)。 ポートフォリオの初期価値(現金と株式を合わせた価値)は$100,000に設定されています。 ロングアクションまたはショートアクションごとに、会社のn株(この例ではGoogle)を購入するか、会社のすべての株を売却します。 最初は、システムは特定の会社の0株を所有しています。

これは非常に基本的で単純な例であり、実際にうまく機能するようにモデルを微調整するにはさらに多くの研究開発作業が必要になるため、現実の世界で使用するためのものではないことを常に覚えておいてください。 ここでは、実際のシナリオで考慮すべきいくつかのことを無視しています。 たとえば、取引手数料はモデルに組み込まれていません。 システムは毎日まったく同じ時刻に取引できると想定されており、週末や休日でも毎日が取引日であると想定されています。

テストには、バックテスト方法が使用されます。 バックテスト方法では、履歴データを使用して、開発された戦略で定義されたルールを使用して過去に発生したであろう取引を再構築します。 データセットは2つの部分に分割されます。最初の部分はトレーニングセット(過去)で、2番目の部分はテストセット(将来)です。 モデルはトレーニングセットでトレーニングされ、トレーニング後、データセットの2番目の部分で将来をシミュレートして、トレーニングされたモデルがトレーニングされていない場合に将来どのように動作するかを確認します。

取引戦略を評価するためのメトリックは、シャープレシオです(1年のすべての日が取引日であり、1年が365日であると仮定した場合の年間バージョン: sqrt(365)*mean(returns)/std(returns)) 、ここでリターンはp_{t}/p_{t-1} - 1として定義され、 p_{t}は期間tの価格です。 シャープレシオは、リターンと発生する追加リスクの比率を示しているので、シャープレシオを大きくするとよいでしょう。 通常、投資家は1より大きい比率を受け入れ、2は非常に良好で、3は優れています。

機能として使用されるのは、YahooFinanceデータセットからのGoogleの過去の価格のうちの毎日の終値のみです。 より多くの機能が役立ちますが、データセットの他のどの機能(Open、High、Low)が重要であるかをテストすることはこのブログの範囲外です。 表に含まれていない他のいくつかの機能も役立つ可能性があります。たとえば、特定の分のニュースの感情や特定の日の重要な出来事などです。 ただし、ニューラルネットワーク入力に役立つデータ表現を作成し、それらを既存の機能と組み合わせることが非常に難しい場合があります。 たとえば、特徴ベクトルを拡張して、特定の期間ごとのニュース感情またはトランプのツイート感情を表す数値( -1は非常に否定的、 0は中立、 +1は非常に肯定的など)を付けるのは簡単ですが、そうではありません。特定のイベント駆動型の瞬間(スエズ運河の海賊、テキサスの製油所の爆弾)を特徴ベクトルに入れるのはとても簡単です。なぜなら、特定の瞬間ごとに、特徴ベクトルに1を入れるための追加の要素が必要になるからです。イベントが発生したか、そうでない場合は0になります。これにより、考えられるすべての瞬間に要素の数が無限になります。

そのより難しいデータについては、いくつかのカテゴリを定義し、その瞬間ごとに、それがどのカテゴリに属する​​かを判断できます。 また、他社の株価の相関関係を知るためのシステムに他社株の機能を追加することもできます。 また、コンピュータビジョンに特化したタイプのニューラルネットワーク(畳み込みニューラルネットワーク)があります。これは、反復層と組み合わせて、視覚機能が一部の企業の価格とどのように相関するかを確認するのに役立ちます。 混雑した駅からのカメラのフィードを機能として使用し、そのフィードをニューラルネットワークに接続して、ニューラルネットワークが見るものが一部の企業の株価と相関しているかどうかを確認できるかもしれません。平凡でばかげた例。

以下は、平均トレーニング損失が時間の経過とともにどのように減少しているかを示すグラフです。これは、ニューラルネットワークがトレーニングデータに適合するのに十分な容量を持っていることを意味します。 深層学習アルゴリズムが収束できるように、データを正規化する必要があると言うことが重要です。

時間の経過に伴う平均損失を示す深層学習トレーディンググラフ

以下は、平均テスト損失が時間の経過とともにどのように減少しているかを示すグラフです。これは、ニューラルネットワークが見えないデータを一般化できることを意味します。

時間の経過に伴う平均テスト損失を示す深層学習トレーディンググラフ

アルゴリズムは貪欲です。 翌日価格が上がると予測された場合、アルゴリズムはすぐに会社のn=1株を購入し(ポートフォリオに十分な現金がある場合)、そうでない場合は、会社のすべての株を売却します(ある場合)。 )。 投資期間は固定されており、300日かかります。 300日後、すべての株式が売却されます。 いくつかのトレーニングの後、見えないデータのシミュレーションを以下に示します。 ポートフォリオの価値が、毎日のロング/ショート(または何もしない)アクションによって時間の経過とともにどのように増加しているかが示されています。

見えないデータのシミュレーションを示すディープラーニングの財務グラフ

上記のシミュレーションのシャープレシオは1.48です。 300日後の最終的なポートフォリオの価値は$100,263.79です。 初日に株式を購入し、300日後に売却した場合、ポートフォリオは99,988.41ドルの価値があります。

以下に示すのは、ニューラルネットワークが十分にトレーニングされておらず、300日の一定期間後にお金を失う状況です。

ニューラルネットワークの取引結果

シャープレシオは-0.94です。 300日後の最終的なポートフォリオの価値は99,868.36ドルです。

これは興味深い例の1つです。上記のアルゴリズムは貪欲で、翌日の価格を予測し、その予測のみに基づいてアクションを実行します。 複数の予測を連鎖させ、将来の次の数ステップで価格を予測することが可能です。 たとえば、最初の入力が[X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}]で、最初の出力が[X_predicted_{t5}]の場合、次の入力が[X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}]であり、出力が[X_predicted_{t6}]であるような予測を持つニューラルネットワーク。 そこからの次の入力は、 [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}]であり、 [X_predicted_{t7}]などになります。 ここでの問題は、下の画像に示すように、新しいステップごとに増加し、最終的に非常に悪い長期結果になる予測誤差を導入していることです。 最初の予測は、グラウンドトゥルースの減少傾向に従い、その後停滞し、時間の経過とともに悪化します。

シェア値のグラウンドトゥルースと対照的な累積予測を示すグラフ

Googleの株価について非常に単純な深層学習分析が行われましたが、データの量が十分に多く、質が高い場合は、ほぼすべての財務データのセットを組み込むことができます。 データは識別力があり、問題を適切に記述および表現する必要があります。

まとめ

広範なテストでうまく機能し、一般化された場合、このシステムにより、ヘッジファンドマネージャーは、ディープラーニングを使用し、アルゴリズム取引戦略に依存して、会社の株式の将来の価格について推測することができます。

ヘッジファンドマネージャーは、システムに毎日自動的に取引する金額を与えることができます。 ただし、自動取引アルゴリズムを監視なしで取引させるのは非常に悪いことです。 ヘッジファンドマネージャーは、ディープラーニングのスキルを持っているか、システムを監督し、システムが一般化してうまく取引する能力を失った時期を判断するために必要なスキルを持った人を雇う必要があります。

If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).

Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.

The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.

Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.

参照:

  • https://www.datacamp.com/community/tutorials/finance-python-trading
  • http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • https://en.wikipedia.org
  • https://www.investopedia.com/
  • https://finance.yahoo.com/
  • http://pytorch.org/

Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.