AIで株価予想 (Pythonでディープラーニング)

2019-03-13
トピック: IT業界

数値計算プラットフォームでAIもできるMatLabが個人向けにこんなに安く売っていることに気付かなかったです... もっと早く気付いていれば... いつの間にHomeエディションなんてできていたのでしょう。昔は十数万のバージョンしかなかったので個人は無料の「R」とかで頑張っていたと思うのですが、1.6万円くらいでこれが使えるならみんなこっち選びますよね、というくらい素晴らしいソフト。深くやろうとするとこの分野はかなり難しいのですが、どうやら30日は無料体験できるようなので、とりあえず手短な題材としてシンプルな株価分析でもして使い勝手を久々に確かめてみますかね。

■フィッティング
遥か昔に私が作った学習用サンプルを動かしたらそのまま動作。いいですねえ。あまり覚えていないので学習し直しですけど、たしかこれはノイズのある周期関数に対して「フィッティング」という関数「類推」処理を実行してグラフ表示してみたところです。点が元の生データで、波形の方が類推したグラフ。答えが分かっているものに対してフィッテングすることで手法の正しさを確認しています。



■人口統計
昔私が学習用に作ったサンプル。人口統計からなんとなく将来予想してグラフ表示しています。



■株価近似
Webに転がっていた株価データ半年分を簡単なグラフで近似&予測してみましたが、流石に私が1時間くらいチョチョイと遊んだだけだと全然使い物にならないです。もうちょっとしっかり勉強しないといけない気がしてきました。何か良い「理論」があればいいんですけど。遊びならこれはこれで良いのですが、せっかくなので使い物になったら面白いのです。
青点:実際の株価。 赤線:近似したグラフ
データ:6754 アンリツ(株)



もう数時間いじって遊んでみました。
■青点:実際の過去の株価
■赤線:過去の株価の近似グラフ(左側)と将来予想グラフ(右側)。青点のデータだけを使って将来予測する、という想定です。
■黄色:未来の株価の答え
未来の赤グラフが黄色丸と一致していれば予想が正確、ってことになりますけど、さすがにいきなりぴったりにはならないです。元データが数学的に変な(例外)動きをしているデータですので近似したグラフにも変な髭が出て撹乱してますね。
そんな簡単に株価予想できたら凄いですよね... この分野は難しいですが、お遊びであればこの題材は難易度高くて面白いです。ひょっとしたら使えるものができてしまったら(そうそうないと思いますが)それはそれで使えますしね。
まあ、とりあえず今日の午後のお遊び&学習には良いネタです。
データ:6754 アンリツ(株)



株価分析に使えそうなグラフがだんだんと出てきました。
■右側の紫のグラフ:予想株価
■右側の黄色い丸:実際の将来株価
な〜んとなく似ていますね。パラメータ次第でうまくいったり間違ったり、と精度にばらつきはありますが、夕方より随分とマシになりました。チョチョイと作ってこの精度なら、かなりいいのではないでしょうか。
数学なんてここしばらく使っていないので忘れてしまっていたが試行錯誤することで少しづつ思い出してきましたよ。とは言いましても、これを出した「ガウス過程回帰」とかいう数式はまだ理解していません。私が凄いのではなくてMatLabの充実したドキュメントが素晴らしいのです。まあ、理解していなくてもとりあえず答えは出るんですけど、応用するためにはもうちょっと数学勉強し直さないといけないっぽいです。
もしうまく行ったら趣味で株価予想Webでも作ってみますかね?(笑)



本気でやるかどうかはわかりませんけどGoogleに早く認識してもらうように株価分析サイトをトップページだけ簡単に作成。こういうのは数ヶ月とか数年の気の長い話なのでとりあえずサイトを作っておくのが吉。意外に割と短めのドメインが空いていて取れました。
AI株価予想 - https://kabu2u.com

■AIのLSTM(long short-term memory network)
LSTM試してみました。
MatLab凄すぎます。(私はまだ数学の内容理解していないのに)サクサクこんなのが作れてしまいます。(Pythonでは試したことないですので比較はできません)
いまヨガ帰りで、寝る前の30分にチョチョイと調べて実験してから寝ようかなと思ったら悩まずサクッと作れてしまうMatLabやばすぎでしょう。
このLSTMというのは深層学習(ディープラーニング)を行うためのものです。いわゆるAIというやつですが、漫画に出てくるアトムのような凄いAIではなくてその実態はこの辺りの機械学習です。
コードはサンプルからそのまま取ってきただけですが、何回か繰り返すとその度に学習結果が違って、頭の良いAIの時と頭の悪いAIが出来上がる時がありますね。この添付イメージは割と成績が良さげな子です。後ろが学習中に出てくる画面で、前にあるグラフのForecastのところが予想。実際のグラフに似ていて凄すぎます。まあ、頭の悪い子が出来上がるときもあるので、結果が安定していないのは深層学習(ディープラーニング)の良いところでもあるし悪いところでもありますね。良い子が出来上がった時はなかなかびっくりすることになりそうです。明日以降に中で何やっているか細かく見ていきますかね。



