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%ということですね。
