はじめに
フリーランスになってから、チャートを見て仕事をしたりしていたのですが、機械学習がある程度できるようになったので、チャート解析がどういうものかちょっとやってみようかなと思って、トライしてみました。本当はチャート見て仕事したらいけないのですが、、ゴメンナサイ(汗。 個人的には、かなり本気でやったつもり。
取り合えずやってみる
チャートデータの標準化などを行って、取り合えず機械学習にかけてみる。今回は、次のローソク足が上か下かを予測してみました。データは、meta traderがpython用のapiを提供しているので、そちらから無料で取得できます。勿論、最初からそんなに簡単に上手くいくはずもなく、正解率は5割ちょっと。この辺りから、色々と試行錯誤が始まる。
改善策
モデルには、pytorchの深層学習モデルを使用しました。最初にモデルのノード数などを変えたりしてみたが、過学習が起こるだけで上手くいかない(どうも、モデルの問題ではないようだ)。なので、次の方法としてチャートデータの抽出を行ってみた。具体的には、荒場のチャートは除いて、綺麗そうなチャートのみで学習を行ってみました。チャートの抽出には、平均足との一致率なども考慮しました。
結論
かなりチャートを絞ってみたが、正解率に変化はなかった。まだ、絞り込みが足りないのかもしれない(または、絞り込み方を間違えているのか)。一応、チャート画像なども確認してみたが、それなりに綺麗ではあるが、まだ規則性は見つけにくい。
中には、お手本の様な綺麗なチャートも僅かながらに含まれているが、こういったチャートのみを抽出できれば良いのかな?
考察
今のところ、正解率が上がらないのは、モデルではなく、データ側に原因があると考えている。まあ、当たり前と言われれば、その通り。 簡単に言うと、同じ様な形状のチャートでも、次に上がる確率が50%、下がる確率が50%だと、モデルも正解率が50%だと言わざるを得ない(無理に予測させようとしても、過学習になるだけ)。
なので、データを増やせば過学習も改善されるかと思ったけど、あまり変化はなかった。そのあたりは文献などもあったので、恐らくデータを増やしてもあまり変化はないのかもしれない。個人的には、モデルの予測確率はそこまであてにならない様な気もするんだけど、どうなんだろうな。
この先
マシンスペックがそこまである訳でもないので、規則性が現れる様なチャート抽出が必要かなと思う。モデルはそこまで複雑ではなくても良い様な気もする。と言うか、抽出が上手くいけば、if文だけでも行ける様な。。 どの様なチャートを抽出すればよいかについては、正解は1つだけではないだろうし、ある程度、経験則がものを言いそうだ。
あまり熱くなりすぎると深みにはまりそうなので、ぼちぼちマイペースでやってみる。一応、とても勉強にはなるので、一度くらいはトライしてみても良いかもしれない。
補足
因みに平均足の正解率なら7割くらいある。そして、平均足とローソク足の上下の一致率も7割くらいだから、0.7×0.7=0.49となり、やはり正解率は50%くらいになるのだ。よく出来ている。