前半分のデータで後ろ半分を予測してみます。流石に最後の方は誤差が大きいですが繋ぎ目のあたりはかなりの精度。AI凄い... これ、人間が勝てない気がします。



先日は1データ(終値のみ)の学習だったので終値だけでなく始値・高値・安値・終値・出来高の組み合わせでディープラーニングさせてみたけれども、あまり変わらない・・・ というか、私がどこかで間違えている可能性も大いにあるんです。ちゃんとは理解してないし。ディープラーニングの基礎理論ならともかく、こんなLSTM(long short-term memory network)なんて大層なアルゴリズムを理解しようとすると頭がところてんになりそう。
噂には聞いていたけれどもディープラーニングは学習にCPUパワーを大いに使うのでハードウェアのチップを何某か買わないといけないかも。今はノーパソなのでUSBのチップを物色してみますかね... グラフィックボードは挿せないので。



ほほー。私のなんちゃってAI君がいうには 1332 N の株価は現在812からしばらくヨコヨコだそうです。右上の赤線部分。2週間後の予想株価は822なのでたったの1%アップ。ということはここは買い場ではないですね。今持っているなら一旦売ってキャッシュに変える場面ですね。(信じないでください。ネタで書いてます。趣味でやっている、生まれたばかりの可愛い子供のAIちゃんですから。これを信じて買われても困ってしまいますし責任は取れません。)



昨夜から東証全銘柄をスキャン。過去360日(最大)の分析で1銘柄あたり約1分かかっています。Macのノーパソ Intel Core i7 を使用。現在1200ほど終わりましたが残り2400。統計を取ってみると10銘柄ほどが最大10%アップを期待できるようなので、おおよそ100銘柄に1つだけが上がる、とAIは判断しています。ただし、AIの予想にはブレがあるので同じ銘柄を何度も実行すると上がらない予想だったりしますので、ここから更に絞り込まれます。この結果だけを信じて機械的に買うほどまだAIを信用しきれていませんが、意外な銘柄が浮かび上がったりしていますし、自分で東証の全銘柄をチェックなんてできないので絞り込みに使うのはアリな感じです。ターゲットの3600銘柄から最初に30銘柄前後が候補になって、そこから更に絞り込んで10以下になるとすればいい線かなと。



外国為替(FX)もAI分析。ただし通貨ごとの分析なので使い物になるかどうかは不明。とりあえず観察します。FXは難しいですからね...



家のパソコンでAI株価分析(時間がかかる)をさせつつ午後は高尾山へ。今朝までに出た上昇期待上位銘柄はぼちぼちの成績(買ってはいない)ですが、まだばらつきがありますね。片っ端から単元買って下がるのをすぐに切って上がるのだけ持ち続ける手法もありかも。どれが上がるかなんて最終的にはわからないですし。

おみくじ「吉。ここまで色々と苦労が多いことでしたがようやく運が開いて心配事もなくなり物事も成功するときとなりました」
ですって。当たるかな〜?



ここ1週間、AIで絞り込んだ銘柄を実験的に買ってみました。
AI予想で30銘柄前後に絞り込んでから自分でチェックして10銘柄程度にまで絞り込み、そのうちチャートが良さそうなものをいくつか購入。
先週は地合いも良かったのでそれらの銘柄は「全体的に粘り強く、あまり下がらない。一部の銘柄が上昇」という、まずまずの結果。爆上げはないにせよ、損しなければとりあえずはOKです。全体としては1週間で数%アップで終了。実験としてはまずまず。
とは言っても、今日(月曜日)はNY市場につられて東京が暴落したので一部はそれに巻き込まれ、元に戻ってしまいました。さすがにAIと言っても暴落には巻き込まれますよね... 地合いの方が強いのは、当然と言えば当然。
今のところ銘柄単体でAI分析しているのでNY市場との関連は教えていないので、そういうところもAIに教え込む必要があると思いました。
関連を覚えさせるというよりはNY市場単体で予想して、夜に下がりそうならばあらかじめポジションを軽くする、という程度の対応でもいいのかもしれないですけど。
(この画像は買った銘柄とは関係ないです)



■Google TPU
納期3週間と書かれていましたが実際には10日ほどで到着。意外に早かったです。Matlabでは使えないので後ほどPythonで遊んでみましょうかね。



