[PYTHON] Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~

Einführung

Ich werde anfangen, Aktieninvestitionen zu studieren, also werde ich eine Notiz davon hinterlassen.

Prognostizieren Sie Aktienkurse mithilfe von Zielen, maschinellem Lernen und tiefem Lernen.

Bevor Sie mit dem Studium beginnen, lesen Sie zunächst die folgenden Bücher.

[Ergänzung]

Zusätzlich zu den Aktien verwende ich normalerweise die Pferderennprognose siva. Gegenseitiger Vorhersagewert: Ungefähr 86% Wiederherstellungsrate: ca. 136%

twitter Ich habe angefangen. Bitte folgen Sie mir.

Warum lagern?

Ich habe die Aktie aus den folgenden Ansichten ausgewählt.

◆ Glücksspiele wie Pferderennen
Die Rendite von 0 oder 100 ist ebenfalls groß, aber das Risiko ist groß.
 ◆ FX 
Auf der anderen Seite gibt es Leute, die Geld verdienen, aber es gibt Leute, die es verlieren, also passt es nicht zu ihrem Geschlecht.
 ◆ bitcoin
Da der Wert nicht ermittelt wurde, besteht die Möglichkeit eines Zusammenbruchs.
◆ Lager
Bei Aktien ist jeder profitabel.

Zunächst ein Experiment zur Aktienvorhersage

Beginnen wir das Experiment von Site, wo Sie es herunterladen und experimentieren können, bevor Sie es durch Scraping starten.

Die heruntergeladenen Daten sind die Nikkei-Durchschnittsinformationen von 2007 bis 2017. Enthält Daten zu Datums-, Open-, High-, Low- und Close-Preisen.

Die diesmal verwendeten Daten verwenden den Schlusskurs.

Denken Sie über den Ansatz nach

Für Aktien wird davon ausgegangen, dass es besser ist, RNN (Recurrent Neural Network) (* 2) anhand von Zeitreihen vorherzusagen, als die vergangene Performance statistisch zu analysieren (* 1), sodass es sich um eine Erweiterung von RNN handelt. Versuchen wir es mit LSTM (Long Short Term Memory).

screenshot_119.png Schematische Darstellung von RNN (Quelle)

Wie auch immer, experimentieren Sie mit dem Programm

Zunächst habe ich dem Versuch Priorität eingeräumt und ein Programm mit Nikkei-Durchschnitt erstellt.

# -*- coding: utf-8 -*-
import numpy
import pandas
import matplotlib.pyplot as plt

from sklearn import preprocessing
from keras.models import Sequential
from keras.layers.core import Dense, Activation
from keras.layers.recurrent import LSTM

class Prediction :

  def __init__(self):
    self.length_of_sequences = 10
    self.in_out_neurons = 1
    self.hidden_neurons = 300


  def load_data(self, data, n_prev=10):
    X, Y = [], []
    for i in range(len(data) - n_prev):
      X.append(data.iloc[i:(i+n_prev)].as_matrix())
      Y.append(data.iloc[i+n_prev].as_matrix())
    retX = numpy.array(X)
    retY = numpy.array(Y)
    return retX, retY


  def create_model(self) :
    model = Sequential()
    model.add(LSTM(self.hidden_neurons, \
              batch_input_shape=(None, self.length_of_sequences, self.in_out_neurons), \
              return_sequences=False))
    model.add(Dense(self.in_out_neurons))
    model.add(Activation("linear"))
    model.compile(loss="mape", optimizer="adam")
    return model


  def train(self, X_train, y_train) :
    model = self.create_model()
    #Lernen
    model.fit(X_train, y_train, batch_size=10, nb_epoch=100)
    return model


