AI Model: RCKH(旧モデル)について

目的

明日最高値で買ったとしても、その後10開場日の間に終値の最高が10%以上になる銘柄を予想する。
「明日最高値で買ったとしても」という部分がミソです。
よくある株価予想サイトでは「明日上がる銘柄」を紹介していることが多いですが、実際に利益を出すことは難しかったです。自分の経験では、買い注文が約定するときにはすでに高値になっていてそれ以上あまり上がらなかったり最悪の場合寄り天で大損したこともよくありました。
それを避けたくて、明日の最高値で買ったとしても10開場日以内には高騰するであろう銘柄を予測する AIの開発をはじめました。

アプローチ

2018/1/19〜2019/5/11 の全銘柄の株価のデータを使用し、実際の10開場日以内の株価をもとに下記の6つのクラスに教師ラベル付けをします。
クラス 0 : 10%以上の株価下落
クラス 1 : 5〜10% の株価下落
クラス 2 : 0〜5% の株価下落
クラス 3 : 0〜5% の株価上昇
クラス 4 : 5%〜10% の株価上昇
クラス 5 : 10% 以上の株価上昇
ほとんどの株価の動きはクラス 2 か 3 に集中し、クラス 0 や 5 は非常に少ないです。そのままではクラス5を予想できるモデルが作成しにくいためクラス 2, 3 を適度に間引くことで予測したいクラス 4, 5 の割合を相対的に増やしています。
モデル RCKH は 40万件のデータを使用して機械学習しました。

株価というと時系列なので RNN や LSTM を使うことが真っ先に思いつきますが、あえて使用していません。
時系列の学習を行おうとすると、銘柄ごとに時系列が個別に存在し、個別の銘柄ごとにモデルを作成する必要が出てきます。無理やり一つにすることもできますが、モデル作成が複雑なのと学習に(LSTMは特に)非常に時間がかかります。
それよりは、Rolling Windows を用いて各銘柄の過去N日分の株価を個々の特徴量として入力するシンプルな順伝播モデルの方が扱いやすかったのでこちらを採用しました。

モデル構造

レイヤ構造は非常に単純でディープラーニングというには最も浅い構造になっています。
入力層は 142種類の特徴量を入れています。この特徴量は株価データを元に、当日だけでなく過去に遡った株価を使用したり、さまざまな指標やそれらを複合的に使用した新たな特徴量を作成したりとかなり工夫をしています。その結果142特徴量まで膨らみました。
それを全結合の2つの隠れ層を通し、最終的に6クラスの出力層で logits となり活性化関数として softmax を通すことで各クラスの予想確率にしています。

RCKH のモデル構造

その他工夫/特徴

予想はクラス分類結果が 5(10%以上高騰) になったものをブログに自動投稿しています。ただ、そのまま投稿するよりも softmax の結果を見て確率的にクラス 4, 5 のどちらも確率が高かった(確率的には 1位, 2位だった)ものだけをスクリーニングして出すことでより精度(正確な書き方をすると precision)を高くしています。
また、ミニバッチサイズ、学習率、レイヤ数、ユニット数、drop out 率、L2 正則化、バッチノーマライゼーションなどのハイパーパラメータチューニングも非常に時間をかけて探索してあります。ベイズ最適化を用いることで爆発するパラメータの組み合わせを減らして現実的な時間でなんとか終わらせています。ちなみに上位30番目くらいまでのモデルすべてがミニバッチサイズ 128, レイヤ構成が 128 Units, 32 Units の2つの隠れ層でした。

売買のコツと注意点

本 AI モデルは、10開場日の間に終値が最高どこまで騰ったかを予想します。つまり、10開場日後が最高値になっているとは限らず、場合によっては買った次の日の終値が最高値になっているかもしれません。
ですので、購入時よりも5%〜10%高騰した段階で10日間を待たずして売ってしまうほうが安全かもしれません。あるいは、下がり始めたらすぐに売るほうが安全かもしれません。