■Python初挑戦
Pythonは初めてなので、既にMatlabで解析済のデータを読み込んでグラフに表示してみました。Matlabの代替になり得ますね。Matlab買わなくて良いかも? Matlab試用期間中にPython移行できるならたぶん買わないですけどMatlabは使いやすいので買うかどうか悩むところです。AI以外にもできますしね。Google製のAIチップを使えるのはPythonだけでMatlabからは使えないのでどちらにせよPython化は必須ですが。
Pythonは他の言語ではあまり見ない不思議な文法というか言語の癖があって面白いというか微妙という感じもしますけど配列が使えるというメリットがあるのでその不思議な文法のデメリットも消される感じがします。まあ、慣れですかね。
あとはメインのAI部分を置き換える必要がありますけど、そこはまだです。



先日Matlabでもやったガウス過程回帰(Gaussian Process, GP)という解析をPythonに実装。Matlabの時はスルーしていたのですがパラメータによってかなり結果が異なる感じなのでとりあえず一番簡単なパラメータで実装。これは本題ではなくてAIが本題なのでこれはこのくらいでいいのです。使って数日ですけどぼちぼちPythonにも慣れてきました。
難点といえば実行速度がMatlabに比べてPythonが遅くて、解析をするのにも数秒待たされます。やっぱりMatlabは優秀ですね。Pythonは遅いというのが定番みたいですけど先日買ったAIチップを使えばAI解析は早い筈なのでPythonでも問題ない筈ですが。チップはAI専用なのでその他の処理が遅いのは仕方がないところです。



■TensorFlow
今日はTensorFlow2+Python3でAIの実装を試みましたがネット上の情報のほとんどがTensorFlow1でTensorFlow2用のサンプルがあまりなく、試行錯誤で何とかプロトタイプ的なところまでできたが出力される値が何だか変な感じで、正しい答えが出ていない。Matlabの時は1日でサクッと作れたがこちらはもうちょっとかかりそう。やっぱりMatlabは製品なだけあって使いやすいです。Pythonも何となく慣れてきたのでどうにかなりそうな感じではありますがそれぞれのライブラリで独自ルールや変換が必要なのが面倒なところ。
それはそうと、購入したGoogleのAI用TPUチップはどうやらRaspberry Piとのセットで使うのが良さそうなので以前買って放置していたRaspberry Piを再セットアップ中。意外な形で役に立ってくれそうです。Raspberry Pi は今までケースがなかったのですが長く使いそうなのでケースを購入しました。最初、久々に電源入れたら動かなくて、Micro SDカードを引き抜こうとしたら割れてしまって新たに購入することに。OSも再セットアップ。面倒ですが仕方がないです。



■株主の損益シミュレート
簡易的に株主の損益をシミュレートしてグラフ化。
上のグラフは実際の株価推移と近似式。真ん中のグラフが今回追加したもので、0より上が利益で下が損益。グラフが0より上だと平均して全ての株主が得をしていて下だと平均して損が出ているという想定のグラフです。誰が売り買いしたかなんてわからないので平均して全ての株主が取引していると仮定しているのですが、そんな想定でも意外にそれっぽいグラフが出てきています。0より下だとみんな損していて上だと得したなと思えばOK。
これを見ると2018年11月前後にかけて株価が下がって損を出している人が増えて今は落ち着いている状況だというのがわかります。ただ、いま買うべきかどうかはこれだと分からないですね。むしろ、こういうのは買ってはいけない指標として機能するような気がします。2018年4月には大して株価変動していないのにリバウンドで利益を出した人がいましたが、それ意外は損が多いですね。
これはAIとか機械学習ではなくて、単にシミュレートしただけです。でも、意外にこういうのが地味に役立つのかもしれないです。



■株主の含み益シミュレート
更に解析。株主の含み益をシミュレートしてグラフ表示。だんだんそれっぽくなってきました。

この新しいグラフで、例えば以下のようなことに気付きます。
■何倍にも株価上がってるのに最後の最後まで(株主全員の平均的な)含み益が意外に上がっていない(①のとこ)。
■最後の株価急落時(②のとこ) でなぜか含み益がそれほど減っていない(③のとこ)。これは、しっかりと上で利益確定しているような雰囲気。
■最後の株価急落時に出来高が増大(④のとこ)し、それと同時に含み益が増大している(⑤のとこ)。ってことは、イナゴがぶん投げたところを大口が拾ってリバウンドで利益出すのかもしれない。
今まで見えていなかったものが見えてくる。解析って面白いです。



