search
LoginSignup
6
Help us understand the problem. What are the problem?

posted at

updated at

AI(機械学習)Randam Forestで株価を予想するWinodwsアプリケーションの開発

概要

前回Pythonのscikit-learn Ramdam Forestを使った株価予想を行った。同じ手法で株価予想を行うアプリケーションを、いつも使いのC++Builderで開発して、より手軽に株価予想を行えるようにした。Pythonに比べて高速に株価計算が行えるようになった。開発したアプリケーションは、下記に置いているので、お試しください。
G-Chart ver1.00
screen-image.jpg

使い方

  1. WindowsのPCのみで動作します。ダウンロードしたgchart_v100.zipを適当なフォルダに展開。
  2. gchart.exeを起動 
  3. データ更新でデータ更新を実行
  4. 株価予想で株価を予想する銘柄を選択し計算実行
  5. 結果出力に選択した銘柄の明日の株価の動きが表示される。計算結果の詳しい解説は後章もしくは、ソフト添付のmanual.pdfに記載する。

C++Builder

C++Builderは、Bolandの時代から使っている。最近のC++BuilderはWindowsだけでなくMac,Android,iOSにも対応したクロスコンパイル機能までついている。今回は、最新のC++Builder10.3 Community Editionを使った。Community Editionは個人で趣味の範囲で利用する分には無償で利用できる。

株価予想のアルゴリズム

株価予想のアルゴリズムは、「AIを使った株価予想をPythonのscikit-learnライブラリRandam Forestで試してみた」で考察したのと同じ手法である。即ち、ターゲットの銘柄と1日遅れで動きが連動している銘柄を抽出し、それらの予想結果から多数決によって、ターゲットの銘柄の株価の動きを予想する。
1. 前日からの株価の動きを1:値下(3%以上) 2:値下(3%未満) 3:値上(3%未満) 4:値上(3%以上)で定義する
2. 全銘柄に対して、ターゲット銘柄の株価と前日の株価の動きを、最近20日分と100日分で集計した決定木を作成する。これを過去100日間分行って、株価の動きに対する的中率を求める。
3. 20日分,100日分それぞれの的中率の高い方から20銘柄をRandam Forestの投票権を持つ銘柄として選定する。これらの銘柄は、ターゲット銘柄から1日遅れで動きの連動率が高い銘柄となる。
4. 間近の株価の値を投入して選定した20銘柄それぞれの決定木でターゲット銘柄の株価を予想し、その多数決によって、ターゲット銘柄の予想値とする。

予想結果画面

予想結果の画面について解説する。
[銘柄]:
株価予想の計算を行ったターゲットの銘柄。括弧内は計算した最終の株価データのに日付。予想はこの次の日の株価予想値となる。
[最近20日分で予想]
最近20日分の株価の動きで決定木を作成した場合の予想値。
1: 値下(3%以上)  2:値下(3%以内)  3:値上(3%以内)  4:値上(3%以上)
括弧内の的中率は、過去(100日間)での同じ関連銘柄で予想した場合のそれぞれ20日、100日の決定木を使った場合の的中率。
表の銘柄は、個別の銘柄で決定木を作成した場合に、それぞれ過去20日、100日での決定木を使った場合の目標銘柄の予想値と過去(100日間)同じ方法で計算した場合の的中率を示す。20日決定木の的中率の高い20銘柄を選択して、多数決をとって目的銘柄の予想を出している。
[最近100日分での予想]
最近100日分の株価の動きで決定木を作成した場合の予想値
[グラフ]
グラフは、過去250日分の目的銘柄と表の選択された株価の動きを示す。横軸は、右側が新しい。目盛りは10日毎となっている。縦軸は、250日前の株価の値を基準とした株価の変動率を示している。上がプラス(上昇)で下がマイナス(下落)を示す。目盛りは1%毎になっている。緑が目的の銘柄で、青が表の選択された銘柄となる。

出力結果例の考察

上の予想結果の画面イメージ例では、6508 明電舎の2020/05/01の次の日の株価の動き予想している。最近20日分の株価の動きを基にした予想では、3:値上(3%未満)となっている。同じ20日分の条件で過去の予想を行った場合の的中率は65.3%となっている。決して低くはない。この時、予想の多数決の投票権を持つのは1326 SPDRゴールド以下表に示す20銘柄となっている。これらはターゲットの明電舎との関連性は深そうではないが1日遅れの株価の動きに連動性があるとの結果になっている。個別の的中率も67.3~65.3%と高い的中率の銘柄から構成されている。同じく過去100日分を基にした予想では、2:値下(3%未満)の予想となり予想が異なってきた。100日分での過去の的中率は61.2%となっている。ターゲット銘柄とRandamForestの候補となる株価の動きをグラフで確認してみると動きに連動性がある事も確認できる。

まとめ

AIの機械学習Randam Forestを使った株価予想のアプリケーションを開発した。銘柄、日によって変化するが概ね60%以上の的中率を出せているのではないかと思う。Pythonのように機械学習のライブラリがC++言語では充実していないので手作りの部分があったが、その分、データの読込み、株価予想のアルゴリズムに最適化でき計算時間が大幅に短縮できた。(Python:8時間→C++:5分)これは、コンパイル言語であった為かもしれない。課題としては、今回、20日,100日,20銘柄と固定値としていた個所が適切であったかは不明で、より最適化すれば的中率を更に向上でいるかもしれない。 

最後に

最後まで読んで頂いてありがとうございます。本稿で述べた株価予想ソフトG-Chartを強化した有償版を利用した株式投資法について、下記で紹介しています。
G-Chartを用いた株式投資法の紹介 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6
Help us understand the problem. What are the problem?