出版日: 2024年5月10日
Note: この記事はMediumに掲載されました。元の記事はこちらで見つけることができます。
もし私のように、お金の投資方法に頭を悩ませている方であれば、この記事はあなたのためかもしれません!
この記事は投資アドバイスではないので、ご自身の判断でお使いください。あなたの金融的な決定に対する責任は負いません。
リスク調整後のリターンが平均を上回る投資をする方法はあるでしょうか? 例えば、単独では平均的な性能を発揮するかもしれない10の株(例:1. テスラ + 2. IBM + 3. シェブロン +… + 10. ゲームストップ)を特定して、同時に投資することで強力な結果を得ることができますか?
S&P 500の10銘柄の組み合わせをすべて試してみると、245,810,588,801,891,070,000通りあり、これを見つけるのに狂気じみた時間がかかります。 そのようなシナリオでは、遺伝的アルゴリズムが役立ちます。なぜなら、それは「最適な」10銘柄のポートフォリオを見つけるのにかなり短い時間しかかからないからです。
S&P 500に上場している株から、最も良いリスク調整後のリターンをもたらす10銘柄の組み合わせを見つけたいと思います。 リターンは、そのポートフォリオの%成長であり、リスクは投資期間中に観察された標準偏差です。 リスク調整後のリターンは、リターンをリスクで割ったものです。
遺伝的アルゴリズムを使用して、10銘柄の組み合わせを繰り返し、最も良いリスク調整後のリターンを見つけようとします。 以下のビデオは遺伝的アルゴリズムの概要を示しています。
高レベルでは、遺伝的アルゴリズムは進化を模倣し、ポートフォリオの世代を繰り返し、強い「適応度」(ポートフォリオのリスク調整後のリターン)のみを残します。 「クロスオーバー」(既存の2つの株ポートフォリオを組み合わせて新しいポートフォリオを生成する)や「ミューテーション」(ポートフォリオ内の株をランダムに交換する)などのメカニズムは、モデルが局所的な最小値に停滞するのを防ぎ、計算プロセスに多様性を導入します。
遺伝的アルゴリズムを簡単に実装するのに役立つPythonのPyGADライブラリを使用します。
S&P500の株式リストを取得し(データソースは最後に記載されています)、Yahoo Financeにアクセスしてリスト内の各株の過去のパフォーマンスを取得します。 すべての株価は、投資期間の開始時の価格に基づいて$10に正規化された「調整後終値」が使用されます。 これは、各株に均等に投資したいためです。各株チッカーには、使用する遺伝的アルゴリズムライブラリに必要な株式インデックスが割り当てられます。 以下は、遺伝的アルゴリズムにフィードされるデータの見方です:
投資期間の開始日と終了日を2021年4月〜2022年3月に任意に設定します。 「調整後終値」は株価に使用され、すべての株価は投資期間の開始時の価格に基づいて$10に正規化されます。これは、各株に均等に投資したいためです。 各株チッカーには、使用する遺伝的アルゴリズムライブラリに必要な株式インデックスが割り当てられます。 以下は、遺伝的アルゴリズムにフィードされるデータの見方です:
GAには多くのパラメーターがあります(世代数、集団あたりのソリューション数、突然変異遺伝子の%など)。 最適なパラメーターを見つけるためにクイックハイパーパラメーター最適化を行います。 次に、最適な株ポートフォリオを見つけるためにアルゴリズムをトレーニングします。 以下のチャートで見られるように、アルゴリズムはフィットネス(リスク調整後のリターン)を約20世代で倍増させ、フィットネスが改善されない限り続きます。
まず第一に、市場指数S&P500のパフォーマンスを改善したかったので、投資期間のパフォーマンスを見てみましょう:
S&P 500のパフォーマンスはこの期間中まったく目立たず、年間約7%のリターンと、約1%のデイリーリスク(標準偏差)を示し、これによりリスク調整後のリターンは約8%となります。 このベンチマークは打ち負かすのがあまりにも簡単なので、別のベンチマークを見つけましょう:
投資期間中に、最も高いリターンを達成した10銘柄を選択しました(これはリスクを考慮に入れていない注意してください)。 上位10銘柄は「DVN」、「APA」、「MRO」、「COP」、「CF」、「FTNT」、「OXY」、「FANG」、「NVDA」、および「MOS」でした。 これらの企業のほとんどはエネルギー関連のビジネスにあり、NVIDIAのような例外もあります。
上記のように、これら10社のポートフォリオは約90%の成長と約2%のリスクをもたらしました。 全体として、リスク調整後のリターンは42.8%でした。
当社のモデルは、「CERN」、「DVN」、「DRE」、「ABBV」、「SEE」、「ORLY」、「WST」、「COP」、「ED」、「PSA」株の組み合わせを最高のリスク調整後のリターンをもたらすトップポートフォリオとして特定しました。 これらの企業の一部はベンチマーク#2(トップパフォーマー)にも存在しますが、Abbvieなどの新しいエントリーも見られます。
モデルの通常のリターンはトップパフォーマーのそれ以下であり、約52%ですが、リスクは0.8%に大幅に低下しています。 上記のグラフで見られるように、ポートフォリオはスイングを経験せず、一貫して増加します。 全体的に、ポートフォリオはリスク調整後のリターンが62%であり、トップパフォーマーのポートフォリオよりも20pp高いです。
リスク調整後のリターンが最大のポートフォリオを見つけるために遺伝的アルゴリズムをトレーニングしました。 遺伝的アルゴリズムは数十億の可能なポートフォリオの中から「十分に良い」ソリューションを見つけるのに役立ちました。 さらなるトレーニングでより高いリターンが得られます。
このGitHubリポジトリでデータとコードを見つけることができます。
ハッピーハッキング!
このブログは英語からChatGPTによって翻訳されました。不明な点がある場合は、お問い合わせページからご連絡ください。
コメントを残す
コメント
その他のブログ
2024/06/19
SvelteとJavaScriptを使用してシンプルで動的なツールチップを作成する
2024/06/17
JavaScriptを用いて東京都のインタラクティブな地図を作成する
2024/06/14
Matplotlibで日本語文字化けを解決できる簡単な方法
2024/06/13
書評 | トーキング・トゥ・ストレンジャーズ 「よく知らない人」について私たちが知っておくべきこと by マルコム・グラッドウェル
2024/06/07
日本語で最もよく使われる3000字の漢字
2024/06/07
VSCodeでRegexを使用してReplaceする方法
2024/06/06
SvelteではReadable Storeを使用するな
2024/06/05
GzipとPakoでデータを圧縮してWebサイトのローディング速度を上げる方法
2024/05/31
JavaScriptを使用してWebページ上でマウスが指している単語を特定する
2024/05/29
SvelteとSVGを用いてインタラクティブな地図を作成する
2024/05/28
書評 | Originals 誰もが「人と違うこと」ができる時代 by アダム・グラント & シェリル・サンドバーグ
2024/05/27
Javascriptを使用して数独を解く方法
2024/05/26
ウェブサイトへのトラフィックを1か月で10倍に増やした方法
2024/05/24
人生はサイクリングに似ている
2024/05/19
JavaScriptでバックトラッキング・アルゴリズムを用いて完全な数独グリッドを生成する
2024/05/16
Tailwindが素晴らしい理由とWeb開発をいかに楽にするか
2024/05/15
PythonとGitフックを使用してサイトマップを自動的に生成する
2024/05/14
書評 | Range (レンジ) 知識の「幅」が最強の武器になる by デイビッド・エプスタイン
2024/05/13
SvelteとSvelteKitはなんですか?
2024/05/12
SvelteKitで国際化(多言語化)
2024/05/11
SvelteでCachingを用いてDeploy時間を短縮する方法
2024/05/10
SvelteとIntersection Oberverによるレイジーローディング
2024/05/09
Pythonを用いてShapeFileをSVGに変換できる方法
2024/05/08
Svelteの反応性:変数、バインディング、およびキー関数
2024/05/07
書評 | 孫子の兵法
2024/05/06
スペシャリストは終了。ゼネラリスト万歳!
2024/05/03
トルコ人の有権者の投票行動をPythonでの分析
2024/05/01
Seleniumを用いてトルコ投票データベースを作る方法
2024/04/30
SvelteとTailwindを使用してInfinite Scrollできる方法
2024/04/29
1年間以内で日本語を駆使できるようになるための方法
2024/04/25
SvelteとTailwindを用いたWebサイトテンプレート
2024/01/29
怠惰なエンジニアとひどいデザイン
2024/01/28
偉大さについて
2024/01/28
MacBook で PDF を PNG に変換する
2023/12/31
2023年振り返り:24冊の読んだ本のまとめ
2023/12/30
Python PILを使用して写真コラージュを作成する方法
2024/01/09
ウェブサイトの訪問者のデバイスとブラウザを検出する方法
2024/01/19
ChatGPT回答の解析