今度はこの銘柄を分析。ニュースでも大騒ぎしていた某社ですが、株価がダダ下がりです(1番)。
株価が下がると同時に含み益(推定)もどんどん下がります(2番)。最後に底をつけてからリバウンド(3番)しました。リバウンドをすることで含み益は増えている(4番)のですが、その一方で、株主の損益がマイナス(5番。中央赤線よりも下がマイナス)ということは最後のリバウンドの時に一時的に含み益は増えたものの利益確定はできずに結局は損切りをした人が多かった、と読み取れます。あくまでもシミュレーション上での話ですけど。
この1銘柄が全てを示しているとは言い切れませんが、「リバウンド狙いをしても損する可能性の方が高い」ということを示唆しているのかもしれないです。リバウンドしても平均的な株主は損する、ということがこのグラフにはっきりと出ています。
株価が下がっている銘柄のリバウンド狙いは、これをみる限り、手を出さないのが良いのかもしれません。
<これは私の勝手な解釈であって一般的な解釈とは異なっている可能性が大いにありますので注意です。私は株上手くないですからね>



■移動平均線
移動平均線(9日,25日,75日)の上下状態による売買シグナルを追加。
これは「移動平均線 究極の読み方・使い方」っていう教科書っぽいのに載ってたアルゴリズムをそのまま実装。
シグナルの上のとこあたりにある色が以下を示しています。
・濃い赤は強い買いシグナル
・濃い緑は強い売りシグナル
中間色はその途中。

教科書そのものではあるけれど、シグナルが出てすぐにその通りにすれば多少は利益が出そうな感じ。
基本って重要ですね...



■MACD
解析の定番(?)、MACD(MACDそのもの+MACDの平均+ヒストグラム)を表示。さらには現在のステージをラベルで表示。いつステージが切り替わったかもわかるように線入れも。



■RCI
RCIという株式指標を追加。普通のRCIだと短期線と長期線の2つだがMACDのシグナルと同じようなヒストグラム(棒グラフ)を追加してみやすくしました(RCIのエリアにある緑の棒グラフがそれです)。普通の株式ツールにこの表示がないのが不思議なくらい良い感じ。
更には、RCIとMACDの両方を見比べるのが面倒なので両方ともプラスの場合にその間に赤印、両方ともマイナスの時に緑印をつけてわかりやすくシグナル表示。
こうして見ると移動平均線のシグナル(RCIの上)と今回追加したシグナル(RCIとMACDの間にあるシグナル)の違いが見比べられて面白いです。
長期的な解析と短期的な解析で食い違うということですね。なかなか面白いです。今日追加したシグナルはそこそこ使えそうな雰囲気。



■短期の値動きグラフ
元々の株価から移動平均線(トレンド)分を引いて短期の値動きだけをグラフ表示。これにより、トレンドに惑わされにくくなって短期の値動きが見やすくなります。
(何日の移動平均にするかでグラフが変わるので、なるべく横にまっすぐ並ぶ数値をなんとなく自動で判別して表示。)
これは例えば元の株価から89日の移動平均線の数値を抜いた差分のグラフ。
元々は時系列解析をしようとしていたのだけれども、解析してみたところ、あまり良い周期的な特徴が出てこなかったのでとりあえずその途中で出したグラフだけ表示。これはこれで意外に使えそうな感じです。



■ドンチャンズルール
ドンチャンズルールとして知られている「4週間のうちの高値を超えたら買い。安値を下回ったら売り」を可視化し、実際に最終日の終値が閾値を超えていたらラベル表示してあげるように変更。とても見やすくなりました。
色々とルールができてきたけれども、どのルールが本当に有効か確かめないとシグナルだらけで逆に使い辛くなってきてしまったかも。
そのうちシミュレーションして確かめてみますかね...



■シミュレーション
シミュレーションして、その日の終値で買ったらその後 5%プラス/マイナスのどちらに先に到達するか赤色/緑色で表示。
これで、大体の「どこで買ったほうがいいか」「どこで売ったらいいか」の目安がつけやすくなりました。
どうやら、RCIのヒストグラム(棒線グラフ)がぴょこんと出ているかどうかがシグナルとして使えそうな感じです。
ちなみに、先日から気になっているこの銘柄。女性なら誰でも知っているあのエステを買収した元3次元グラフィックスLSIが祖業の某社、と言えば知っている人は知っているかもしれませんが、株価がめちゃくちゃオカシイです。売上500億で営業赤字、時価総額34億円。いくら赤字とは言えキャッシュフローは大幅黒字で、M&Aの「のれん代」が5年間会計上重いけれどもあと数年でそれも終わるし、今後上向きの予感しかないです。売上500億円で黒字50億円まで回復した時に時価総額34億円なんてあり得なくて少なくとも黒字の数字までは上がるだろうし普通は売上と同等くらいあってもおかしくないので上限は時価総額500億円だとすると、まさかのテンバガー候補です。そこまで行かなくても黒字化が見えればここから倍は期待できます。大口の仕掛けで更にガクンと下げる可能性はありますけどね。既に株価がオカシイのでここから更に半分になっても驚かないです。実際、3月末からウォッチして何度か in/out していますが、3月末の優待(エステ券)狙いの後の下げが酷い(苦笑) しかもその後、大口の投げが来て1割一気に下げるし。ここからまた下げるかもしれないけど来月には本決算だし、エステは夏にこそ女性が盛り上がる銘柄(肌露出するのでエステに行きたくなる)ですしね。ここから半年が面白そうな銘柄です。
→ と思ったら、その後調べたらどうやら売上は会計上のまやかしっぽいです。ちょっと胡散臭い業績。



