ねほり.com

何もないから何かみつかる

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

      2020/02/26

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関数のような利益曲線となりました。

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

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

 - 2020年(社会人16年), 機械学習, テクノロジー, システムトレード

  関連記事

NOVAでお金を失って株の自動売買を検討

2007年11月09日(金) NOVAにまた授業料支払いか・・・ 世の中には二種 …

Webサービスを支えるトレンド技術まとめ

FishEyeやCrucibleを使って開発を進め、Node.js+Expres …

外部・内部用ブログカードをWordPressプラグインなしで設置

「新型コロナウイルス」の猛威により原則テレワークとなり、明日から許可なく出社が出 …

「戦争は絶対にしてはいけない」と安易に考える人は危うい

縄文時代より先祖代々我が家は広島県で生活していた(と思われるが)が、就職して上京 …

KaggleのHome Credit Default Risk体験(サブミット編)

ビッグデータ分析、新卒年収は1000万円以上 東大生の人気職種に(産経新聞) 「 …

Raspberry Pi3でScratch1.4を動かしゲームを作ってみる(小学生にプログラミング教育は必要?編)

今年(2020年)より小学生でのプログラミング教育が必修化されます。 既に201 …

CSVを読み込み外部データを使えるようにする方法(システムトレード)

「イザナミ」「システムトレードの達人」が羨ましいなぁ・・・と思っている機能の一つ …

大学時代からのテクノロジー学習一覧

2009年03月21日(土) 大学時代からの習得内容をまとめた 最近は、Pape …

過去傾向から考える親のための「読書感想文」の書き方・書かせ方(小学生低学年編)

読書感想文に対して「好きか?嫌いか?」と聞かれると、     …

OmegaChartの使い方導入編(長期株価取得)

Protraはよくできたソフトだけど、本日の日付を使った売買戦略とか、ファンダメ …