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

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

MENU

株価予想AIの作り方 データ準備編 株価データの収集~その3

f:id:mycrofton:20200912101142j:plain

目次

はじめに

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

今回は、AIを作るために必要なデータの準備方法(その3)に関する紹介です。

必要に応じて過去記事も参照いただけると幸いです。

株価データからローソク足チャートを作る

過去の株価データから株価チャートの1種であるローソク足チャートを作る方法を紹介します。

過去の株価データは予め集めていることが前提になります。過去の株価データの集め方については、過去記事に記載しているので興味のある方は、ご確認ください。

 

mycrofton.hatenablog.com

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

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

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

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

プログラミング

作成したプログラムファイルを開いて、以下のコードをコピー&ペーストしてください。プログラムファイルの作成方法など分からない方は、過去記事を参照ください。

import pandas as pd
import mplfinance as mpf
import io

# 指定されたcsvファイルを読み込み
def load_csv(code):
    return pd.read_csv('./data/csv/' + str(code) + '.csv', index_col=0, parse_dates=True)

# 指定された株価データを使ってローソク足チャート(+移動平均線+出来高)を生成
def draw_chart(code):
    data_range = 50 #チャートにする営業日の範囲(50営業日)
    data = load_csv(code)
    
    data_num = len(data)
    create_num = data_num - data_range - 5 #5営業日後が存在するか確認するため
    if create_num <= 0: #5営業日後が存在しない場合はチャートを作らない
        return
    for i in range(create_num):
        # 指定範囲の翌営業日の株価が5営業日後に上昇しているか判定
        open_value = data.iat[i+data_range, 0] #チャートの範囲はi~i+data_range-1なので翌営業日はi+data_range
        close_value = data.iat[i+data_range+4, 3] #5営業日後はi+data_range+4
        ch_rate = close_value / open_value
        # 上昇or下落で格納するフォルダを分離
        if ch_rate > 1.05: #5%上昇する場合は上昇と判定
            filename = './data/chart/up/' + str(code) + '_' + str(i) + '.png'
        else:
            filename = './data/chart/down/' + str(code) + '_' + str(i) + '.png'
        mpf.plot(data[i:i+data_range], type='candle', volume=True, mav=(5, 25), savefig=filename)
        
# main
def main():
    codes = [9997]
    for index in range(len(codes)):
        draw_chart(codes[index])

if __name__ == '__main__':
    main()

プログラムを動かしてみる

プログラミングが終わったら、さっそくプログラムを動かしてみましょう。コマンドプロンプトを起動して、「python createchart.py」と入力で実行できます。

どうでしょうか。過去記事を読んでいただいている方は、お馴染みかもしれませんが、おそらく変なメッセージが表示されていると思います。

プログラムを動かすために必要な準備が足りていないためです。

それでは、追加の準備をしていきましょう。コマンドプロンプトで「pip install mplfinance」と入力します。

f:id:mycrofton:20200921152925j:plain

プログラムに必要な追加情報のインストールが始まります。少し時間がかかるかもしれませんが、コマンドプロンプトに文字が入力できるようになるまで待ってください。

次に、プログラムが作ったチャートの画像ファイルを保存するためのフォルダを作ります。コマンドプロンプトに「mkdir data\chart\up」と入力してください。続いて、「mkdir data\chart\down」と入力してください。

f:id:mycrofton:20200921153915j:plain

追加準備は以上で終了です。

それでは、もう一度プログラムを実行してみてください。

python createchart.py」と入力します。

何も表示されなければ正しくプログラムが実行されました。

ここで注意点があります。プログラムの実行には数分間(場合によっては十数分)かかる場合があります。プログラムが正しく動作していなと勘違いしやすいので注意してください。

プログラムの実行に時間がかかる理由は、プログラムで作るローソク足チャートの数がとてもたくさんになる場合があるためです。

実行したプログラムは、過去の株価データから、50営業日分のローソク足チャートを作ります。50営業日の起点は、過去の株価データに含まれる一番古い(昔の)日付です。つぎに、一番古い日付の次営業日を起点にチャートを作る、次は一番古い日付の次々営業日を起点にチャートを作る…ということを繰り返します。

たとえば、2010年1月4日から本日までの株価データを持っていた場合、

・2010年1月4日から50営業日のチャート

・2010年1月5日から50営業日のチャート

・…

(2010年1月4日が営業日か未確認です。あくまでも説明のための一例ですのでご了承ください)

というようにローソク足チャートを作り続けます。

プログラム実行結果を確認してみる

プログラムの実行が終わったら、作られたローソク足チャートを確認してみましょう。

チャートの画像ファイルを保存したフォルダを開いてください。今回は保存フォルダとして、「data\chart\up」と「data\chart\down」というフォルダを作ったので、2つ開いてみましょう。

開いたフォルダには、たくさんの画像ファイル(たとえば、9997_0.png)が保存されていると思います。

f:id:mycrofton:20200921155442p:plain

ダブルクリックして開いてみましょう。ローソク足チャートだということがわかると思います。ローソク足チャートに25日移動平均線と5日移動平均線出来高も描画されています。

ここで、データ保存用の2つのフォルダについても説明しておきます。

「up」というフォルダには、保存されているローソク足チャートが示す営業日後に株価がアップしているケースが保存されています。「down」の方は、ローソク足チャートの示す営業日後に株価が下落しているケースです。

後日紹介するAIは、ローソク足チャートを見て、ローソク足チャートの示す営業日後に株価が騰がるか下がるかを勉強していきます。今回作った2つのフォルダ(upとdown)は、AIが勉強する際の正解(答え)として使えるように作ったデータになります。

複数銘柄のローソク足チャートも作ってみよう

プログラムを使ってローソク足チャートが作れるようになりました。でも、1つの銘柄だけですよね。

株価データの取得でも同様でしたが、複数銘柄に対してローソク足チャートを作ることができます。

方法は、株価データを取得した際と同じです。詳細は割愛しますので、忘れてしまった・確認したいという方は、以下の過去記事を参照ください。

 

mycrofton.hatenablog.com

 

非常に簡単に記載すると、プログラム中の以下の部分で、証券コードを変更や追加することで、複数銘柄のローソク足チャートを作ることができます。

 codes = [9997]

 たとえば、ソニー株式会社(証券コード:6758)とイオン株式会社証券コード:8267)のローソク足チャートを作りたい場合は、

codes = [6758, 8267]

と変更して、プログラムを実行するだけです。

繰り返しの注意になりますが、プログラム実行には時間がかかることが多いです。複数の証券コードを指定すると、それだけ時間も増えるので注意してください。数十の銘柄コードを指定した場合は、半日程度かかることも稀ではありません。

また、ローソク足チャートが作れるのは、過去記事で紹介した過去の株価データが存在する場合のみです。過去の株価データを取得できていない方は、過去の株価データを取得してからローソク足チャートを作ってみてください。

次回に向けて

今回までで、AIの勉強に必要なデータを集めることができました。いよいよ次回はAIを作っていく方法を紹介していきたいと思います。