■Matlabと同等に追いつく
AI (ディープラーニング) を Python + TensorFlow(Ver2)で実装。Matlabで行っていたのとほぼ同じ処理です。
グラフでの右中央にある緑点がAIで予想した将来株価になります。Matlabと結果はそこそこ似ているので基本は一緒な感じです。
最初はTensorFlow(Ver2)独特の書き方の癖が掴めなくて作るのが微妙でしたがサンプルを見つけてからはスムーズに作れました。まだGoogle TPUチップは使っていなくてMacのCPUで実行すると流石に遅いですけど、これをGoogle TPUチップ使ってどのくらい速くなりますかね。それはまた後日。
こんな簡単なものですけど、これで私もAIエンジニアの端くれに仲間入りですかね(苦笑)



■FX
FX(外国為替USD)も考慮して株価予想するように改造。昨日までは該当の銘柄の株価だけ(1変数)でしたが株価とUSD外国為替(2変数)になりました。
でも、結果はパッと見た目あまり変わらない... 検証が必要っぽいです。あまり相関関係ないのかも。東証1部の大型株ならあるかもしれないですけど。もうちょっと他の要素も入れてみますかね。



続いて「株価、出来高、USD外国為替(FX)」の3変数で分析。
1変数→2変数の改造ができてしまっているので3変数にするのはあっという間。
まあ、見た目はさほど変わらないです。精度はどうですかね。
やっぱNYダウとか入れたほうがいいのかな。



■Google TPUはLSTM未対応でした
Google TPUチップ(USB)をRaspberry Piで動かそうと挑戦していましたが私のやりたいLSTM(RNN)は未対応で、Classification(分類)等しか対応していないと判明。やれやれという感じですが、勉強になったのでまあいいかな。どーりでチップが安いわけです。こんな中途半端なおもちゃでも売れるなんてさすがGoogle。動体認識などの特定用途には良さそうですけど。

・TensorFlowのライブラリを入れるだけで30分とか1時間とか平気で待たされた。Raspberry Piめちゃくちゃ遅い。
・標準ではTensorFlow Ver1系で、Ver2はソースからビルドしないといけないようだったのでビルド環境を作ろうとするがBazelとか言うツールをビルドするのに24時間以上かかった上に最終的にはBazel最新版は対応していないから再度古いBazelをビルドし直して二度手間。それでもTensorFlow Ver2はうまく動かない。やれやれ。Raspberry Pi標準OSで失敗したのでUbuntuに入れ替えて試しても同じ。二度手間だが再度元のOSに戻した。
・Raspberry PiはCPUがArmだからGoogle TPUで標準で用意されているライブラリやDockerがそのまま動かなくてRaspberry Pi用のものに限られるのが使い辛い。
・OS標準のPythonがVer3.5だったのでまず3.7をソースからビルドしたがTenaorFlowがサポート外っぽいので3.6を入れたがあまり変わらないので標準の3.5に戻したり。
・ライブラリが問題かもと思っていくつかソースからビルドしたがそれでも動かない。
・結局、Keras経由でTensorFlowを使う分にはVer1もVer2もさほど変わらないという結論に至ってMacではどちらのバージョンでも動作することを確認。
・Google TPUはそれ自体で「一からのトレーニング」は対応していなくて「再トレーニング」しか対応しておらず、モデルをCPUで作ってから特殊な変換をかけてクラウド上のページで更に変換かけてようやく使えることがわかったが、この変換が私の使いたいLSTM/RNN に対応していないと判明。やれやれ。

安いPCとNVIDIAのGPUのセット買うか、あるいは今あるPCで我慢するかだなあ...

■AI株価分析サイト作成
https://kabu2u.com
簡単ではありますが株価AI分析サイトを更新。ボラティリティが高い銘柄から少しづつ載せていきます。どの程度細かく載せるべきかもよくわからないのでとりあえずは分析後2週間経った古いデータのみ掲載。未来予想はまだ載せません。未来予想載せてクレームされても面倒ですし、将来的に精度が高くなってきたら未来予想は有料化してもいいのかもしれないので。どちらにせよまだそこまでいい精度は出ていないので、まずはこのくらいのスタートがいいところかなと。

