Python: prévision du cours de l'action, partie 2

Acquisition de données chronologiques sur le cours moyen de l'action Nikkei

Acquisition de données de séries chronologiques Partie 1

Obtenez au-delà des données csv sur le cours moyen de l'action Nikkei et enregistrez-les.

#Code lors de la lecture de csv
import pandas as pd
from io import StringIO
import urllib

def read_csv(url):
    res = urllib.request.urlopen(url)
    res=res.read().decode('shift_jis')
    df = pd.read_csv(StringIO( res) )
    return df
#Acquisition de données chronologiques sur le cours moyen de l'action Nikkei
import pandas as pd
from io import StringIO
import urllib

#Obtenez des séries chronologiques du cours moyen de l'action Nikkei en utilisant la fonction ci-dessus
url = "https://indexes.nikkei.co.jp/nkave/historical/nikkei_stock_average_daily_jp.csv"
def read_csv(url):
    res = urllib.request.urlopen(url)
    res = res.read().decode('shift_jis')
    df = pd.read_csv(StringIO(res))
    #Je supprime la dernière ligne dont je n'ai pas besoin
    df = df.drop(df.shape[0]-1)
    return df

#Enregistrer dans un dataframe appelé df et sortie
df = read_csv(url)
#production
df

image.png

Acquisition de données de séries chronologiques Partie 2

Faites des prédictions en vous concentrant sur le cours de clôture des données de séries chronologiques.

#Acquisition de données de séries chronologiques Partie 1,Le code d'acquisition des données chronologiques du cours moyen de l'action Nikkei est affiché.
#Après avoir fait de l'index une date, faites-en une série chronologique
df["Date de données"] = pd.to_datetime(df["Date de données"], format='%Y/%m/%d')
df = df.set_index('Date de données')

#De la colonne'Prix ouvert', 'Prix élevé', 'Bas prix'Supprimer et trier par date
df = df.drop(['Prix ouvert', 'Prix élevé', 'Bas prix'], axis=1)
df = df.sort_index(ascending=True)
df

image.png

Acquisition de données de séries chronologiques Partie 3

import pandas as pd

#df et df_Rejoignez les deux tables de tweets avec l'index comme clé et supprimez Nan
df_tweets = pd.read_csv('./6050_stock_price_prediction_data/df_tweets.csv', index_col='date')
table = df_tweets.join(df, how='right').dropna()
# table.Sortie en csv
table.to_csv("./6050_stock_price_prediction_data/table.csv")
table

image.png

Prévision du cours de l'action

Prévision du cours de l'action partie 1

Comme expliqué dans Python: prévision du cours de l'action (1) Cette fois, nous utiliserons l'analyse technique pour prédire le cours de l'action.

Caractérisé par les variations du cours moyen de l'action Nikkei au cours des trois derniers jours et par les variations de la valeur PN Nous prévoirons les hauts et les bas du cours des actions le lendemain.

Après avoir divisé les données d'entraînement en deux parties, les données d'entraînement et les données de test, les données d'entraînement sont standardisées, puis les données de test sont standardisées à l'aide de la moyenne et de la distribution des données d'entraînement.

#Modèle de base
from sklearn.model_selection import train_test_split

X = table.values[:, 0]
y = table.values[:, 1]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0, shuffle=False)
X_train_std = (X_train - X_train.mean()) / X_train.std()
X_test_std = (X_test - X_train.mean()) / X_train.std()
#Création de données d'entraînement
from sklearn.model_selection import train_test_split

X = table.values[:, 0]
y = table.values[:, 1]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0, shuffle=False)
X_train_std = (X_train - X_train.mean()) / X_train.std()
X_test_std = (X_test - X_train.mean()) / X_train.std()

# df_Créez une table appelée train, définissez l'index sur la date, le nom de la colonne sur la valeur pn, fermez la valeur sur df_train.Sortie dans le dossier de données avec le nom csv
df_train = pd.DataFrame(
    {'pn': X_train_std,
     'le dernier prix': y_train},
    columns=['pn', 'le dernier prix'],
    index=table.index[:len(X_train_std)])
df_train.to_csv('./6050_stock_price_prediction_data/df_train.csv')

