[PYTHON] Prévision du cours de l'action avec tensorflow

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

Je suis habitué au tensorlfow, alors je vais essayer de prédire le cours de l'action avec le deeplearning. Créez une date d'enregistrement et utilisez le cours de l'action des 90 derniers jours (les jours ouvrables) et le cours de l'action 30 jours plus tard pour sortir des actions susceptibles d'augmenter.

Les bonnes réponses après 30 jours ont été sélectionnées comme étant x% plus élevées, plus faibles ou entre-temps par rapport à la norme. J'ai décidé de le résoudre comme un problème de classification.

Tout d'abord, créez les fonctions nécessaires avec deux couches cachées

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

Ici, j'ai fait attention qu'il vaut mieux faire une normalisation par lots, j'ai donc essayé de creuser dans toutes les couches

Le nombre de couches cachées et le taux d'apprentissage sont appropriés et seront ajustés à l'avenir. Courir!

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))

En conséquence, 9 sont alloués ... Eh bien, la plupart des stocks ne changent pas en un mois, donc cela peut être dû à aucun changement. Au contraire, 90% des données de test ont été classées sans changement ...

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
・ ・ ・

Jetons un coup d'œil aux types de chiffres donnés pour chaque stock. Après tout, il y avait beaucoup d'attentes que cela ne changerait pas, mais ... cette? Si vous les classez par ordre décroissant de probabilité d'augmentation, certains stocks devraient le faire.

image

Est-ce aussi un mouvement unique avant que le cours de l'action ne monte?

Je voudrais voir la situation pendant un moment et observer si elle monte vraiment.

Selon ce qui suit, il semble que la taille du lot devrait être plus petite http://postd.cc/26-things-i-learned-in-the-deep-learning-summer-school/ (Veuillez investir dans des actions à vos propres risques. Les articles ne sont pas du tout responsables)

Recommended Posts

Prévision du cours de l'action avec tensorflow
Prévision de stock avec TensorFlow (LSTM) ~ Prévision de stock Partie 1 ~
Prévision de stock avec TensorFlow (perceptron multicouche: MLP) ~ Prévision de stock 2 ~
Prévisions de courses de bateaux avec TensorFlow
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow)
Prévision du cours de l'action 2 Chapitre 2
Prévision du cours de l'action 1 Chapitre 1
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow) - Partie 2
Python: prévision du cours de l'action, partie 2
Obtenez des stocks avec Python
Python: prévision du cours de l'action partie 1
Prévisions de prix Bitcoin avec TensorFlow (LSTM)
[Python] Mes prévisions de cours de bourse [HFT]
Prévision du cours des actions à l'aide de l'apprentissage automatique (scikit-learn)
Téléchargez les données de cours des actions japonaises avec Python
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
Zundokokiyoshi avec TensorFlow
Casser des blocs avec Tensorflow
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Prévision du cours de l'action par machine learning Numerai Signals
Acquisition automatique des données de cours des actions avec docker-compose
Web scraping avec Python (cours de l'action)
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
Prévision du cours de l'action à l'aide du Deep Learning [acquisition de données]
Lecture de données avec TensorFlow
Prévision de la fluctuation des prix de la monnaie virtuelle
Kaggle ~ Prévision de prix de l'immobilier ② ~
Essayez la régression avec TensorFlow
Kaggle ~ Prévision de prix à domicile ~
Il y a un manque de données lors de l'acquisition de données sur le cours des actions avec Pandas-datareader
[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
Traduire Premiers pas avec TensorFlow
Essayez l'apprentissage en profondeur avec TensorFlow
Utiliser TensorFlow avec Intellij IDEA
Historique de programmation 1 mois Extraire le stock NY Dow avec Python!
Fonction sinueuse approximative avec TensorFlow
[Introduction à Systre] Prévision du cours de l'action; faible lundi m (__) m
Scraping prévisions météorologiques avec python
Prévision du cours de l'action avec LSTM_1
[Analyse du cours de l'action] pandas apprenant avec des données fictives (002: sortie log)
Conseils d'acquisition de données de cours de bourse
Essayez TensorFlow MNIST avec RNN
Obtenez des informations sur les actions japonaises de Yahoo Finance avec Pandas
Prévisions du cours des actions par apprentissage automatique Commençons Numerai
[Analyse du cours de l'action] Apprenez les pandas avec la moyenne Nikkei (004: Changer les données lues en moyenne Nikkei)
Les prévisions du cours des actions par apprentissage automatique sont si vraies Signaux Numerai
[Analyse du cours de l'action] pandas apprenant avec des données fictives (001: préparation de l'environnement à la lecture de fichiers)
[Analyse du cours de l'action] Apprentissage des pandas avec des données fictives (003: De l'arrangement de type au graphique en chandelier)
TensorFlow 2.2 ne peut pas être installé avec Python 3.8!
MNIST (DCNN) avec Keras (backend TensorFlow)
Prédire la transition de prix de Bitcoin avec Prophet
Personnaliser le modèle / la couche / la métrique avec TensorFlow
Affichage des inférences et des résultats avec Tensorflow + matplotlib
Classifier "Wine" avec le code MLP TensorFlow
Précautions lors de l'installation de tensorflow avec anaconda
[TensorFlow 2] Apprendre RNN avec perte CTC
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
[TensorFlow] [Keras] Construction d'un réseau neuronal avec Keras
Utilisez Tensorflow 2.1.0 avec Anaconda sur Windows 10!