得屋(FP2級 × AIエンジニアのブログ)

FP資格を持つAIエンジニアならではの、お得情報をお届けします

MENU

株価予想AIの作り方 AIを使った株価予想編

f:id:mycrofton:20200926121817j:plain

目次

はじめに

本記事では、株価を予想するAI(人工知能)の作り方を紹介しています。

今回は、いよいよAIを使った株価予想について紹介します。

株価予想を行うためには、以下の過去記事で紹介しているプログラムやデータが必要になりますので、必要に応じて参照ください。

また、対象としている方は、プログラムに馴染みのない方を想定しています。詳しい方にとっては、説明に正確性を欠くと感じる部分もあるかと思いますが、なるべく平易な書き方にしたいと考えたためですので、ご容赦ください。

 

mycrofton.hatenablog.com

 

プログラミング

それでは、さっそくAIを使った株価予想を行いましょう。AIを使うためには、プログラムが必要になります。プログラムが苦手な方もいると思いますが、もう少しだけ頑張ってください。プログラムがわからない方向けに、プログラム全文も掲載しているので安心してください。

プログラムファイルを作成する

まずは、プログラムファイルを作成します。

株価データの収集用プログラムやAIの学習用プログラムを作成したフォルダと同じフォルダに、好きな名前のプログラムファイルを作成してください。(過去に作成したプログラムファイルとは別名にしてください)

ここでは、「predict_ai.py」というファイルを作成したこととして、以降説明していきます。

過去記事に記載のファイル名で作成していただいている場合、以下のようなファイルが生成されていることになります。

f:id:mycrofton:20201004144044j:plain

プログラミング

作成したプログラムファイルを開いて、以下のコードをコピー&ペーストしてください。

# 推論処理
from keras import layers
from keras import models
from keras import optimizers
from keras.callbacks import ModelCheckpoint
from keras.preprocessing import image
import matplotlib.pyplot as plt
import os
import math
import numpy as np
import glob

model = models.load_model('./data/chart.12.h5') #学習結果ファイルを指定する

for filename in glob.glob('./data/target/*.png'):
  img = image.load_img(filename, color_mode='grayscale', target_size=(256,256))
  data_infer = image.img_to_array(img)
  data_infer = np.expand_dims(data_infer, axis=0)
  data_infer = data_infer / 255.0
  if (model.predict(data_infer)[0] > 0.5): #0.5以上をUPと判定
      print('UP: ' + os.path.basename(filename))
  else:
      print('DOWN: ' + os.path.basename(filename))

プログラムを動かす前の準備

今回のプログラムは、一部ご使用の環境に合わせて変更していただく必要があります。また、予想対象となる日足チャートの画像を用意しておく必要があります。

どのような準備が必要になるのか、順番に説明していきます。

準備1:プログラムの修正

まずは、プログラム中の以下の箇所を修正する必要があります。

model = models.load_model('./data/chart.12.h5') #学習結果ファイルを指定する

この中の chart.12.h5 は、使用されている環境に合わせて変更します。このファイル、見覚えあるかもしれませんが、AIプログラミング編で学習させたAI本体のデータになります。自分の環境にあるファイル名へ変更してください。

たとえば、自分の環境にあるAI本体のファイル名が chart.01.h5 だった場合は、

model = models.load_model('./data/chart.01.h5') #学習結果ファイルを指定する

と変更する必要があります。

準備2:予想対象の銘柄に関する日足チャートの準備

AIで株価を予想するために、予想対象となる銘柄の日足チャート画像を用意してください。画像はpngフォーマットである必要があるので、jpgなど異なるフォーマットの場合は、ペイントなどのアプリを使ってpngとして保存しなおしてください。

画像ができたら、プログラムファイルが置いてあるフォルダにあるdataフォルダを開いてください。dataフォルダが開けたら、その中にtargetというフォルダを作成します。

そして、targetフォルダに用意したpngファイル(日足のローソク足チャート)を入れます。

これで準備はおしまいです。

プログラムを動かしてみよう(AIで株価を予想してみよう)

次は、いよいよAIで株価を予想してみます。

コマンドプロンプトを起動して、作業中のフォルダ(日足チャートを置いたtargetフォルダではありません)(プログラムファイルが置かれているフォルダです)に移動し、「python predict_ai.py」で実行できます。コマンドプロンプトの起動方法などがわからなければ、過去記事を参照してください。

実行すると、しばらく良くわからないメッセージが表示されるかもしれませんが、気にしなくてOKです。

株価の予想結果は、

UP : 画像ファイル名

DOWN : 画像ファイル名

という形式で表示されます。説明は不要かもしれませんが、UPと記載されているものは、ローソク足チャート画像が示す銘柄の株価が、ローソク足チャートの次営業日から5営業日後にかけて上がることを示しています。

一方、DOWNと記載されているものは、株価の下落傾向を予想しています。

以下は、私の環境で株価予想をした場合の結果です。ファイル名が1301.png、9997.pngは株価上昇が予想されています。一方、1332.pngと6463.pngは株価上昇は予想されませんでした。

お分かりの方もいるかもしれませんが、この例では、ファイル名(.pngを除く)は銘柄コードを示しています。したがって、以下の予想では、銘柄コード1301、9997の株については、株価上昇を予想し、銘柄コード1332、6436については、株価下落を予想しています。

f:id:mycrofton:20201004153505j:plain

この結果はあくまでも一例であることにご注意ください。実際の予想結果はAIの学習状態などによって大きく異なります。

少しだけ細かい話

実は、株価予想の結果において、DONW(株価下落)という表現は正確ではありません。今回ご紹介したAIは、ローソク足チャートで示される銘柄の今後の株価が5%以上の上げ幅となるかを学習しています。したがって、5%に届かないような上げ幅と考えた場合は、上記例でいうDOWNと分類しています。

この基準を変更したい場合は、AIの学習方法を変更する必要があります。興味のある方は、(機会があれば、記事にしたいと思いますが)ご自分でも調べてみてください。

次回に向けて

今回までで、一通り株価予想AIに関する説明はできました。

次回以降は、過去記事で予告したように、ご紹介してきたAIをより便利に使うためのトピックス・Tipsをご紹介していきたいと思います。