■エリオット波動分析
エリオット波動分析にチャレンジ中。(エリオット波動が何なのかはググってください)
実際の波形から何段目の波が来ているか判定させようとしたがなかなか難しそうなので方向転換。
エリオット波動をシミュレーションして、シミュレーション結果をAIに覚え込ませてから予想しようかなと。
まずフィボナッチ数列を交互にプラスマイナスさせてグラフ表示したのが左上の図だが、そのままだとマイナス値(株価にマイナスはあり得ない)が出てきてしまうので全体的にプラスになるように直線的に持ち上げたのが右上の図。う〜ん。何かちょっとチガウ。直線的に持ち上げただけではなく二次曲線で持ち上げてあげたのが左下。これはぼちぼちそれっぽいが、何か違う感じ。でも、実際の株価も訳わからない動きばかりしているので、これはこのくらいで十分なのかもしれないです。
とりあえずグラフ描けたので、これを元にダミーの株価を作り出して、更にはAI分析。そうして出したグラフが右下。
こうしてAIに覚えさせたはいいけれども実際の予想に使ってどのくらいの精度が出るかはまだこれから。



■AI解析用の専用PC構築
ノーパソ(サブPC)にUbuntu Linuxを入れました。もともとWindowsが入っていたのですがAI解析をずっと走らせてると数時間おきにハングアップしてしまって解析が滞るので仕方なくLinux Ubuntuを入れたらめちゃくちゃ快適になったのです。Linuxの快適さがWindowsを追い抜く時代が来始めたのかもしれません。最近のWindowsは不安定だし遅いですし、自分で自分の首を絞めている気がします。オフィス系はWORD/Excelが必要なのでWindowsになってしまうのでしょうが、それ以外ならもはやWindowsはいらない時代になりつつありますね・・・。今から作るのならばWeb化を基本にしてWord/Excel/PowerPoint不要にしてしまえばWindowsがいらなくなりそうです。Microsoftは基本的に好きなのですがそれでも最近のWindowsの不安定さには困り果ててしまっていました。実行速度もLinux上の方が早いですしね。Google TPUチップ(USB)も普通に使えました。



■特徴量として抽出して解析
人々が意識していそうな範囲を特徴量として抽出して解析中。銘柄依存ですがぼちぼち良い精度が出ることもあります。
ディープラーニングは結局は頭脳のニューロンの動きを模倣したものなので、入力として特徴量をあらかじめ分解してあげることで精度が上がる、というのは理屈にかなっています。ただ、そうして特化してしまうとその特徴量と無関係の銘柄で精度がガタ落ちですね。株価分析はもともと難しいので、使える条件があるだけでも良しとすべきなのかもしれないですが。
その特徴量が意味をなしているのであればディープラーニング中にどんどん誤差が減っていって収束しますが、なかなか収束しないのであれば特徴量の値にバグがあるか、あるいは、そもそもその特徴量には意味がない(!)のかもしれません。この後者の気付きは斬新で、株の世界で一般的に「当然」と思われていた理論が実は意味がない、ということをディープラーニングが暴き出しているのかもしれません。例えば短期移動平均と長期のクロスがGC(ゴールデンクロス)が買い時なんて言われていますし、MACDのGCも似たようなことを言われていますが、実際、そこに意味はない(!)のかもしれない、というのが、「もしかしたら」のディープラーニング解析結果です。続きはまた明日。



■トレンドフォロー
テクニカル分析は精度が悪そうなので方向転換して、とにかくトレンドをフォローするようなAIを組んでみました。こうなると急落とか急騰に弱いのは仕方がないですが、トレンドフォローに関しては今までよりも割と良好な結果が得られましたのでこれはこれでありかなと。太い赤線がAI予想です。機械なのだから本来こういう使い方が向いているのかもしれないです。人間だと飽きてしまうようなトレンドフォローですが機械に淡々と作業させればいいのですからね。
テクニカル分析では入力値を加工して色々工夫して試しましたが、このトレンドフォローはアルゴリズム的にはとてもシンプルです。でも、パラメータの組み合わせが微妙だとうまく動かなかったりするので、アルゴリズムはシンプルだが最適点を見つけるのが難しいような課題こそがディープラーニングに向いているのかもしれないです。



