AIを使って株価を予想するプログラム

直近3日分の終値を与えて、翌日の株価を予想するAIをPython(Keras)を使って書いてみた。最初に書いておくと精度は期待できない。ただ、逆に精度が滅茶苦茶悪いAIを作ることができれば、その反対売買をすることで利益を上げることができるので、どちらかというと精度が極端に低いAIを作ることができないかとも考えている。

プログラム(モデル作成)

import pandas as pd
import os

# データ取得
tmp = pd.read_csv('1570_2018.csv', header=None)

# 行数を取得
size = len(tmp)
print(size)

X_list = list()
Y_list = list()

for i in range(size):
    if (i > 3):
        day_price = tmp[4][i]
        day_before_1 = tmp[4][i-1]
        day_before_2 = tmp[4][i-2]
        day_before_3 = tmp[4][i-3]
        if (day_price - day_before_1 > 0):
            flag = 1
        else:
            flag = 0

        # 学習データリストに追加
        X_list.append([day_before_1, day_before_2, day_before_3])

        # 教師データリストに追加
        Y_list.append(flag)

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.utils.np_utils import to_categorical

model = Sequential()

model.add(Dense(3, input_dim = 3, activation='sigmoid'))
model.add(Dense(6, activation='sigmoid'))
model.add(Dense(10, activation='sigmoid'))
model.add(Dense(2, activation='softmax'))

model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])

X = np.array(X_list)
Y = to_categorical(Y_list)

model.fit(X, Y, epochs=1000, batch_size=32, verbose=0)

プログラム(実行)

results = model.predict_proba(np.array([[20570, 21660, 22060]]))

print("Predict:\n", results)

まとめ

割と精度はよいのかもしれません。
結果は、こんな感じになりました。

Predict:
 [[0.47381696 0.52618307]]

下落する確率が47%、上昇する確率が52%ということですね。