機械学習による株価予測(導き出たのは斉藤正章氏の手法)

11回目ではファンダメンタルズ指標を追加することで「AUC=0.70」を超えました。

13回目では過学習(オーバーフィッティング)を抑え学習モデルを可視化しました。

これは、果敢にも人類の夢「株の自動売買で億り人」に挑戦し、詰みかけている一人の中年男の物語です。

前回までで銘柄毎の分類器を作ることは、過学習に陥る可能性が高い事が分かりました。

 

今回は、交差検証で作成された学習モデルを保存し、日経225採用銘柄に適用してみます。

一般的なシステムトレードに近い形です。

交差検証の学習モデルの保存・ロード方法

一般的な交差検証のサンプルル実装は次のようになっています。

学習モデル構築中にテストデータも検証しています。

そして分割数で割っています・・・これは何だろう?

今回の例では、交差検証のために「学習データ」と「検証データ」に5回分割を試みました。

それぞれの学習により構築された「学習モデル」を使って「テストデータ」を予測し「分割数」で割ることで平均値を取っているようです。
 

これが正しいのであれば各学習モデルを保存し、「テストデータ」に適用して「分割数」で割ってあげるだけです。

結果を見る限り同じ結果が得られたので正しいと仮定して、日経平均255採用銘柄を使って確認してみます。

バックテスト結果

日経255採用銘柄に対してmax_depth=4で正解率60%を抽出してバックテストした検証結果は次のとおりです。

利益曲線は次のとおりです。

糞じゃねーか!!!

max_depth=2で色々と実験してみる

このままでは引き下がれないので、max_depth=2にして入力データを変えながら実験してみます。

もはや機械学習でも何でもなく、

  • 株価予測には重要な指標とパラメーターは何なのか?
  • そのストラテジーの構築方法は?

を確認しているに過ぎません。

1998/01/05~2015/12/14 を学習データに使った場合

日経255採用銘柄に対してmax_depth=2で正解率60%を抽出してバックテストした検証結果 (skiprows=0, skipfooter=1000)は次のとおりです。

学習モデル(5つの交差検証の一つ)は次のとおりです。

利益曲線は次のとおりです。

2006/02/20~2019/10/24 を学習データに使った場合

日経255採用銘柄に対してmax_depth=2で正解率60%を抽出してバックテストした検証結果 (skiprows=2000, skipfooter=60)は次のとおりです。

学習モデル(5つの交差検証の一つ)は次のとおりです。

利益曲線は次のとおりです。

2002/01/25~2019/10/24 を学習データに使った場合

日経255採用銘柄に対してmax_depth=2で正解率60%を抽出してバックテストした検証結果 (skiprows=1000, skipfooter=60)は次のとおりです。

学習モデル(5つの交差検証の一つ)は次のとおりです。

利益曲線は次のとおりです。

1998/01/05~2020/01/24 を学習データに使った場合

日経255採用銘柄に対してmax_depth=2で正解率60%を抽出してバックテストした検証結果 (skiprows=0, skipfooter=0)は次のとおりです。

学習モデル(5つの交差検証の一つ)は次のとおりです。

利益曲線は次のとおりです。

考察

ここまでの実験が正しいのであれば、導ける結果は次のとおりです。

  • 5日間移動平均との乖離率は重要な指標
  • 15日間移動平均との乖離率は重要な指標
  • (日経255採用銘柄のみの考察だが)逆張りは有効

と、機械学習は教えてくれました。

そして、これは「斉藤正章氏の逆張り手法」とほぼ同じストラテジーです。

まとめ

一ヶ月かけて機械学習で作成できたストラテジーは斉藤正章氏の手法でした・・・。

そして、今回の取り組みで作成したストラテジーは、次のような魅力の無いものです。

  • 勝率60%未満
  • プロフィットファクター2.0未満
  • 年利5%未満

また、案の定Log関数のような利益曲線となりました。

手動のストラテジーのパラメータ調整やどの指標を使うべきか?の支援ツールとしては意味がありそうです・・・どこかの会社が作りそうですね。

要するに、作ったストラテジーに、あとは何の指標を追加すれば勝率が上がるか?最適なパラメーターは何?を自動的に出力はできそうです。

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