[PYTHON] Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen

Überblick

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.

Vorwort

Theoretische Geschichte über Aktien

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?

Sprechen Sie über den tatsächlichen Kauf und Verkauf von Aktien

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.

Modellbau

Bisher werde ich mit der Einführung ein aktuelles Modell erstellen.

Daten und Prognoseziel

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.

Zusammensetzung der Merkmale nach Modell

Zufälliger Wald

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.

Mehrschichtiges Perzeptron (MLP)

Es verwendet dieselben Funktionen wie die zufällige Gesamtstruktur.

Faltungs-Neuronales Netz (CNN)

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

Modellparameter

Zufälliger Wald

Die Anzahl der Entscheidungsbäume beträgt 200.

Mehrschichtiges Perzeptron (MLP)

Es ist ein 3-Schicht-Mehrschicht-Perzeptron mit 1000 Knoten mit versteckten Schichten. Epoche ist 100.

Faltungs-Neuronales Netz (CNN)

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.

Ergebnis

Gemessen am Klassifizierungsbericht von sklearn bzw. an der AUC.

Zufälliger Wald

RF_code.png

Mehrschichtiges Perzeptron (MLP)

MLP_code.png

Faltungs-Neuronales Netz (CNN)

CNN_code.png

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.

正答率.png

Zusammenfassung

Recommended Posts

Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe die gängige Geschichte der Vorhersage des Nikkei-Durchschnitts mithilfe von Deep Learning (Backtest) ausprobiert.
Ich habe versucht, die Phase der Geschichte mit COTOHA zu extrahieren und zu veranschaulichen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, die Verschlechterung des Lithium-Ionen-Akkus mithilfe des Qore SDK vorherzusagen
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, mit Theano tief zu lernen
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, den Sieg oder die Niederlage der Premier League mit dem Qore SDK vorherzusagen
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, den allgemeinen Zustand der VTuber-Kanalbetrachter zu visualisieren
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Ich habe versucht, die Infektion mit einer neuen Lungenentzündung mithilfe des SIR-Modells vorherzusagen: ☓ Wuhan ed. ○ Hubei ed.
Ich habe versucht, das Gesichtsbild mit sparse_image_warp von TensorFlow Addons zu transformieren
Die Geschichte des tiefen Lernens mit TPU
[Pokemon-Schwertschild] Ich habe versucht, die Urteilsgrundlage des tiefen Lernens anhand der Drei-Familien-Klassifikation als Beispiel zu visualisieren
zoom Ich habe versucht, den Grad der Aufregung der Geschichte auf der Konferenz zu quantifizieren
Ich habe versucht, die Ähnlichkeit der Frageabsicht mit Doc2Vec von gensim abzuschätzen
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, tief zu lernen
Mit COTOHA habe ich versucht, den emotionalen Verlauf des Laufens von Meros zu verfolgen.
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, die Höhen und Tiefen des Schlusskurses des Aktienkurses von Guru Navi mit TensorFlow vorherzusagen (Fortschritt)
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Die Geschichte von soracom_exporter (Ich habe versucht, SORACOM Air mit Prometheus zu überwachen)
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Ich habe versucht, die Sündenfunktion mit Chainer zu approximieren
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, Dropout zu erklären
Die Geschichte der Verwendung von Circleci zum Bau vieler Linux-Räder
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
Ich habe versucht, das Wissensdiagramm mit OpenKE zu ergänzen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (erste Hälfte).
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe versucht, Pferderennen vorherzusagen, indem ich alles von der Datenerfassung bis zum tiefen Lernen getan habe
Ich habe versucht, den Text in der Bilddatei mit Tesseract der OCR-Engine zu extrahieren
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Erste COTOHA-API] Ich habe versucht, die alte Geschichte zusammenzufassen
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich habe versucht, die Anzeigenoptimierung mithilfe des Banditenalgorithmus zu simulieren
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich habe versucht, ListNet of Rank Learning mit Chainer zu implementieren