Il s'agit de la prévision moyenne Nikkei que font diverses personnes. Cette fois, je l'ai essayé avec Random Forest, MLP et CNN. Bien qu'il s'agisse d'une clause de non-responsabilité, je ne suis pas responsable de toute perte qui pourrait survenir s'il est réellement acheté ou vendu par cette méthode.
Fondamentalement, les actions ou les actifs financiers généraux sont des marches aléatoires, et même si les informations avant un point sont connues, il est fondamentalement impossible de prédire la valeur à la prochaine fois. Si vous pouvez faire cela, tout le monde est fait, et il n'y a pas une si bonne histoire.
En revanche, il y a une anomalie dans le monde des actions, par exemple, il y a un petit effet stock et un effet stock valeur, qui ne peuvent pas être expliqués théoriquement ・ Il est confirmé qu'il existe une sorte de fluctuation qui s'écarte de la théorie Ça a été. (L'effet petit stock et l'effet stock valeur ont été confirmés comme des anomalies qui ne pouvaient pas être capturées par le CAPM, qui était la théorie du prix des actifs jusque-là, et un modèle appelé le modèle Fama-French a été créé.)
Il est difficile de réaliser un profit en utilisant une anomalie car si elle devient largement connue, elle sera intégrée au marché.
Dans l'apprentissage profond et l'apprentissage automatique, nous visons à trouver de telles anomalies (dans ma compréhension personnelle). À cette fin, il est calculé comme approximatif en utilisant des données qui n'ont pas été utilisées jusqu'à présent ou une méthode.
Eh bien, si vous utilisez beaucoup de données, vous ne pouvez rien faire, non? Est-ce un endroit avec de telles attentes?
Une prévision de stock générale est un retour, c'est-à-dire un taux de variation par rapport à la veille. En d'autres termes, «utiliser les données jusqu'au jour en cours pour prédire les hauts et les bas du jour suivant».
Cependant, le problème réel n'est pas si simple,
Il y a des problèmes tels que.
Il convient de noter que dans les achats et les ventes réels, ces points sont souvent plus importants que prévu.
Après cela, lors de la prévision à l'aide de l'indice boursier d'outre-mer, il est nécessaire de prendre pleinement en compte l'influence du «décalage horaire». Si vous ne tenez pas compte de cela, vous finirez par utiliser des données futures pour faire des prédictions.
Jusqu'à présent, je vais faire un modèle réel avec l'introduction.
Les données utilisent les données quotidiennes de cours de clôture de 225 constituants moyens du Nikkei (constituants les plus récents). L'objectif de prévision est de savoir si le cours de clôture du cours moyen de l'action Nikkei le jour suivant augmentera ou diminuera par rapport à la veille. En d'autres termes, si le rendement du cours de clôture par rapport à la journée est positif ou négatif est utilisé comme données sur les enseignants. Les données d'apprentissage sont comprises entre le 11 janvier 2000 et le 30 décembre 2007, et les données de test sont à partir de ce moment jusqu'au dernier.
Comme indiqué dans l'introduction, il est réaffirmé que l'utilisation du cours de clôture pour prédire le rendement du cours de clôture ne peut pas être utilisée dans le trading réel. Eh bien, c'est comme voir si les résultats diffèrent selon la méthode.
Dans une forêt aléatoire, la quantité de fonctionnalités est étendue horizontalement. Cette fois, nous allons construire une matrice qui a le retour du cours de clôture le jour précédent de chaque action dans le sens de la colonne et le point de temps dans le sens de la ligne.
Il utilise les mêmes fonctionnalités que la forêt aléatoire.
Dans le réseau de neurones convolutifs, il est nécessaire de générer un format d'image, c'est-à-dire une carte de caractéristiques à deux dimensions, nous avons donc mis le canal à 1 et utilisé un tenseur à 4 dimensions. clm_dim et row_dim sont le nombre de colonnes et de lignes de l'image bidimensionnelle à un certain moment dans le temps, et représentent respectivement la valeur maximale et le nombre d'industries par industrie. Nous intégrerons le retour de la question dans chaque industrie.
clm_dim = max(industry_count["count"])
row_dim = len(industry_count)
l_sample = len(x_train)
t_sample = len(x_test)
print row_dim,clm_dim
x_train_mat = np.zeros((l_sample,1,row_dim,clm_dim),dtype=np.float32)
x_test_mat = np.zeros((t_sample,1,row_dim,clm_dim),dtype=np.float32)
for ind in industry_count["ind"]:
"""Tour par secteur"""
ind_code_list = ind_data[ind_data["ind"]==ind]["code"]
len_3 = [i for i,ii in enumerate(industry_count["ind"]) if ii == ind] #numéro de ligne
len_1 = 0 #Index des colonnes
for idx,row in x_train.iterrows():
len_4 = 0
for cc in ind_code_list:
# x_train_mat[len_1,0,len_3,len_4] = 1. if row[str(cc)] > 0 else -1.
x_train_mat[len_1,0,len_3,len_4] = row[str(cc)]
len_4 += 1
len_1 += 1
len_1 = 0 #Index des colonnes
for idx,row in x_test.iterrows():
len_4 = 0
for cc in ind_code_list:
x_test_mat[len_1,0,len_3,len_4] = row[str(cc)]
len_4 += 1
len_1 += 1
Le nombre d'arbres de décision est de 200.
Il s'agit d'un perceptron multicouche à 3 couches avec 1000 nœuds de couche cachés. l'époque est 100.
Pliage → mise en commun moyenne une fois, puis une couche cachée, et le nombre de nœuds est de 1000. La taille du filtre est un filtre asymétrique 2x3, la taille du pooling est 1x2 et le canal de sortie est 30.
Mesuré par le rapport de classification de sklearn et l'ASC, respectivement.
Le résultat est que le CNN est légèrement meilleur que les autres.
En regardant le pourcentage de bonnes réponses dans les résultats de CNN, 2013 Avenomics était le plus élevé. C'est vrai parce que c'était une période où il y avait une tendance claire.
Recommended Posts