if __name__ == "__main__":

  prediction = Prediction()

  #Datenaufbereitung
  data = None
  for year in range(2007, 2017):
    data_ = pandas.read_csv('csv/indices_I101_1d_' + str(year) +  '.csv')
    data = data_ if (data is None) else pandas.concat([data, data_])
  data.columns = ['date', 'open', 'high', 'low', 'close']
  data['date'] = pandas.to_datetime(data['date'], format='%Y-%m-%d')
  #Standardisierung der Schlusskursdaten
  data['close'] = preprocessing.scale(data['close'])
  data = data.sort_values(by='date')
  data = data.reset_index(drop=True)
  data = data.loc[:, ['date', 'close']]

  #20% zum Testen von Daten
  split_pos = int(len(data) * 0.8)
  x_train, y_train = prediction.load_data(data[['close']].iloc[0:split_pos], prediction.length_of_sequences)
  x_test,  y_test  = prediction.load_data(data[['close']].iloc[split_pos:], prediction.length_of_sequences)

  model = prediction.train(x_train, y_train)

  predicted = model.predict(x_test)
  result = pandas.DataFrame(predicted)
  result.columns = ['predict']
  result['actual'] = y_test
  result.plot()
  plt.show()

Ergebnis

Es ist ziemlich vorhersehbar ... Screen Shot 0029-06-30 at 3.26.00 AM.png

Es scheint, dass Sie eine gute Vorhersage treffen können, indem Sie sie auf UP / DOWN setzen.

schließlich

Dieses Mal habe ich dem Verschieben Vorrang eingeräumt, werde aber auch in Zukunft Artikel schreiben. twitter Ich habe angefangen. Bitte folgen Sie mir.

Darüber hinaus betreiben wir Pferderennen Vorhersage siva. Bitte folgen Sie uns auch.

Recommended Posts

Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~
Aktienkursprognose mit Tensorflow
Aktienkursprognose mit TensorFlow (mehrschichtiges Perceptron: MLP) ~ Aktienprognose 2 ~
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Python: Aktienkursprognose Teil 2
Python: Aktienkursprognose Teil 1
Bitcoin-Preisprognose mit TensorFlow (LSTM)
Aktienkursprognose mit Deep Learning (TensorFlow)
Bootsrennen Vorhersage mit TensorFlow
Aktienkursprognose 2 Kapitel 2
Aktienkursprognose 1 Kapitel 1
Aktienkursprognose mit LSTM_1
Holen Sie sich Lager mit Python
Versuchen Sie es mit TensorFlow Part 2
[Python] Meine Aktienkursprognose [HFT]
Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Laden Sie japanische Aktienkursdaten mit Python herunter
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Vorhersage von Effekten mit LSTM mithilfe von Keras + Tensorflow Teil 2 (Berechnung mit GPU)
Videorahmenvorhersage unter Verwendung von Faltungs-LSTM mit TensorFlow
Tweet die Wettervorhersage mit Bot Teil 2
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Aktienkursprognose durch maschinelles Lernen Numerai Signals
Automatische Erfassung von Aktienkursdaten mit Docker-Compose
Zundokokiyoshi mit TensorFlow
Web Scraping mit Python (Aktienkurs)
Python & Machine Learning Study Memo ⑦: Aktienkursprognose
Aktienkursprognose mit Deep Learning [Datenerfassung]
Versuchen Sie, FX mit LSTM mithilfe von Keras + Tensorflow Teil 3 vorherzusagen (versuchen Sie, alle Parameter zu treffen).
Brechen Sie Blöcke mit Tensorflow
Bei der Erfassung von Aktienkursdaten mit Pandas-datareader fehlen Daten
[Zeitreihen mit Handlung] Dynamische Visualisierung mit Handlung [Python, Aktienkurs]
Lerne Zundokokiyoshi mit LSTM
Daten mit TensorFlow lesen
Sandkasten mit neo4j Teil 10
Preisschwankungsprognose für virtuelle Währungen
Multivariates LSTM mit Keras
Kaggle ~ Home Preisprognose ② ~
Versuchen Sie eine Regression mit TensorFlow
Kaggle ~ Home Preisprognose ~
[Einführung in Systre] Aktienkursprognose; schwach am Montag m (__) m
Implementierte abgeleitete Versionen von LSTM wie MGU und SGU mit TensorFlow
[TensorFlow] Ich habe versucht, mit LSTM eine Nachricht wie "Treffen Sie das Urteil nach dem Tod" in Massenproduktion zu produzieren
[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (002: Protokollausgabe)
Holen Sie sich japanische Aktieninformationen von Yahoo Finance mit Pandas
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai