機械学習による株価予測(3点チャージ法を改良する→失敗)

羽田空港は全空港職員がマスクをし、利用客も7割がマスクをしています。

一方で、アメリカの空港に着いた途端にマスク着用率は一気に2割にまで下がります。

アメリカのテレビキャスターも

「マスクはウイルスにかかった人が周りへの配慮でするもので、予防的につけるものではない」

と言っており、マスクとは東洋の習慣、または迷信でしかないという位置づけのようです。

 

日本ではオイルショックのような状態です。

マスクを三連休に買おうと色々な薬局スーパの開店時に並びましたが、そもそも入荷がありません。

【引用】誰かのツイート(下北沢の薬局にて)

このような状況になることを予測していませんでした・・・・。

今では、会議やセミナー開催にはマスク着用が必要な状態です。

 

今まで「機械学習と株価予測」を合体して色々と実験してきました。

これは、ヘッジファンド転職を夢見て「株の自動売買」に挑戦し、詰みかけている一人の中年男の物語です。

今回は機械学習を使ってストラテジーの拡張が可能か実験してみます。

ストラテジー改善に機械学習を使ってみる

「勝率53.90%」の三点チャージ法があります。

単調増加していますが勝率が低いのが難点です。

この勝率が機械学習によって上がるか確かめてみます。

前回気づいた下記の実験です。

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

売買履歴を分類する

Protraの売買履歴を抽出してみます。

これをテキストにコピー&ペーストして「CSV」で保存した後に次のようなPythonスクリプトを実行します。

これにより、各日の売買が「勝った」「負けた」かどうかが判別できるようになります。

これを二値の目的変数で分類すれば機械学習が利用できます。

説明変数を追加する

銘柄に対する過去の株価データを呼び出し、以前作成した説明変数追加処理を適用してみます。

これにより、出力されたCSVファイルは次のような形式となっています。

この説明変数の中で勝率アップに最適な変数とパラメータを機械学習にもとめてもらいます。

因みに、銘柄数2000〜3000で処理時間が3〜5時間ぐらいかかります(100銘柄単位で処理すれば10分程度の処理時間になります)。

機械学習を適用する

では、LightGBMで深さ1で機械学習を行います。

「AUC精度」は0.74なので悪くありません。

ツリーをcreate_tree_digraphで可視化してみます。

「前日比(終値)」がもっとも有効な指標と出力されました。

確認のために、x軸に前日差分値、y軸に「勝ち(1)」「負け(0)」をとった場合の散布図を作ってみると次のようになります。

なんとなく0.991で分割すると、負け売買を減らせそうな気がします。

これはいけるか!!

バックテスト結果

【買い手法】

  • 三点チャージ法
  • 前日比(終値)0.991より大きい

では、バックテスト結果です。

あれれ・・・・

  • 購入銘柄数・2449→1169
  • 勝率・・・・53.90%→53.64
  • 平均利益・・7334円→7035円
  • PF・・・・・1.73→1.73

むしろ悪くなっています。

そして年度別レポートでも、勝てない年が増えてしまいました。
 
 

因みに、符号を逆にしてみると「勝率53.97%」と僅かに上り、利益曲線も単調増加になります。

なんだこりゃ・・・・。

まとめ

結果は散々たるものでした。
 

疲れたよ・・・パトラッシュ・・・。


 

やり方、考え方は間違って無い・・・と思うんだけどなぁ。

各年の勝率だけ見ると良くなっている年が多いです。

2020年は勝率100%になってるし、機能しているっぽいです。

となると、目的変数「勝ち(1)」「負け(0)」の二値が悪かったのかな・・・・うーん。

要調査です。

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