機械学習(LightGBM)を使った株価予測入門(初心者向けソースコードあり)

将来の夢は、

株で一生利益を得て安泰に暮らすことです!

 
 
 

(C)楳図かずお/漂流教室

 
 
 

想像してみて下さい。

金融のプロがこんな取引をやってると思いますか?

 

  • 2本の移動平均線が〇〇となったら「買い(又は売り)」
  • ストキャスティクスとMACDが〇〇だったら「買い(又は売り)」
  • 寄り付きから〇円以上上昇した後、〇円変動したら「買い(又は売り)」
  • NYダウが〇〇で日経が〇〇だったら「買い(又は売り)」
  • 移動平均乖離率が〇〇%以上だったら「買い(又は売り)」

 

価格が上昇したからGC(ゴールデンクロス)が表れたのであって、これから上昇するワケではありません。

ランダムウォークで解けないとされる問題に何年もチャレンジして初老になってしまった……。

 

 

個人投資家にも一握りの成功者もいるけど、他に成功率の高いビジネスは沢山検討できたんじゃ無いのかな……。

そもそも「誰かが勝てば誰かが負ける」時点で
 
 

投資は知の総合格闘技

 
 

だからね……

僕は蚊に右腕を噛まれても
 

「まだ空腹では御座いませんか?」
 

と、左腕も差し出す心優しい性格なので、争い事に勝てた試しがない。

負け犬人生の僕には最初から勝ち目が無いことは分かっていたわ……。

 
 

せめてシステムトレードの知識を活かして「機械学習」に応用しつつ、本業で活かせるようになるかーー。

因みに、最近は機械学習をやってなかった理由は
 

自分の実装したコードの動かし方を忘れたから。

 

という糞のような理由。

今回は初心に戻って動かせるところまでは進めてみよう。

機械学習で株価予測の事始め

AUC(評価指標)が7割超えしていた時代もあったが、もはや自分で作ったソースコードの動かし方が分からない。

けれど、幾つかの実装をコメントアウトしたら実行できた。

更に簡単に実行出来るようにソースを書き換えたので実行手順をまとめておく。

事前準備

  • PythonがインストールされているWindows PC
  • OSSのProtra(最新株価をダウロード済)

まず、Protraで全株価をCVSとして出力させておく。

GPUも不要。マシンが多少古くても動作する。

これで事前準備は完了だ。

株価予測の実行

pipコマンドで各種ライブラリをインストールする。

そして、次の実行コマンドを打つ。

※Protraのフォルダ位置のパスを書き換える行あり

これでProtraのバックテスト用のスクリプトが吐き出される。

処理時間は銘柄数や層の深さによるが、今回の実行であれば5秒程度だ。

バックテストの実行

Protraを使ってバックテストを行う。

選択銘柄は株価予測した銘柄だけに絞っていると高速になる。

今回の実行であれば2分程度で結果が出る。

うん。簡単だね。

利用したストラテジーのおさらい

【資金管理条件】

  • 銘柄選定(時価総額ランキングTop20位)
  • 1回の購入資金 (50万円)
  • 投資総額 (300万円)
  • 単利運用

【買いルール】

  • 3日後の始値が50%以上の確率で3%以上 上がると判断した場合に翌日の始値で買い

【手仕舞いルール】

  • 3日経過したら翌日の始値で手仕舞い

【機械学習データ】

  • [目的変数] 翌日の始値から3日後の始値が3%以上上がったもの
  • [学習モデル] 勾配ブースティング(LightGBM)
  • [モデル評価] KFold(K-分割交差検証)

説明変数(利用した指標)は何か?

以前は国債とか騰落レシオなども使っていたけど無効化している。

合計32個を利用した。

【一般データ】

全部で7個。

  • 日付、始値、高値、安値、終値、出来高、曜日

【テクニカル指標】

全部で25個。

  • 移動平均(3日、15日、50日、75日、100日)
  • ボリンジャーバンド(σ1、σ2、σ3)
  • MACD(シグナル、ヒストグラム)
  • RSI(9日、14日)
  • ADX(平均方向性指数)
  • CCI(商品チャンネル指数(Commodity Channel Index))
  • ROC(rate of change)
  • ADOSC(チャイキンオシレーター:A/DのMACD)
  • ATR(Average True Range)
  • 移動平均乖離率(5日、15日、25日)
  • 前日比(1日、2日、3日)
  • VR(Volume Ratio)

テクニカル指標は何年もやってきたし、もっと増やせると思ってる。

今回の指標で学習過程で重要だとLightGBMが判断したものは次のとおり。

機械学習による株価予測の期待値検証

計算時間は機械学習含めて前述のとおり3分。

早いし自動的にパラメータ調整してくれるし、これで儲かるなら、機械学習の方が断然良いわ。

結果は次のとおり。

利益曲線は、次の通り。

近年は利益率が下がるけど、利益は出ているっぽいね。

機械学習を検討していた時はカーブフィッティングに泣かされ諦めた。

この結果は、まだワンチャンスあるんじゃない?

まとめ

なんとか動作したし実行時間も超早い。

これで儲かるなら、これが良いわ。

ただしフォワードテストを全く行ってないので、毎日自動動作させて しばらく結果を確認していきたい。

CSVの読み取り部分をどうするかな……。

ソースコード

バックテストには無料OSSの「Protra」を利用した。

誰でも実行して確認できるように、GitHubにすべてのファイルを置いている。

タイトルとURLをコピーしました