■AI株価予想サイト初期バージョン
AI株価予想 - https://kabu2u.com
初期バージョン完成。あとはモデルを見直したりもっとマシンパワー使って深く解析したりはできますが、費用対効果を考えればとりあえずこのあたりが一旦は完成の線引きとしては良さそうなのです。アイデアとしては色々とまだまだ試すネタは多いですけどね。3月中旬からMatlabで遊び始めてからPython+Tensorflowに移行したりして、2ヶ月半で作ったにしてはとりあえず上出来です。1ヶ月は色々と実験。もう1ヶ月半はサイト向けや様々な改造。精度の方はまだまだですが、解析は今は時間優先で途中で打ち切っているのでこれから時間をかけるごとにどこまで精度が上がるかもこれから見てゆきます。精度が足りなければモデルをもっと大きくしてみたり、といった、時間のかかりそうな修正はこれから気長に行いますが、基本的なところは出来上がった感じなのです。今は表示があまりにもシンプルなので、その辺りも少しづつ追加予定。

■サポート線追加
予想日の翌日初値で購入する仮定でサポート線の表示を追加。ちょっと見やすくなりました。



■ローソク足
終値の折れ線グラフから普通のローソク足に変更。やっぱりこうでなくちゃそれっぽくないですね。



■エアトレード
エアトレードを載せてみました。これを見ると私はもっと儲かっていていい筈だが機械的にトレードできずに感情入るから成績があまりよろしくないのかもしれない・・・

■アルゴ見直し
エアトレードのアルゴを見直し。トップページに全銘柄のエアトレ結果を掲載。

■パーフェクトオーダーでのエアトレード
短中長期線に基づいて俗にパーフェクトオーダーと呼ばれている条件でエアトレードしてみたところ、結果は良くありませんでした。今の地合いが悪いからなのか、それとも、テクニカル解析と似ていて後付けの理由でしかなくて都市伝説なのかもしれません。
損益平均+0.5% 累積+0.6%

■アルゴ比較
AI予想で上向きと出た後、翌日の初値が前日終値より数%下がったら買うというアルゴリズムと前日終値以上なら買うというアルゴリズムをシミュレーション比較。人間的感覚だと「安く買う」前者の方が好成績っぽい印象もありますが、実際には後者の勝利。株価というのは上がれば上がり続けるし下がれば下がり続ける傾向があるのでこの結果も理解できます。 損益平均それぞれ +2.0%と +0.9% なので誤差かもしれませんけど。

■エアトレード計算間違い
エアトレードの計算間違っていました。はい。どうも結果が良すぎると思ったのですよね。新たな結果は以下。マイナス1%前後。
今年に入ってからの地合いがとても悪いのにも関わらずマイナス1%の損益ということは頑張っていると見ることもできますけど。地合いが回復したらプラスになる・・・ と思いたいところ。

エアトレード1 [対象全銘柄平均] 損益: +0.1%(加重平均,直近重視) -0.1%(平均, 全期間) 累積-1.3%(全期間)
エアトレード2 [対象全銘柄平均] 損益: -0.8%(加重平均,直近重視) -0.7%(平均, 全期間) 累積-1.5%(全期間)
エアトレード3 [対象全銘柄平均] 損益: -0.8%(加重平均,直近重視) -0.7%(平均, 全期間) 累積-1.6%(全期間)
エアトレード4 [対象全銘柄平均] 損益: -0.8%(加重平均,直近重視) -0.7%(平均, 全期間) 累積-2.2%(全期間)
エアトレード5 [対象全銘柄平均] 損益: -0.1%(加重平均,直近重視) -0.1%(平均, 全期間) 累積-0.8%(全期間)

■やっぱり地合いは重要
今日の地合いは良かったのでプラスに回復。地合い関係なくプラスになるように改造しないと。

エアトレード1 [対象全銘柄平均] 損益: +0.5%(加重平均,直近重視) +0.1%(平均, 全期間) 累積-0.0%(全期間)
エアトレード2 [対象全銘柄平均] 損益: +0.4%(加重平均,直近重視) +0.2%(平均, 全期間) 累積-0.1%(全期間)
エアトレード3 [対象全銘柄平均] 損益: +0.1%(加重平均,直近重視) -0.0%(平均, 全期間) 累積-0.5%(全期間)
エアトレード4 [対象全銘柄平均] 損益: +0.4%(加重平均,直近重視) +0.2%(平均, 全期間) 累積-0.0%(全期間)
エアトレード5 [対象全銘柄平均] 損益: -0.3%(加重平均,直近重視) -0.4%(平均, 全期間) 累積-1.4%(全期間)

■AIはやっぱりブラックボックス
んとな〜くそれっぽい予想も目につくようになりましたが、明らかにおかしな結果が出ることも。でも、人間(私)がおかしいと思っていても実際の株価は更に理解不能なので、もはや理解の域を超えているといえばそうかもしれないです。AIというかディープラーニングは途中結果がブラックボックスでわからないのが難点です。どうしてこんな結果が出ているのか説明に苦しみます。基本的なロジックはあるので一応説明はつくといえばつくのですが細かく説明することはAI的には難しいのです。ですので、結果を現実と比べてみて当たっているかどうかが重要になります。どうも、上下の方向感はそれとなく出ているのですが「いつ」上がる、「いつ」下がるか、というタイミングが弱い感じです。方向感だけAI結果を見て、タイミングは人間が調整する方がいいのかも?