#De même pour les données de test, df_Créez une table appelée test et df_test.Sortie dans le dossier de données avec le nom csv
df_test = pd.DataFrame(
    {'pn': X_test_std,
     'le dernier prix': y_test},
    columns=['pn', 'le dernier prix'],
    index=table.index[len(X_train_std):])
df_test.to_csv('./6050_stock_price_prediction_data/df_test.csv')

Prévision du cours de l'action, partie 2

#Tout d'abord df_train.Lisez le csv et affichez les changements de valeur PN et de cours de l'action.

# pn.rates_diff, exchange_rates_Consultez le diff pour avoir un aperçu du programme ci-dessus.
rates_fd = open('./6050_stock_price_prediction_data/df_train.csv', 'r')
rates_fd.readline()  #Chaque ligne est lue jusqu'à la fin du fichier.
next(rates_fd)  #La première ligne est ignorée.

exchange_dates = []

pn_rates = []
pn_rates_diff = []

exchange_rates = []
exchange_rates_diff = []

prev_pn = df_train['pn'][0]
prev_exch = df_train['le dernier prix'][0]

for line in rates_fd:
    splited = line.split(",")
    time = splited[0]   # table.Date de la première colonne du csv
    pn_val = float(splited[1])   # table.2e colonne Valeur PN de csv
    exch_val = float(splited[2])  # table.Cours de clôture du cours de l'action de la troisième colonne de CSV
    exchange_dates.append(time)  #Date

    pn_rates.append(pn_val)
    pn_rates_diff.append(pn_val - prev_pn)   #Changement de la valeur PN

    exchange_rates.append(exch_val)
    exchange_rates_diff.append(exch_val - prev_exch)   #Modifications des cours des actions

    prev_pn = pn_val
    prev_exch = exch_val
rates_fd.close()
print(pn_rates_diff)
print(exchange_rates_diff)

image.png

Prévision du cours de l'action partie 3

#Affiche la variation de la valeur PN et du cours de l'action tous les 3 jours.

import numpy as np
INPUT_LEN = 3
data_len = len(pn_rates_diff)
tr_input_mat = []
tr_angle_mat = []

for i in range(INPUT_LEN, data_len):
    tmp_arr = []
    for j in range(INPUT_LEN):
        tmp_arr.append(exchange_rates_diff[i-INPUT_LEN+j])
        tmp_arr.append(pn_rates_diff[i-INPUT_LEN+j])   
    tr_input_mat.append(tmp_arr)  #Évolution des cours des actions et négatifs / positifs pour les 3 derniers jours du jour i

    if exchange_rates_diff[i] >= 0:  #Montées et baisses du cours de l'action le jour i, 1 si positif, 0 si négatif
        tr_angle_mat.append(1)
    else:
        tr_angle_mat.append(0)   
train_feature_arr = np.array(tr_input_mat)
train_label_arr = np.array(tr_angle_mat)
    
# train_feature_arr, train_label_Voir arr pour avoir un aperçu du code ci-dessus.
print(train_feature_arr)
print(train_label_arr)

image.png

Prévision du cours de l'action (résumé)

# test_feature_arr, test_label_Créez arr de la même manière.
rates_fd = open('./6050_stock_price_prediction_data/df_test.csv', 'r')
rates_fd.readline()  #Chaque ligne est lue jusqu'à la fin du fichier.
next(rates_fd)  #La première ligne est ignorée.

exchange_dates = []

pn_rates = []
pn_rates_diff = []

exchange_rates = []
exchange_rates_diff = []

prev_pn = df_test['pn'][0]
prev_exch = df_test['le dernier prix'][0]

for line in rates_fd:
    splited = line.split(",")
    time = splited[0]   # table.Date de la première colonne du csv
    pn_val = float(splited[1])   # table.2e colonne Valeur PN de csv
    exch_val = float(splited[2])  # table.Cours de clôture du cours de l'action de la troisième colonne de CSV
    exchange_dates.append(time)  #Date

    pn_rates.append(pn_val)
    pn_rates_diff.append(pn_val - prev_pn)   #Changement de la valeur PN

    exchange_rates.append(exch_val)
    exchange_rates_diff.append(exch_val - prev_exch)   #Modifications des cours des actions

    prev_pn = pn_val
    prev_exch = exch_val
