[PYTHON] Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning

Überblick

Angenommen, das aktuelle Datum ist $ T $, verwenden Sie Deep Learning, um den einfachen gleitenden Durchschnitt der Tagespreise von $ T + 1 $ bis $ T + 30 $ vorherzusagen. image.png Wir haben eine Simulationstransaktion durchgeführt, bei der Gewinne bestätigt werden, wenn der Preis beim Halten (oder Leerverkaufen) einer Long-Position den vorhergesagten gleitenden Durchschnitt des Preises übersteigt (unter). Wenn Sie es 30 Tage lang halten, müssen Sie es schließen. Ich werde mein Bestes tun, um Einträge vorzunehmen, wenn für jedes Datum und jede Uhrzeit ein Saldo vorhanden ist. image.png

DL-Framework verwendet

chainer ver1.3~1.5 Gerade in Version 1.5 hat sich die Kompatibilität erheblich geändert, und es war schwierig, damit umzugehen. Es scheint, dass es ab August 2017 Version 2.0.2 ist.

Nutzungsdaten

Mizuho Historische Daten https://www.mizuhobank.co.jp/rate/market/historical.html Im Folgenden haben wir Datums- und Zeitdaten für 23 Währungen verwendet. Alle sind gegen japanischen Yen. Die fett gedruckten Top-8-Währungen sind die Währungen, die die Handelssimulation überprüft haben. (Vom 1. April 2002 bis 29. Januar 2016 nur Währungen, die einen Tag lang täglich Daten haben.) image.png Zum Zeitpunkt des Lernens werden alle durch 0-1 normalisiert.

Eingabedaten

Tägliche Daten für die Währungen der oben genannten 23 Länder und der letzten 30 Tage. Der Grund für die Auswahl dieser Eingabedaten ist, dass wir spekulieren, dass Wechselkursschwankungen in jeder Währung mit fundamentalen und technischen Faktoren korrelieren könnten.

Lehrerdaten

Lassen Sie die Lehrerdaten 30 Tage nach einer Währung ein einfacher gleitender 30-Tage-Durchschnitt sein. Dieses Mal haben wir jede der acht Währungen vorhergesagt, die üblicherweise von japanischen Devisenunternehmen verwendet werden (die Währungen sind in den obigen Daten fett gedruckt). Übrigens habe ich einige Ein-Punkt-Vorhersagen (wie die Vorhersage von Tagesdaten für den nächsten Tag) versucht, anstatt Durchschnittswerte zu verschieben, aber ich habe keine guten Ergebnisse erzielt. Immerhin soll es sich um einen zufälligen Spaziergang handeln, daher kann es schwierig sein, wenn Sie den Trend nicht für einen bestimmten Zeitraum vorhersagen.

Lernmodell

Es ist ein einfaches Feed-Forward-NN mit 3 mittleren Schichten. (Eingabeschicht ist 690, Zwischenschicht 1 ist 512, 2 ist 256, 3 ist 128, Ausgabeschicht ist 1) image.png Es ist subtil, ob es als tiefes Lernen bezeichnet werden kann, aber in Wikipedia scheint es, dass es von der mittleren Schicht 3 Schichten gesagt werden kann, so dass ich es vorerst benennen darf. Ich habe ReLU als Aktivierungsfunktion und Adam als Optimierungsfunktion verwendet. Hyperparameter sollten die Standardeinstellung von Chainer sein. Ich habe auch Aussetzer verwendet, aber ich erinnere mich, dass ich keine sehr guten Ergebnisse erzielt habe. Die Aktivierungsfunktion der Ausgabeschicht ist $ tanh $, und die Fehlerfunktion ist der quadratische Fehler.

Lernergebnis