それにしても、こういうの作っていると、会社で作ると「お前だけの成果じゃないだろう」とか言って成果泥棒や成果の分け前をねだってくる寄生虫とか、色々とケチをつけて「お前だけの成果じゃないだろう」とか言って私の貢献を貶めようとする、足を引っ張る人がわらわらと虫のように湧き出てきていつもいつも成果を貶められてきたのですが、1人でやっていると他に誰もいないし外注で誰にも頼んでいないから全部自分が作ったものは明らかだし足を引っ張る人や成果泥棒や成果の分け前をねだってくる人はもちろんいないのでスッキリしていて良いです。会社だと、同じものを1人で作るより同じものを10人で大騒ぎして作った方が遥かに評価が高いという矛盾があります。費用対効果を考えたら1人で作った方が10倍の費用対効果があるのに10倍の費用をかけて同じものを作った方が評価が高くなるという矛盾。ITをよく知らない上司には1人で作れるというのが理解できないのでしょうね。ITのことがわからないから、なんとなく壮大な風呂敷を広げたり自信満々な人を簡単に信用してしまう。ITのことがわからないから成果よりも人数で判断する。そういう会社は世界の競争に取り残されるのかもしれないです。IT技術者もそんな会社には長居しないですよね。そんな会社ばかりではないと思いたいですけど。結局、上が技術や成果のことをよく分からないと人の数で見るのでしょうね。未だにIT業界は「人月」の社会ですし、受注開発というのは効率的に作れば儲かるのではなくてITは知らないがお金を持っているお客に対して大騒ぎして盛大に作る「儀式」をした方が儲かるという世界です。成果で支払われるなんてのはあり得ないです。ですから、私は受注開発なんてのは好きではなくて、自分で事業をして自分のためにITを活用するような会社や個人しか基本的に信用しないです。まあ、ちゃんとした成果主義ばかりしていたらかなりの人が失業かもしれないので、無駄ばかりのIT業界も人が食うという点に関しては一躍買っているのかもしれないですけど。



■エアトレード監視中
エアトレード4の直近平均が+4.3%へ。監視銘柄も300突破。単なる誤差あるいは運の良さかもしれないのでまだまだ様子見。
AIモデルの訓練はもちろん継続中。細かいところを少しづつ連日直しています。



■5勝1敗
先日の分析結果を元にしたエアトレードは5勝1敗。悪くないです。エアトレなので実際には買っていないですけどね。



同日、更にぶっ飛んでました。わお。エアトレですけどね。



■OCR
買わないですけど伝説のIPOになりそうなsansan。赤字上場で売上しょぼいのに時価総額が1200億円というワケワカメな上場。
Sansan配当利回りを楽観的な前提で素人計算。本当に社長が言う通り伸びればの話です。モバイル決済のように戦国時代に突入したらS安連続確実の株価水準かなと。技術的にはすぐ真似できるしあとはマーケティングの問題。大手がどう出るか次第。この利益率見たら入ってくる気も。



Sansanって名刺をOCRして読み取るだけでしょ。こんなんで上場して大儲けできるんだ。真っ先にやってマーケティングで独占すれば大儲けってのはAmazonと似てるね。流行りのAI文字スキャンを作って遊んでみようかな。んでSansan互換って言って丸ごと顧客奪う(苦笑)ってのはやりすぎか。とりあえずフォントの文字列を画像から類推するアプリでも作ってみますかね。

そんなこんなでSansanで記事を検索してみたところ、100%精度じゃないと普及しないという、日本あるあるネタ。意外に面倒そう。だから差別化になるのかもしれないですが世界の人はそんな精度求めてない気もします。
そもそも名刺なんて消える気もします。

GoogleのオープンソースでOCRあるようなのでそのうち試してみるかもしれません。

■その後
AIモデル訓練は連日続けて、細かな微調整しつつサイト継続中。地合いの悪さには勝てず、なかなか運用成績は厳しいです。地合い良ければ1%前後ですが地合いが悪いとマイナスです。地合いが良い時だけすればいいのかもしれません。そのまま使うのは厳しいですが、自分で全銘柄スキャンするのは辛いのである程度の絞り込みの手法として用いるのはアリな気がします。



作成期間:
2019年3月中旬 Matlabダウンロードして実験開始
4月初旬 Python初挑戦
4月末 AI分析サイト初期バージョン完成
5月末 AI分析サイトほぼ完成
その後、モデルは専用PCで常時トレーニング。微調整は随時



トピック: IT業界