rates_fd.close()
INPUT_LEN = 3
data_len = len(pn_rates_diff)
test_input_mat = []
test_angle_mat = []

for i in range(INPUT_LEN, data_len):
    test_arr = []
    for j in range(INPUT_LEN):
        test_arr.append(exchange_rates_diff[i - INPUT_LEN + j])
        test_arr.append(pn_rates_diff[i - INPUT_LEN + j])   
    test_input_mat.append(test_arr)  #Évolution des cours des actions et négatifs / positifs pour les 3 derniers jours du jour i

    if exchange_rates_diff[i] >= 0:  #Montées et baisses du cours de l'action le jour i, 1 si positif, 0 si négatif
        test_angle_mat.append(1)
    else:
        test_angle_mat.append(0)   
test_feature_arr = np.array(test_input_mat)
test_label_arr = np.array(test_angle_mat)

# train_feature_arr, train_label_arr,test_feature_arr, test_label_Modèle de prédiction avec arr comme fonction(Régression logistique, SVM, forêt aléatoire)Construire et mesurer la précision des prévisions
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC

for model in [LogisticRegression(), RandomForestClassifier(n_estimators=200, max_depth=8, random_state=0), SVC()]:
    model.fit(train_feature_arr, train_label_arr)
    print("--Method:", model.__class__.__name__, "--")
    print("Cross validatin scores:{}".format(model.score(test_feature_arr, test_label_arr)))

image.png

Recommended Posts

Python: prévision du cours de l'action, partie 2
Python: prévision du cours de l'action partie 1
[Python] Mes prévisions de cours de bourse [HFT]
Prévision de stock avec TensorFlow (LSTM) ~ Prévision de stock Partie 1 ~
Prévision du cours de l'action 2 Chapitre 2
Prévision du cours de l'action 1 Chapitre 1
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
Prévision du cours de l'action avec tensorflow
Obtenez des stocks avec Python
QGIS + Python Partie 2
Prévision du cours des actions à l'aide de l'apprentissage automatique (scikit-learn)
QGIS + Python Partie 1
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow)
Téléchargez les données de cours des actions japonaises avec Python
[Python] Création d'un graphique de tirage des actions
Python: grattage partie 1
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
Python3 commence la partie 1
Python: grattage, partie 2
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
Web scraping avec Python (cours de l'action)
Prévision du cours de l'action à l'aide du Deep Learning [acquisition de données]
Mémorandum de base Python partie 2
Prévision de la fluctuation des prix de la monnaie virtuelle
Kaggle ~ Prévision de prix de l'immobilier ② ~
Mémo de base Python - Partie 1
Kaggle ~ Prévision de prix à domicile ~
[Série chronologique avec plotly] Visualisation dynamique avec plotly [python, cours boursier]
Traitement d'image avec Python (partie 2)
Etudier Python avec freeCodeCamp part1
Images en bordure avec python Partie 1
Application Python: Pandas Partie 1: Basique
Application Python: Pandas Partie 2: Série
Grattage avec Selenium + Python Partie 1
Python: prévision de survie de navire, partie 2
Historique de programmation 1 mois Extraire le stock NY Dow avec Python!
[Introduction à Systre] Prévision du cours de l'action; faible lundi m (__) m
Mémo de grammaire de base Python (1)
Python: prévision de survie des navires, partie 1
Traitement d'image avec Python (partie 1)
Résolution de Nampre avec Python (partie 2)
Analyse de séries chronologiques Partie 3 Prévisions
Traitement d'image avec Python (3)
UI Automation Partie 2 en Python
Scraping prévisions météorologiques avec python
Python: apprentissage supervisé: Hyper Paramètre partie 2
Prévision du cours de l'action avec LSTM_1
Grattage avec Selenium + Python Partie 2
Conseils d'acquisition de données de cours de bourse
Principes de base de Python x SIG (1)
Prévisions du cours des actions par apprentissage automatique Commençons Numerai
Les prévisions du cours des actions par apprentissage automatique sont si vraies Signaux Numerai
Translocation de fichiers CSV avec Python Partie 1
Principes de base de Python x SIG (3)
Jouez des nombres manuscrits avec Python Partie 1
objet perl et classe python partie 2.
Application Python: Traitement des données # 3: Format des données