[PYTHON] Aktienkursprognose mit Tensorflow

http://qiita.com/northriver/items/4f4690053e1770311335

Ich bin an Tensorlfow gewöhnt, also werde ich versuchen, den Aktienkurs mit Deeplearning vorherzusagen. Erstellen Sie ein Aufnahmedatum und verwenden Sie den Aktienkurs der letzten 90 Tage (an Werktagen) und den Aktienkurs 30 Tage später, um Aktien zu veröffentlichen, die wahrscheinlich steigen werden.

Die korrekten Antwortdaten nach 30 Tagen wurden als x% höher, niedriger oder in der Zwischenzeit in Bezug auf den Standard ausgewählt. Ich beschloss, es als Klassifizierungsproblem zu lösen.

Stellen Sie zunächst die erforderlichen Funktionen mit zwei ausgeblendeten Ebenen her

import tensorflow as tf
import numpy as np
sess = tf.InteractiveSession()


def inference(x_placeholder,SCORE_SIZE,NUM_HIDDEN1,NUM_OUTPUT,keep_prob):
	with tf.name_scope('hidden1') as scope:
		hidden1_weight = tf.Variable(tf.truncated_normal([SCORE_SIZE, NUM_HIDDEN1], stddev=0.1), name="hidden1_weight")
		hidden1_bias = tf.Variable(tf.constant(0.1, shape=[NUM_HIDDEN1]), name="hidden1_bias")
		mean1, variance1 = tf.nn.moments(x_placeholder,[0])
		bn1 = tf.nn.batch_normalization(x_placeholder, mean1, variance1, None, None, 1e-5)
		hidden1_output = tf.nn.relu(tf.matmul(bn1, hidden1_weight) + hidden1_bias)

	with tf.name_scope('hidden2'):
		hidden2_weight = tf.Variable(tf.truncated_normal([NUM_HIDDEN1, NUM_HIDDEN2], stddev=0.01), name='hidden2_weight')
		hidden2_bias = tf.Variable(tf.constant(0.1, shape=[NUM_HIDDEN2]), name="hidden2_bias")
		mean2, variance2 = tf.nn.moments(hidden1_output,[0])
		bn2 = tf.nn.batch_normalization(hidden1_output, mean2, variance2, None, None, 1e-5)
		hidden2_output = tf.nn.relu(tf.matmul(bn2, hidden2_weight) + hidden2_bias)

	dropout = tf.nn.dropout(hidden1_output, keep_prob)

	with tf.name_scope('output') as scope:
		output_weight = tf.Variable(tf.truncated_normal([NUM_HIDDEN1, NUM_OUTPUT], stddev=0.1), name="output_weight")
		output_bias = tf.Variable(tf.constant(0.1, shape=[NUM_OUTPUT]), name="output_bias")
		mean_out, variance_out = tf.nn.moments(dropout,[0])
		bn_out = tf.nn.batch_normalization(dropout, mean_out, variance_out, None, None, 1e-5)
		output = tf.nn.softmax(tf.matmul(bn_out, output_weight) + output_bias)
	return output

def loss(output, y_placeholder, loss_label_placeholder):
	with tf.name_scope('loss') as scope:
		loss = tf.reduce_mean(-tf.reduce_sum(y_placeholder * tf.log(tf.clip_by_value(output,1e-10,1.0)), reduction_indices=[1]))
	return loss

def training(loss,rate):
	with tf.name_scope('training') as scope:
		train_step = tf.train.GradientDescentOptimizer(rate).minimize(loss)
	return train_step

Hier habe ich darauf geachtet, dass es besser ist, eine Chargennormalisierung durchzuführen, also habe ich versucht, in alle Schichten zu graben

Die Anzahl der ausgeblendeten Ebenen und die Lernrate sind angemessen und werden in Zukunft angepasst. Lauf!

rate=0.08
SCORE_SIZE=90
NUM_OUTPUT=3
NUM_HIDDEN1=90
NUM_HIDDEN2=45


y_placeholder = tf.placeholder("float", [None, NUM_OUTPUT], name="y_placeholder")
x_placeholder = tf.placeholder("float", [None, SCORE_SIZE], name="x_placeholder")
loss_label_placeholder = tf.placeholder("string", name="loss_label_placeholder")
keep_prob = tf.placeholder("float")


output = inference(x_placeholder,SCORE_SIZE,NUM_HIDDEN1,NUM_OUTPUT,keep_prob)
loss1 = loss(output, y_placeholder, loss_label_placeholder)
training_op = training(loss1,rate)

