1 この記事は
日本取引所グループ ファンダメンタルズ分析チャレンジに参加に至った経緯、経過、学んだこと、今後のことなどを考えたことを記録に残しておきたいと思います。
2 参加のきっかけは
個人投資家として株式投資の経験は3年程度ありますが、投資家の傾向として、ニュースや街角の動向など肌で感じた世の中の動きから今後を予測して銘柄を選別・購入するファンダメンタル派と、ボリンジャーバンドや一目均衡表などのチャートを分析して株価が安いと思われるときに買うテクニカル分析派があると思いますが、自分自身はテクニカル分析の方がやりやすいので、テクニカル分析を使って株式投資をやっています。日々の株価を収集、テクニカル分析を自動実施し、日々銘柄を監視するシステムを自分で作り使っています。
こちらの記事が、自分が設計し運用しているシステムの記事です。
・ラズベリーパイで作る株式投資分析アプリ
自分でシステムを作りテクニカル分析にのっとった売買ストラテジーにより運用益はプラスにはなっていますが、教科書に書いてあるような既存のテクニカル分析が教えてくれるサインはあまり有効的とは言えず(だましがあり、高値掴みになりやすく)、時に感覚で銘柄の売買をする場合もあることあり、傷口を広げてしまい1年以上銘柄を塩づけにしてしまったなどの失敗があります。銘柄売買ストラテジーを構築し根拠をもって、株の売買ができるというのが、トレード成績を上げる必須条件であると思っていたのですが、日本では米国に比べ個人がITやデータサイエンス系の知識を使いトレードをするということはあまり一般的ではないので、情報が少なく苦慮しておりました。
そのときに、下記のツイートを偶然にもみかけました。
J-Quants の株式分析チュートリアルの出来が素晴らしかった。評価指標を選択した背景、累積調整係数による調整済み株価によるリークの可能性、詳しく知りたい人への参考文献などなど完成度が高い https://t.co/tTRbFs5gYj
— smly (@smly) January 31, 2021
チュートリアルを見れば、テクニカル面やデータ分析の内容で最新かつ質の高いものが多く含まれており、このコンペに参加すれば、色々と知見が得られそうだし、楽しそうだと思ったのでコンペに惹かれ参加しました。
3 コンペでやったこと
本コンペは、下記の2部でした。
- 第1部 本決算発表後の、20営業日を経過した期間における、各銘柄株価の変化率上限、下限を予測する。
- 第2部 ある週の週初営業日に始値で購入、その週の週末営業日に売却するとした場合に高い利益を得るポートフォリオを組む。
第1部
第1部は、活動期間が1月下旬から3月下旬と2カ月ありました。1月下旬でしたが、モーニングサテライトで決算後の銘柄選別方法の特集がされていたので、そこで得た知識であったり、経験的に分かっていたことがあったのでそれらを実装してみようと思っておりました。しかしながら、実装するまでに主に下記の2点に苦労し思っていた以上に時間を消費してしまいました。
- 環境構築
- モデルの提出
まず初めに環境構築から始めましたが、環境構築に予想外に時間を消費してしまいました。Versionなどを合わせないと、モデルの提出の段階でエラーがでるとのことでしたので、Docker環境を構築しましたがwindowsなので苦労しました。ただ、運営サイドの方、参加者のフォローがありclearできました。
次にモデルの提出ですが、サーバーに上げたあとにバッチ形式で実行されるためエラーが出力されてもよく分からず苦労しました。ただこちらも運営サイドの方、参加者のフォローをもらい、clearしました。
以降は、自身のアイデアをひたすら実施しカットアンドトライを繰り返しながら仕上げていきました。
第2部
第2部も参加表明しましたが、コンペの期間が実質1か月と短く、他のことが忙しかったということもあり、残念ながらチュートリアルを読みこんだのみで、モデル提出に至りませんでした。
4 コンペに参加して学んだこと
第1部で学んだこと
第1部で学んだことは、Pythonのコードの書き方に加え、ざっと下記の項目でした。
- 日ごろの株価ボラティリティーは、決算発表後の株価の変動を説明する強い特徴量になる。普遍性がある。
- 日ごろの株価ボラティリティーが、高い銘柄ほど決算発表後の株価の変動が大きくなること
- 株価のような正規分布に従わないデータを扱う場合、使用する機械学習アルゴは決定木系がよい
- Testデータでの予測精度を向上されるには、特徴量の選択追加が効果大。決定木系のアルゴリズム(例LGB)の選択により多少予測精度は向上できる。
- 決定木系の特徴量寄与解析につかうSHAP分析
第2部で学んだこと
第2章の5章、6章で書かれていることは日経新聞のタイトルから次週に株価が上昇するか、下降するかを予測するシステムです。簡単に説明すると、日経新聞のタイトル/キーワードをBERT分析を実施し、特徴量を抽出します。2020年前半を訓練期間と設定し、「抽出した特徴量」と「次週の株価の上昇下降結果」を与え、LSTMアルゴを採用し学習させます。テスト期間においては、上記の抽出した特徴量を学習済みのLSTMアルゴリズムに入力し、出力として株価の上昇確率を得ます。LSTMアルゴから得られた上昇確率と実際の株価のReturn(前週と当該週の比較)が右肩上がりになっていれば、システムとしてワークしているのではという内容です。5章,6章の内容はDeeplearingを使用するのでGPU環境が必要です。たまたま、別目的でエヌビディア社のRTX3060を搭載したゲーミングPCを持っていたので、それを使い、第5章,第6章の内容を学習しました。(ちなみにCPU環境であると、BERT抽出やLSTMの学習のところで数日間計算時間を要してしまうので、実現的ではありませんでした)
チュートリアルを実行してみましたが、自身の環境では再現性がなく出力される結果のばらつきが大きかったです。下記が6章で記載されたコードを200回実施し、2020年後半の週のfeaturesとweekly_fwd_returnsのspearman相関係数のヒストグラムを記載したですが、ベストのときは、0.6以上となりますがワーストのときは-0.4以下となります。ただし、200回の試行の平均をとったところ、spearman相関係数平均が0.07となっており正規分布の形が正数側に寄っているので、本チュートリアルの第6章で紹介された手法は、有意なアルファを見つける手法として有効であると思われます。
DeepLearingのアルゴ自体に乱数が入っているので、結果の再現性がないのは理解できるのですが、環境設定が間違っているのか、移植するときにコードをミスっているのか、そもそもばらつきが大きくベストケースを取り出して使用するものかよくわからないのですが、コンペに参加された方で6章のコードを実際に動かして検証された方がいらっしゃれば、spearman相関係数がどの範囲で分布するのか教えていただければ幸いです。
5 今後チャレンジしたいこと
本コンペに参加して、実際に設計してみたいシステムとして下記を考えています。
(1) 保有銘柄ごとに株価データのボラティリティーの計算し、決算をまたいでホールドすることのリスク見積を行うシステムを作る。
(2) すでに学習させたモデルに現在週の日経新聞ヘッドラインを読み込ませ、次週のTOPICSが上昇するか、下降するか予測する。
(1)に関しては、日々の株価のボラティリティーの大きさと、決算発表後の株価の変化率は正の相関を学んだので、決算をまたいで保有するかいなかの判断材料として使用できるのではないかと考えています。
(2)すでに学習させたモデルに現在週の日経新聞ヘッドラインを読み込ませ、次週のTOPICSが上昇するか、下降するか予測する。次週のTOPICが上昇すると予測できれば、TOPICSと相関性の高いセクターの銘柄(具体的には、電機精密,自動車などの景気敏感銘柄)の保有割合を増やす。逆に次週のTOPICSが下降することが分かれば、現金化を進めるかTOPICSと相関性が低いセクター(具体的には、電力・食品等のDefensive系銘柄)にスイッチングする
6 コンペに参加しての感想
株価データの予測は、機関投資家や証券会社等、事業会社が莫大な情報力と資金力、IT設備や専門人員を抱えてやるものだと思っていましたが、個人投資家レベルでもある程度のレベルまでデータドリブンでの予測ができるのだと確信でき、コンペ参加以前と比較しモチベーションを上げることができました。最近、様々な業界でデータサイエンスのアプローチが取られおり、データサイエンス系の学部も近年設立数が増えていると聞きます。しかしながら株式投資の分野においてはまだまだ十分データサイエンスのアプローチが取られてはいないと思われます。日本ではお金もうけの話をすることはタブーであるという風潮があり、金融教育に消極的であることは背景にあると思いますが、個人投資家がデータを簡単に入手できないという問題が大きいように思えます。データは商品ですので、無料で配布というのは様々なステークフォルダーが絡むので難しい面もあるかと思いますが、個人レベルで株式投資に関するデータの入手が容易になれば、例えば大学において株式投資におけるデータサイエンス教育というものも進んでいき労働生産世代が今よりも積極的に投資に参加するという流れになるのではないかと考えました。最後になりますが機械学習深層学習の勉強ができたことに加えて、データ方面から株価予測可能性を学びました。運営の方に感謝します。