ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

正答率53%の株価予測システムできた

f:id:doz13189:20161207215442p:plain

目次

釣りタイトルじゃあありません

ただ先に謝っておきますが、60%はちょっとだけ盛ったかもしれない。ちょっとだけ...

【訂正】

だいぶ盛ってました。

51%〜54%あたりに収束していきました。

タイトルは訂正後です。

前回までのあらすじ

doz13189.hatenablog.com

doz13189.hatenablog.com

上2つの記事をざっくりまとめると、機械学習(決定木)で明日上がる株価と下がる株価の分類をしようとして失敗したという苦悩の日々がつづってあります。

失敗してるんで別に読まなくてもいいっす(はなほじ)

ただ、決定木のロジックなんかはちょっとだけ詳しく書いているので、気になる方はどうぞ。


そして、前回までやってきたことを見直して試行錯誤したのが今回です。

結果を先に発表!

検証したのは、2016年11月22日、2016年11月21日、2016年11月18日、2015年12月30日の4日間です。(一日一日の検証に時間がかかりすぎるため、スパコンくれたら100日分くらい検証します)

対象銘柄

8306, 8411, 8591, 7012, 8058, 7201, 8604, 6301, 6501, 7267, 4528, 4755, 9437, 8750, 6502, 7011, 4043, 4503, 5411, 7751, 2685, 6752, 4689, 7261, 6770, 8801, 8031, 8802, 5401, 3092, 4568, 3436, 9501, 7013, 1605, 7897, 6503, 3402, 8113, 6702, 6326, 9201, 8001, 8304, 1928, 5713, 2503, 9531, 8308, 7752, 1801, 2579, 8601, 7272, 4005, 5938, 8830, 1925, 3064, 5802, 4041, 8795, 4188, 5020, 6857, 8725, 4346, 4912, 5233, 8729, 8267, 4911, 6619, 4183, 8053, 9532, 7731, 6952, 6361, 6479, 7202, 8355, 9202, 8358, 5406, 3099, 9962, 3407, 9502, 4506, 8697, 8630, 3659, 3778, 1812, 4042, 1802, 8002, 2802, 3401, 6644, 3405, 6305, 5201, 1963, 9101, 9503, 6724, 2871, 7167, 7182, 1803, 3086, 6701, 4185, 9062, 4536, 4508, 6178, 2371, 3103, 6432, 6471, 5105, 9507, 6481, 6460, 8354, 9104, 2212, 5714, 6448, 5801, 7211, 9508, 9697, 5334, 8303, 6506, 1808, 8331, 5706, 8252, 8015, 6302, 6756, 9513, 3668, 2282, 6268, 8586, 4004, 5110, 4217, 8570, 3116, 5711, 9064, 5333, 4088, 9008, 8233, 8410, 6473, 6976, 5803, 5486, 4202, 3289, 1332, 5101, 6472, 8515, 9005, 7186, 6841, 9404, 6113, 2580, 7205, 4204, 3626, 6366, 7282, 8334, 9024, 9006, 7912, 5214, 3632, 9506, 4208, 7240, 8086, 2002, 2264, 2181, 8473, 8848, 4845, 8572, 4902, 5012, 7606, 6740, 7003, 6504, 3861, 6995, 7550, 2193, 9831, 6103, 4182, 6755, 5707, 7732, 9107, 2811, 6141, 3193, 1893, 8369, 4321, 9045, 7911, 4151, 6383, 4613, 9041, 4974

この200近い銘柄を対象にしており、ほぼすべて銘柄を予測しています。

結構な銘柄数になるので母数が大きい分、4回しか検証はやっていませんが、ある程度の信頼性はあると思います。

作ったシステムはこんな形で予測を出力します。

code predict real
8306 Down Down
8411 - Down
8591 Up Up
8058 Down Up

※predictがシステムが出した予測
※realが実際に株価がUpしたかDownしたか

このUpとUp、あるいはDownとDownが一致すれば予測が当たったということになります。

予測は2値で行われるので、適当にやっても50%は当たるはずです。

