[Python] Meine Aktienkursprognose [HFT]

1. Motivation

2. Informationen zum Board

Verkaufsmenge(ASK) Standard Preis Menge kaufen(BID)
500 670
400 669
600 668
667 300
666 1,200
665 400
ASK Standard Preis BID
500 670
400 669
500 668
667 300
666 1,200
665 400
ASK Standard Preis BID
500 670
400 669
600 668
667 400
666 1,200
665 400

3. FI-2010-Datensatz

Was ist der FI-2010-Datensatz?

Datenübersicht

data = pd.read_csv('Train_Dst_Auction_DecPre_CF_1.txt', 
                   header=None, delim_whitespace=True)
print(data.shape)
#=> (149, 47342)
plt.figure(figsize=(20,10))
plt.imshow(data, interpolation='nearest', vmin=0, vmax=0.75, 
           cmap='jet', aspect=data.shape[1]/data.shape[0])
plt.colorbar()
plt.grid(False)
plt.show()

save.png

lob = data.iloc[:40,0].values
lob_df = pd.DataFrame(lob.reshape(10,4), 
                      columns=['ask','ask_vol','bid','bid_vol'])
print(lob_df)
ask ask_vol bid bid_vol
0 0.2631 0.00392 0.2616 0.00663
1 0.2643 0.00028 0.2615 0.00500
2 0.2663 0.00165 0.2614 0.00500
3 0.2664 0.00500 0.2613 0.00043
4 0.2667 0.00039 0.2612 0.00646
5 0.2710 0.00700 0.2611 0.00200
6 0.2745 0.00200 0.2609 0.00199
7 0.2749 0.00487 0.2602 0.00081
8 0.2750 0.00300 0.2600 0.00197
9 0.2769 0.01000 0.2581 0.01321

4. Modell

Trainingsdaten und Etiketten

Modellarchitektur

5. Implementierung

Datenvorverarbeitung

#Die Board-Informationen befinden sich in den ersten 40 Zeilen. 29738 als Daten der fünften Marke~Geben Sie 47294 an.
lob = data.iloc[:40, 29738:47294].T.values
#Hier nach Preis und Menge standardisieren.
lob = lob.reshape(-1,2)
lob = (lob - lob.mean(axis=0)) / lob.std(axis=0)
lob = lob.reshape(-1,40)
lob_df = pd.DataFrame(lob)
#Berechnen Sie den nicht standardisierten Mittelpunkt.
lob_df['mid'] = (data.iloc[0,29738:47294].T.values + data.iloc[2,29738:47294].T.values) / 2
#Geben Sie die Parameter an.
p = 50
k = 50
alpha = 0.0003
#Erstellen Sie eine Beschriftung vom Mittelpunkt basierend auf den Parametern.
lob_df['lt'] = (lob_df['mid'].rolling(window=k).mean().shift(-k)-lob_df['mid'])/lob_df['mid']
lob_df = lob_df.dropna()
lob_df['label'] = 0
lob_df.loc[lob_df['lt']>alpha, 'label'] = 1
lob_df.loc[lob_df['lt']<-alpha, 'label'] = -1
from sklearn.model_selection import train_test_split
from keras.utils import to_categorical
from keras.layers import Conv2D, Dense, Reshape, Input, LSTM
from keras import Model, backend
import tensorflow as tf
#Trainingsdaten erstellen.
X = np.zeros((len(lob_df)-p+1, p, 40, 1))
lob = lob_df.iloc[:,:40].values
for i in range(len(lob_df)-p+1):
    X[i] = lob[i:i+p,:].reshape(p,-1,1)
y = to_categorical(lob_df['label'].iloc[p-1:], 3)
print(X.shape, y.shape)
#=> (17457, 50, 40, 1) (17457, 3)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

Modellbau

tf.reset_default_graph()
backend.clear_session()

inputs = Input(shape=(p,40,1))
x = Conv2D(8, kernel_size=(1,2), strides=(1,2), activation='relu')(inputs)
x = Conv2D(8, kernel_size=(1,2), strides=(1,2), activation='relu')(x)
x = Conv2D(8, kernel_size=(1,10), strides=1, activation='relu')(x)
x = Reshape((p, 8))(x)
x = LSTM(8, activation='relu')(x)
x = Dense(16, activation='relu')(x)
outputs = Dense(3, activation='softmax')(x)

model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

Lass uns lernen!

epochs = 50
batch_size = 256
history = model.fit(X_train, y_train,
                    epochs=epochs,
                    batch_size=batch_size,
                    verbose=1,
                    validation_data=(X_test, y_test))

Epoch 100/100 13965/13965 [==============================] - 5s 326us/step - loss: 0.6526 - acc: 0.6808 - val_loss: 0.6984 - val_acc: 0.6595

save.png save.png

6. Überlegung

Recommended Posts

[Python] Meine Aktienkursprognose [HFT]
Python: Aktienkursprognose Teil 2
Python: Aktienkursprognose Teil 1
Aktienkursprognose 2 Kapitel 2
Aktienkursprognose 1 Kapitel 1
Python & Machine Learning Study Memo ⑦: Aktienkursprognose
Aktienkursprognose mit Tensorflow
Holen Sie sich Lager mit Python
Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Aktienkursprognose mit Deep Learning (TensorFlow)
Laden Sie japanische Aktienkursdaten mit Python herunter
Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~
[Python] Erstellen eines Aktien-Drawdown-Diagramms
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Mein Numpy (Python)
Mein System (Python)
Mein Pyproj (Python)
Meine Pandas (Python)
Mein str (Python)
Mein Pyautogui (Python)
Mein PySide (Python)
Mein Shutil (Python)
Meine Matplotlib (Python)
Meine Urllib (Python)
Mein Pyperclip (Python)
Mein sklearn (Python)
[Mein Memo] Python
Mein ConfigParser (Python)
Mein Webdriver (Python)
Mein Arcpy (Python)
Mein win32gui (Python)
Mein Betriebssystem (Python)
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Aktienkursprognose durch maschinelles Lernen Numerai Signals
Web Scraping mit Python (Aktienkurs)
Aktienkursprognose mit Deep Learning [Datenerfassung]
Aktienkursprognose mit TensorFlow (mehrschichtiges Perceptron: MLP) ~ Aktienprognose 2 ~
Meine schöne Suppe (Python)
[Mein Memo] Python -v / Python -V
Python-Tipps (mein Memo)
Preisschwankungsprognose für virtuelle Währungen
[Zeitreihen mit Handlung] Dynamische Visualisierung mit Handlung [Python, Aktienkurs]
Kaggle ~ Home Preisprognose ② ~
Kaggle ~ Home Preisprognose ~
Programmierhistorie 1 Monat NY Dow-Bestand mit Python extrahieren!
[Einführung in Systre] Aktienkursprognose; schwach am Montag m (__) m
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai
Meine Python-Datenanalyseumgebung
Kratzwettervorhersage mit Python
Aktienkursprognose mit LSTM_1
Tipps zur Erfassung von Aktienkursdaten
Aktienkurs Prognose durch maschinelles Lernen ist so wahr, Numerai Signale