【DataRobot触ってみた】四季報データから株価騰落を予測できるか？

## はじめに

[Qiita夏祭り](https://qiita.com/summer-festival)に便乗して、トライアル版のDataRobot触ってみました！

## やりたいこと

とりあえず手元にあった四季報プロ500についている「全上場銘柄を大診断」データを使って、その後の約1か月（6/17 - 7/10）の騰落率を学習させてみます。ちなみに私は株式投資の知見はそれほど多くないので、そもそも問題設定に無理があるかもしれませんので、その辺はご容赦を。。

## データ

四季報プロ500を購入するとダウンロードできるデータを利用します。
データは以下の項目を持っています。

* 証券コード
* 社名
* 業種
* 業績予想変化率
* PER
* PBR
* 配当利回り
* 理論株価
* 理論株価修正余地
* 業績進捗率
* 進捗率四半期決算期
* 会社計画営業増益率
* 破綻危険度
* 株価日付
* 株価

このデータと、7/10時点の終値を以下のサイトから頂き、結合して騰落率を算出しています。（Excelで）
https://mujinzou.com/

また、会社の規模も関係しそうなので、売上高の情報を以下のサイトから頂き、追加しました。（Excelで）
20年の決算は6/17時点では出そろってないと思うので19年度のデータを使ってます。
https://irbank.net/download

## DataRobotへのアップロード

DataRobotのプロジェクト開始画面でローカルファイルを選択して、Excelのままアップロードできました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/7d2b2150-a6e7-0dd1-2ed8-b226a380fa03.png)

## データの確認、選択

最初、この画面が出てきて、え、ターゲット手打ちなの？ってびっくりしました。笑

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/9bc6fa8c-e92c-b775-8369-bd72864a7e48.png)

下にスクロールすると、特徴量の選択やターゲットの指定が出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/d312e1d9-da5c-03de-9e87-31b87a1d7497.png)

決算期が数値型になっていたので、カテゴリに型変換かけました。使い方あってるかな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/72287adb-85b3-a7c2-1861-df4705d9dac8.png)

騰落率自体はこんな感じです。（景気悪いですね。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/e7f5b6bf-6e52-faf1-cfac-e76229985bd9.png)

今回は問題を簡単にするために、全銘柄の騰落率の平均値に対して上回ったか、下回ったかという二値のターゲットを作って学習させました。
（最初は騰落率をターゲットにしていたのですが、散々な結果だったので。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/19256e16-74c0-3f41-1e81-69c4e78cbd8e.png)


学習に使いたい特徴量を選択して特徴量セットを作成します。7月10日時点の株価など未来の情報が含まれる列を外してます。なおDataRobotがEDAして推奨する特徴量セットを作ってくれます。便利！
ただ、情報の意味合いまでは解釈してくれない（未来の情報が含まれる列とか）のでそこは人手で管理が必要です。Excelの段階で綺麗にしていれば、DataRobotの推奨をそのまま使ってもよさそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/850444df-21cc-310f-f172-9122fdba60cb.png)

## 学習と評価

オートパイロットで開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/5b866d9b-e127-e883-d454-b1605ae4aef7.png)

学習が開始されます。右側のペインにあるワーカーの数がデフォルト2になっていたので、とりあえずmaxの8まで並列で頑張ってもらうことにしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/59af3478-7ed2-7d69-7f37-81597f8376af.png)

モデルの画面を眺めながら待ちます。
数分かかるので、待っている間に次の手（特徴やターゲットの見直し）を考えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/41c6ca33-2795-0f08-74d5-85c9c05fa90b.png)

結果が出ました。一番パフォーマンス良かったのはSVMでした。
とは言え、AUCがギリギリ0.7超えてるくらいで微妙なところ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/5b7528c4-2708-2b44-cc06-ff095f20740e.png)

特徴量毎の予実は、EDAで求めた有用度順に並んでいるそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/088f399f-1578-e6b9-8adb-f0efe4393b5d.png)

解説の特徴量のインパクトは、実際に作られたモデルでのターゲットとの相関が分かるようです。業績予想変化率が-100~0あたりのところでの株価の増減に対する影響を割とうまく捉えられているということかな？データ量が多いからかな。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141557/f2e9baf8-2914-c1ae-9c97-2aa964e1d8ea.png)

## まとめ
残念ながら（予想通り）いい結果は出ませんでした。PERなどがもっと強く相関すると面白いと思ったのですが。
今回は20年6月のデータでしか見ていないので市場環境変化の影響が強く出ている感はありますね。
もっと過去データも取ってきたり、より長期間の騰落率をターゲットにして学習させると、より良い予測モデルが出来るかもしれません。
特徴を絞って予測できるモデルが出来たら、会社情報の更新に合わせて未来の騰落率を予測できる。。かも？

DataRobotについては、初めて触りましたが、簡単で分かりやすいビジュアルだったのでスムーズに触れました。
DataRobotに学習をお任せしている間、自分はどう問題設定したり、データを工夫すればいいか考えることが出来たのは良かったですね。
Jupyterでやると問題設定、データの工夫、モデル開発、学習を色々見ないといけないので、DataRobotのお手軽さはなかなか便利に感じました！！
（お手軽なほうに流されてばっかだとモデル開発が上達しないので、頑張らないといけないのですが。。