Dies ist die Nikkei-Durchschnittsprognose, die verschiedene Personen durchführen. Diesmal habe ich es mit Random Forest, MLP und CNN versucht. Obwohl es sich um einen Haftungsausschluss handelt, bin ich nicht verantwortlich für Verluste, die auftreten können, wenn diese tatsächlich auf diese Weise gekauft oder verkauft werden.
Grundsätzlich handelt es sich bei Aktien oder allgemeinen finanziellen Vermögenswerten um zufällige Schritte, und selbst wenn die Informationen vor einem Punkt bekannt sind, ist es im Grunde unmöglich, den Wert beim nächsten Mal vorherzusagen. Wenn Sie das können, sind alle fertig, und es gibt keine so gute Geschichte.
Auf der anderen Seite gibt es eine Anomalie in der Welt der Aktien, zum Beispiel gibt es einen kleinen Aktieneffekt oder einen Wertaktieneffekt, der theoretisch nicht erklärt werden kann. Es wird bestätigt, dass es eine Art von Fluktuation gibt, die von der Theorie abweicht Es ist gewesen. (Der Small Stock-Effekt und der Value Stock-Effekt wurden als Anomalien bestätigt, die von CAPM, der bis dahin geltenden Vermögenspreistheorie, nicht erfasst werden konnten, und es wurde ein Modell namens Fama-French-Modell erstellt.)
Es ist schwierig, mit einer Anomalie Gewinne zu erzielen, da sie, wenn sie allgemein bekannt wird, in den Markt eingewebt wird.
Beim tiefen Lernen und beim maschinellen Lernen versuchen wir, solche Anomalien zu finden (nach meinem persönlichen Verständnis). Zu diesem Zweck wird es anhand von Daten, die bisher nicht verwendet wurden, oder einer Methode als grob berechnet.
Wenn Sie viele Daten verwenden, können Sie nichts tun, oder? Ist es ein Ort mit solchen Erwartungen?
Eine allgemeine Aktienprognose ist eine Rendite, dh eine Änderungsrate gegenüber dem Vortag. Mit anderen Worten: "Verwenden Sie die Daten bis zu diesem Tag, um die Höhen und Tiefen des nächsten Tages vorherzusagen."
Das eigentliche Problem ist jedoch nicht so einfach,
Es gibt Probleme wie.
Es ist zu beachten, dass diese Punkte beim tatsächlichen Kauf und Verkauf oft wichtiger sind als erwartet.
Danach ist es bei der Prognose unter Verwendung des Übersee-Aktienindex erforderlich, den Einfluss der "Zeitdifferenz" vollständig zu berücksichtigen. Wenn Sie dies nicht berücksichtigen, werden Sie am Ende zukünftige Daten verwenden, um Vorhersagen zu treffen.
Bisher werde ich mit der Einführung ein aktuelles Modell erstellen.
Die Daten verwenden die täglichen Schlusskursdaten von 225 durchschnittlichen Nikkei-Bestandteilen (jüngste Bestandteile). Das prognostizierte Ziel ist, ob der Schlusskurs des durchschnittlichen Nikkei-Aktienkurses am nächsten Tag im Vergleich zum Vortag steigen oder fallen wird. Mit anderen Worten, ob die Schlusskursrendite im Vergleich zum Tag positiv oder negativ ist, wird als Lehrerdaten verwendet. Die Lerndaten sind vom 11.01.2000 bis zum 30.12.2007 und die Testdaten sind von da an bis spätestens.
Wie in der Einleitung gezeigt, wird erneut bestätigt, dass die Verwendung des Schlusskurses zur Vorhersage der Schlusskursrendite in einem realen Handel nicht verwendet werden kann. Nun, es ist wie zu sehen, ob die Ergebnisse je nach Methode unterschiedlich sind.
In einer zufälligen Gesamtstruktur wird der Feature-Betrag horizontal erweitert. Dieses Mal erstellen wir eine Matrix, die die Schlusskursrendite am Vortag jeder Aktie in Spaltenrichtung und den Zeitpunkt in Zeilenrichtung enthält.
Es verwendet dieselben Funktionen wie die zufällige Gesamtstruktur.
In dem Faltungs-Neuronalen Netzwerk muss ein Bildformat erzeugt werden, dh eine zweidimensionale Merkmalskarte. Daher setzen wir den Kanal auf 1 und verwenden einen 4-dimensionalen Tensor. clm_dim und row_dim sind die Anzahl der Spalten und Zeilen des zweidimensionalen Bildes zu einem bestimmten Zeitpunkt sowie der Maximalwert und die Anzahl der Branchen nach Branchen. Wir werden die Aktienrenditen in jeder Branche einbetten.
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"]:
"""Wende dich der Industrie zu"""
ind_code_list = ind_data[ind_data["ind"]==ind]["code"]
len_3 = [i for i,ii in enumerate(industry_count["ind"]) if ii == ind] #Zeilennummer
len_1 = 0 #Spaltenindex
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 #Spaltenindex
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
Die Anzahl der Entscheidungsbäume beträgt 200.
Es ist ein 3-Schicht-Mehrschicht-Perzeptron mit 1000 Knoten mit versteckten Schichten. Epoche ist 100.
Falten → durchschnittliches Pooling einmal, dann eine verborgene Schicht und die Anzahl der Knoten beträgt 1000. Die Filtergröße beträgt 2x3 asymmetrisches Filter, die Poolgröße 1x2 und der Ausgangskanal 30.
Gemessen am Klassifizierungsbericht von sklearn bzw. an der AUC.
Das Ergebnis ist, dass der CNN etwas besser ist als die anderen.
Mit Blick auf den Prozentsatz der richtigen Antworten in den CNN-Ergebnissen war Avenomics 2013 am höchsten. Das ist richtig, denn es war eine Zeit, in der es einen klaren Trend gab.
Recommended Posts