correct_prediction = tf.equal(tf.argmax(output,1), tf.argmax(y_placeholder,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

best_loss = float("inf")

sess.run(tf.initialize_all_variables())
for step in range(1001):
	x_train,y_train,c_train=train_data_make(SCORE_SIZE,200)
	feed_dict_train={y_placeholder: y_train,x_placeholder: x_train,keep_prob: 0.8}
	feed_dict_test={y_placeholder: y_test,x_placeholder: x_test, keep_prob: 1.0}

	if step%100 == 0:print "size %d,step %d,rate %g loss %g,test accuracy %g"%(num_long,step,rate,loss1.eval(feed_dict=feed_dict_train),accuracy.eval(feed_dict=feed_dict_test))
	sess.run(training_op, feed_dict=feed_dict_train)	

#test_result
print "final_result : size %d,step %d, test accuracy %g"%(num_long,step,accuracy.eval(feed_dict=feed_dict_test))

Infolgedessen werden 9 zugeteilt ... Nun, die meisten Aktien ändern sich nicht innerhalb eines Monats, so dass es möglicherweise an keiner Änderung liegt. Vielmehr wurden 90% der Testdaten unverändert klassifiziert ...

size 90,step 0,rate 0.08 loss 1.31044,test accuracy 0.257594
size 90,step 100,rate 0.08 loss 0.369047,test accuracy 0.91373
size 90,90,step 200,rate 0.08 loss 0.249306,test accuracy 0.90887
・ ・ ・

Werfen wir einen Blick darauf, welche Zahlen für jede Aktie angegeben sind. Immerhin gab es viele Erwartungen, dass es sich nicht ändern würde, aber ... Das? Wenn Sie sie in absteigender Reihenfolge der Wahrscheinlichkeit eines Anstiegs anordnen, wird dies von einigen Aktien erwartet.

image

Ist es auch eine einzigartige Bewegung, bevor der Aktienkurs steigt?

Ich würde gerne die Situation für eine Weile sehen und beobachten, ob sie wirklich steigt.

Demnach sollte die Chargengröße kleiner sein http://postd.cc/26-things-i-learned-in-the-deep-learning-summer-school/ (Bitte investieren Sie auf eigenes Risiko in Aktien. Artikel sind überhaupt nicht verantwortlich.)

Recommended Posts

Aktienkursprognose mit Tensorflow
Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~
Aktienkursprognose mit TensorFlow (mehrschichtiges Perceptron: MLP) ~ Aktienprognose 2 ~
Bootsrennen Vorhersage mit TensorFlow
Aktienkursprognose mit Deep Learning (TensorFlow)
Aktienkursprognose 2 Kapitel 2
Aktienkursprognose 1 Kapitel 1
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Python: Aktienkursprognose Teil 2
Holen Sie sich Lager mit Python
Python: Aktienkursprognose Teil 1
Bitcoin-Preisprognose mit TensorFlow (LSTM)
[Python] Meine Aktienkursprognose [HFT]
Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Laden Sie japanische Aktienkursdaten mit Python herunter
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Zundokokiyoshi mit TensorFlow
Brechen Sie Blöcke mit Tensorflow
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Aktienkursprognose durch maschinelles Lernen Numerai Signals
Automatische Erfassung von Aktienkursdaten mit Docker-Compose
Web Scraping mit Python (Aktienkurs)
Python & Machine Learning Study Memo ⑦: Aktienkursprognose
Aktienkursprognose mit Deep Learning [Datenerfassung]
Daten mit TensorFlow lesen
Preisschwankungsprognose für virtuelle Währungen
Kaggle ~ Home Preisprognose ② ~
Versuchen Sie eine Regression mit TensorFlow
Kaggle ~ Home Preisprognose ~
Bei der Erfassung von Aktienkursdaten mit Pandas-datareader fehlen Daten
[Zeitreihen mit Handlung] Dynamische Visualisierung mit Handlung [Python, Aktienkurs]
Übersetzen Erste Schritte mit TensorFlow
Versuchen Sie es mit TensorFlow
Verwenden Sie TensorFlow mit Intellij IDEA
Programmierhistorie 1 Monat NY Dow-Bestand mit Python extrahieren!
Ungefähre Sinusfunktion mit TensorFlow
[Einführung in Systre] Aktienkursprognose; schwach am Montag m (__) m
Kratzwettervorhersage mit Python
Aktienkursprognose mit LSTM_1
[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (002: Protokollausgabe)
Tipps zur Erfassung von Aktienkursdaten
Versuchen Sie TensorFlow MNIST mit RNN
Holen Sie sich japanische Aktieninformationen von Yahoo Finance mit Pandas
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai
[Aktienkursanalyse] Lernen Sie Pandas mit Nikkei-Durchschnitt (004: Ändern Sie die gelesenen Daten in Nikkei-Durchschnitt)
Aktienkurs Prognose durch maschinelles Lernen ist so wahr, Numerai Signale
[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (001: Vorbereitung der Umgebung auf das Lesen von Dateien)
[Aktienkursanalyse] Pandas mit fiktiven Daten lernen (003: Von der Typanordnung zum Candlestick-Chart)
TensorFlow 2.2 kann nicht mit Python 3.8 installiert werden!
MNIST (DCNN) mit Keras (TensorFlow-Backend)
Prognostizieren Sie den Preisübergang von Bitcoin mit Prophet
Passen Sie Modell / Ebene / Metrik mit TensorFlow an
Inferenz- und Ergebnisanzeige mit Tensorflow + matplotlib
Klassifizieren Sie "Wein" mit TensorFlow MLP-Code
Vorsichtsmaßnahmen bei der Installation von Tensorflow mit Anaconda
[TensorFlow 2] Lernen Sie RNN mit CTC-Verlust
Versuchen Sie es mit TensorFlow Part 2
[TensorFlow] [Keras] Aufbau eines neuronalen Netzwerks mit Keras
Verwenden Sie Tensorflow 2.1.0 mit Anaconda unter Windows 10!