なので、50%を超えた分がシステムの実力ということになりますね。

では、結果。

期間 正答率
2016年11月22日 56.43%
2016年11月21日 58.04%
2016年11月18日 62.43%
2015年12月30日 57.69%

おぉぉぉ、前回とはまるで違う!

40%台がない!良いじゃないか。

検証した4日間中、3回が50後半、1回だけ60超えと安定して60前後だったので、検証を重ねてこれより大きく正答率が下がるとは思いたくないです。思いにくいです。

これは正答率60%の株価予測システムできてしまったのではないだろうか。

どうやって予測したのか

使用しているのは、あいも変わらず決定木です。

勉強しているうちにどうやら決定木のこと好きになってもうたみたいやわ。

なんてことはないのですが、単純に決定木のロジックで株価が予測できる見立てがあったので決定木を使用しました。


ざっくりとシステムの中身のプロセスを説明すると...

  1. 現在の相場と似た相場を過去の株価データから探してくる
  2. 発見した似た相場をよーく見て観察する
  3. 観察してわかったことを教師データとして、決定木に学習させる
  4. もうひとつ、似た相場がその後どうなったか(上昇or下落)も合わせて教師データとして、決定期に学習させる
  5. 学習したことを踏まえて、現在の相場を見た時明日上昇するのか、下落するのかを予測する


そもそも株価って、長い目で見ると繰り返しだと私は思っています。

上がって下がって、上がって下がって、そうやって何回もうねりながら株価を形成しています。

途中、何かの出来事でイレギュラーは起こるかもしれません。(例えば、米国大統領選挙など)

起こったとしても、長い目で見るとそれは小さな出来事であって、大きな流れを変えるものにはたいてい成り得ません。


ということは、繰り返してきている株価の歴史を見たら、必ず現在と似た相場があるということです。

ここで仮説が立てられます。


仮説:現在の相場と似た相場は高確率で同じ結果になる

yahoo!ファイナンスの株価予想のページに何度か、過去の相場を参考に株価を予想しているアナリストを見たことがありました。

その人はたしか「過去、似たような相場では69%の確率で下落しています」

こんな形での予想だったと思います。

このアナリストは、下落する確率を出して終わっていますが、今回のシステムでは、似たような相場を見て、現在の相場は上がるのか、下がるのか、までを予測しています。

すごくざっくりですが、実際にこのような流れで予測をしています。

この仮説が正しいのかどうかは検証結果を見る限りでは、正しいと見ていいと思います。

この結果どう向き合う

システムがはじき出すには上等な数値。(だと私は思っています。)

かと言って、全面的に信頼できるかというと私はNoです。

全面的に信頼というのは、このシステムがはじき出した結果に従順に取引をするということです。


システムのロジックを見る限り、私の中ではおおかた予測できること自体が予測通りですし、決定木はホワイトボックスなので中身の処理を見ても、思い描いたとおりでした。

ただ、ロジックを見ているからこそ、こういう時は予測しづらいだろうな、というのもわかります。


まだまだ、すべてを相場を網羅したシステムは作れません。

足りていないところはやはり人間の手で補う必要があると私は考えています。

なので、現状ではこのシステムがはじき出した解の中から自分も同意できる銘柄に買いを入れる、準裁量スタイルが適切かと思います。

つまり、システムと一緒に銘柄を選ぼうということです。


前回の記事でも言いましたが、将棋で一番強いのは人間でも機械でもありません。

人間と機械が力を合わせたフリースタイルです。

人間と機械が足りていないところをうまく補い合い、向き合っていくことが今の時代は適切なんだと思います。


もう少したてば、機械に全部任しちゃっていい時代が来ると思いますけどねっ。

終わり

【訂正】

検証を重ねると、だいたい51%〜54%あたりに収束していきました。

ちなみに似た相場は同じ結果になるという仮説も、検証を行ったところ同じ結果にはなっていなさそうでした。

詳しく検証していないのでなんとも言えませんが。


【続き】

doz13189.hatenablog.com

〜更新〜

株価予測のサービスをリリースしました。

doz13189.hatenablog.com