Wir haben mit 2000 Tagen Trainingsdaten und 1325 Tagen Testdaten gelernt und verifiziert. Die Ergebnisse des britischen Pfunds gegenüber dem japanischen Yen mit besonders guten Ergebnissen sind wie folgt. Alle Ergebnisse waren später im Testzeitraum tendenziell abweichender. Es scheint nicht einfach ein spät kommender Janken zu sein (die Rate des vorherigen Tages wird als vorhergesagter Wert verwendet). Ich denke, dies ist teilweise auf die sich ändernden Markttrends zurückzuführen. Daher ist es möglicherweise besser, den Lernzeitraum und den Überprüfungszeitraum in kleinere Teile zu unterteilen oder ein zeitreihenspezifisches Modell wie LSTM zu verwenden, um besser zu lernen. .. image.png Das gesamte Lernergebnis ist wie folgt. Der Fehler wird als Dispersion ausgedrückt. image.png Der Schweizer Franken hat eine große Lücke, da sich der Teil des starken Anstiegs im Jahr 2015 gerade mit dem Testzeitraum überschnitten hat. Es ist unmöglich, Preisbewegungen vorherzusagen, die nicht mit den zum Lernen verwendeten Eingabedaten zusammenhängen. Wenn es also aufgrund grundlegender Faktoren zu großen Preisbewegungen kommt, ist es schwierig, einfach vergangene Zeitreihendaten und die neuesten Informationen wie Twitter und Nachrichten zu verwenden. Ich denke, dass es notwendig ist, den Teil, der die Preisbewegung beeinflussen könnte, so schnell wie möglich zu erkennen.

Ergebnisse der Handelssimulation

Ich habe leicht selbst einen Backtest gemacht und es gemacht. Der Überprüfungszeitraum beträgt 1325 Tage vom 07.07.2010 bis zum 11.12.2015. Dies ist der Testdatenzeitraum. Der anfängliche Betrag beträgt 10 Millionen, die Transaktionseinheit beträgt 1000 Währungseinheiten und der Spread wird ebenfalls berücksichtigt. Da die Daten jedoch nur die oben genannten täglichen Daten verwenden, schwanken sie im tatsächlichen Handel stark und es ist nicht bekannt, ob der Vertrag entschieden wird, so dass die Reproduzierbarkeit als Backtest gering ist. image.png image.png image.png Immerhin wurden mit GBP, das die höchste Lerngenauigkeit aufwies, gute Ergebnisse erzielt. Im Gegenteil, CHF hat ein schlechtes Lernergebnis, daher ist auch das Handelsergebnis schlecht.

Zur Erinnerung: Dieses Mal lernen wir, den Fehler des Testzeitraums auf die Untergrenze zu reduzieren, sodass dieses Lernergebnis im Testzeitraum optimiert wird und nicht funktioniert, selbst wenn wir in einem anderen Zeitraum dasselbe Lernergebnis verwenden. (Kurvenanpassung) Es besteht die Möglichkeit. Beispielsweise ändert sich die Art und Weise, wie sich der Markt bewegt, je nach Zeitraum, da die Divergenz in der zweiten Hälfte des Testzeitraums größer wird. Daher ist es besser, einen Überprüfungszeitraum außerhalb des Testzeitraums festzulegen und eine tatsächliche Simulation durchzuführen. Diesmal haben wir dies jedoch nicht getan.

Zusammenfassung

Ich denke, es ist schwierig, den Wechselkurs durch tiefes Lernen genau vorherzusagen. Abhängig von den Nutzungsdaten und der Kauf- und Verkaufsmethode scheint es jedoch so zu sein, dass der Handel mit Deep Learning selbst aus den Zeitreihendaten allein zu Ergebnissen führen kann. Natürlich besteht das Risiko, dass die Markttrends schwanken, so dass es scheint, dass es auf lange Sicht nicht rentabel sein wird. Da es viele Probleme gibt, möchte ich andere Überprüfungsergebnisse und -papiere lesen und überprüfen. Wenn Sie sicher sind, dass Sie durch wiederholte Verbesserungen und Überprüfungen einen Gewinn erzielen, möchte ich den tatsächlichen Betrieb ausprobieren.

