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