Eitenは、 Eigenポートフォリオ、最小分散ポートフォリオ、最大Sharpe比ポートフォリオ、および遺伝的アルゴリズムベースのポートフォリオなどのさまざまな統計的およびアルゴリズム投資戦略を実装する、Tradyticsによるオープンソースツールキットです。これにより、市場に勝つ可能性のある独自の株式セットで独自のポートフォリオを構築できます。 EITENに含まれる厳密なテストフレームワークを使用すると、ポートフォリオに自信を持つことができます。
これらのツールについて深く話し合い、私たちが取り組んでいるより多くのツールについて話したい場合は、もっと多くのツールがある私たちのDiscordチャンネルにも参加してください。
パス | 説明 |
---|---|
eiten | メインフォルダー。 |
└図 | このgithubリポジトリの数字。 |
stocks株 | ポートフォリオを作成するために使用するストックリストを保持するフォルダー。 |
└戦略 | Pythonで実装された多数の戦略。 |
backtester.py | バックテストとフォワードの両方をすべてのポートフォリオをテストするバックテストモジュール。 |
data_loader.py | Yahoo Financeのデータを読み込むためのモジュール。 |
Portfolio_manager.py | 多くの議論を取り入れ、あなたのためにいくつかのポートフォリオを生成するメインファイル。 |
Simulator.py | 履歴リターンとモンテカルロを使用して、ポートフォリオの将来の価格をシミュレートするシミュレーター。 |
Strategy_manager.py | 「戦略」フォルダーに実装された戦略を管理します。 |
モデルをトレーニングおよびテストするには、次のパッケージをインストールする必要があります。
次のコマンドを使用してすべてのパッケージをインストールできます。スクリプトはPython3を使用して記述されたことに注意してください。
pip install -r requirements.txt
Toolkitで与えられたすべての戦略を使用してポートフォリオを構築する方法を見てみましょう。最初に行う必要があるのは、 Stocks.txtファイルをStocksフォルダーに変更し、選択した在庫を追加することです。 5〜50株の間にリストを小さく保つことをお勧めします。 AAPL、MSFT、TSLAなどの多数のハイテク在庫を含む小さな株式リストをすでに掲載しています。今すぐポートフォリオを構築してみましょう。これは、実行する必要がある主なコマンドです。
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
このコマンドは、過去90日間を除く最後の5年間の毎日のデータを使用し、いくつかのポートフォリオを構築します。これらのポートフォリオに基づいて、90日間のサンプルデータでテストし、各ポートフォリオのパフォーマンスを表示します。最後に、パフォーマンスをここでQQQである市場指数の選択と比較します。各パラメーターの詳細に飛び込みましょう。
さまざまな種類のポートフォリオを構築するためのいくつかの例を以下に示します。
python portfolio_manager.py --is_test 1 --future_bars 30 --data_granularity_minutes 3600 --history_to_use 90 --apply_noise_filtering 1 --market_index QQQ --only_long 0 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
python portfolio_manager.py --is_test 0 --future_bars 0 --data_granularity_minutes 60 --history_to_use all --apply_noise_filtering 1 --market_index SPY --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 0 --market_index SQQQ --only_long 1 --eigen_portfolio_number 1 --stocks_file_path stocks/stocks.txt
現在、4つの異なるポートフォリオ戦略がツールキットによってサポートされています。
上記のコマンドを実行すると、私たちのツールはこれらすべての戦略からポートフォリオを生成し、それらを提供します。結果のポートフォリオをいくつか見てみましょう。
これらの結果のために、株式/stocks.txtファイルの9つの株を使用します。上記のコマンドを実行すると、最初に4つの戦略すべてに対してポートフォリオウェイトを取得します。テストのために、上記のコマンドは、4月29日までの過去5年間の毎日のデータを使用しました。今年の残りのデータは、ポートフォリオを構築する際にポートフォリオ戦略がアクセスできなかったため、フォワードテストに使用されました。
私のポートフォリオに異なる在庫が必要な場合はどうなりますか? :必要なのは、stocks.txtファイルの在庫を変更して、ツールを再度実行することだけです。ポートフォリオを取得するために実行する最終コマンドは次のとおりです。
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
固有のポートフォリオはTSLAに大きな重みを与えている一方で、他のポートフォリオは重量をより均一に分割していることがわかります。ここで起こっている興味深い現象は、すべての戦略が自動的に学んだSQQQのヘッジです。すべてのツールはSQQQにある程度の重みを割り当て、他の株に正の重みを割り当てています。これは、戦略がリスクからポートフォリオを自動的にヘッジしようとしていることを示しています。明らかにこれは完璧ではありませんが、それが起こっているという事実だけが魅力的です。 2020年4月29日の過去5年前のバックテストの結果を見てみましょう。
バックテストはかなり励みに見えます。黒い点線は、市場指数、すなわちQQQです。他の行は戦略です。カスタム遺伝的アルゴリズムの実装は、他の戦略の高度なバージョンであるため、最良のバックテスト結果を持っているようです。 TSLAの重さを最も重くした固有ポートフォリオは最もボラティリティを持っていますが、その利益も非常に高くなっています。最後に、予想どおり、MVPには最小分散があり、最終的には最小の利益があります。ただし、分散は非常に低いため、安全を保ちたい人にとっては良いポートフォリオです。最も興味深い部分は次に来ます。これらのポートフォリオのフォワードまたは将来のテスト結果を見てみましょう。
これらの結果は、2020年4月29日から2020年9月4日までです。固有ポートフォリオは最高のパフォーマンスを発揮しましたが、多くのボラティリティもありました。さらに、これらのリターンのほとんどは、過去数か月のTSLAロケットによるものです。その後、GAアルゴリズムは市場指数を打ち負かしたため、非常に効果的に機能しました。繰り返しますが、予想通り、MVPはリスクと報酬が最も低く、4〜5か月でゆっくりと上昇しました。これは、さまざまな種類のリスクと報酬プロファイルのためにさまざまなポートフォリオを開発したこれらのアルゴリズムポートフォリオ最適化戦略の有効性と力を示しています。
このツールキットをトレーディングコミュニティと共有し、人々がそれを好み、貢献することを願っています。取引中のすべての場合と同様に、これらの戦略は完全ではありませんが、厳密な理論といくつかの大きな経験的結果に基づいています。これらの戦略と取引する際には注意して、常にリスクを管理してください。上記の結果は桜の選択ではありませんでしたが、過去数ヶ月で市場は非常に強気で、上記の強力な結果につながっています。私たちは、コミュニティがさまざまな戦略を試して、それらを私たちと共有することを望んでいます。
スコット・ローマのブログに感謝します。 Eigenポートフォリオと最小分散ポートフォリオの概念は、彼のブログ投稿から来ました。共分散行列の固有値をフィルタリングするためのコードは、主に彼の投稿の1つから取得されました。
Tradyticsによる製品
Copyright(c)2020-Present、tradytics.com