↓ Tutorial zum Erstellen eines Devisenhandelssystems mit Deeplearning http://qiita.com/jiji_platform/items/268377c542706e6f44b1

Recommended Posts

Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Eine Geschichte über maschinelles Lernen mit Kyasuket
Eine Geschichte über einen 40-jährigen Ingenieurmanager, der "Deep Learning for ENGINEER" bestanden hat
Eine Geschichte über die Automatisierung von Online-Mahjong (Jakutama) mit OpenCV und maschinellem Lernen
Die Geschichte des tiefen Lernens mit TPU
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Eine Geschichte über die Implementierung eines Anmeldebildschirms mit Django
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Geschichte der Verwendung von Resonas Software-Token mit 1Password
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Eine Geschichte über das Ausprobieren eines (Golang +) Python-Monorepo mit Bazel
Die Geschichte, wie theano mit TSUBAME 2.0 verwaltet wurde
Versuchen Sie es mit TensorFlow
Über das Lernen mit Google Colab
Deep Kernel Learning mit Pyro
Versuchen Sie Deep Learning mit FPGA
Generiere Pokemon mit Deep Learning
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
Eine Geschichte über den Wettbewerb mit einem Freund in Othello AI Preparation
(Jetzt) Erstellen Sie eine GPU Deep Learning-Umgebung mit GeForce GTX 960
Eine Geschichte über die Installation von matplotlib mit pip mit einem Fehler
Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ②
Eine Geschichte über den Umgang mit dem CORS-Problem
Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ①
Eine Geschichte über das zufällige Erstellen eines kurzen Songs mit Sudachi Py
Eine Geschichte über das Clustering von Zeitreihendaten des Austauschs
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Eine Geschichte über einen Python-Anfänger, der mit dem No-Modul'http.server 'feststeckt.
Maschinelles Lernen Eine Geschichte über Menschen, die mit GBDT in GBDT in Python nicht vertraut sind
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Identifikation der Katzenrasse mit Deep Learning
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Eine erfrischende Geschichte über Slice in Python
Machen Sie ASCII-Kunst mit tiefem Lernen
Eine Geschichte über die Vorhersage von Präfekturen aus Städtenamen mit Jubatus
Eine Geschichte über das Hinzufügen einer REST-API zu einem mit Python erstellten Daemon
Versuchen Sie es mit TensorFlow Part 2
Eine launische Geschichte über Slice in Python
Über das Projektmanagement von Deep Learning (DNN)
Ich suchte mit Deep Learning nach einer ähnlichen Karte von Hearthstone
Eine Geschichte über die Entwicklung eines weichen Typs mit Firestore + Python + OpenAPI + Typescript
Überprüfen Sie die Kniebeugenform mit tiefem Lernen
Kategorisieren Sie Nachrichtenartikel mit Deep Learning
Die Geschichte der Verwendung von Python reduziert
Snack-Umsatzprognose mit Deep Learning
Bringen Sie Menschen mit Deep Learning zum Lächeln
Untersuchung von PYNQ - Machen wir Deep Learning mit FPGA unter Verwendung von Python-
Eine Geschichte über einen Anfänger im Deep Learning, der versucht, Gitarren mit CNN zu klassifizieren
PPLM: Eine einfache Deep-Learning-Technik zum Generieren von Sätzen mit bestimmten Attributen
Ich habe die gängige Geschichte der Vorhersage des Nikkei-Durchschnitts mithilfe von Deep Learning (Backtest) ausprobiert.
Eine Geschichte über einen magischen Umbau, der Lubuntu in ein Chromebook bringt
Klassifizieren Sie Anime-Gesichter mit tiefem Lernen mit Chainer
Probieren Sie die Bitcoin-Preisprognose mit Deep Learning aus
Versuchen Sie es mit Chainer Deep Q Learning - Launch
Versuchen Sie mit Kipoi tiefes Erlernen der Genomik
Emotionale Analyse von Tweets mit Deep Learning
Eine Geschichte über Python Pop und Append