Angenommen, das aktuelle Datum ist $ T $, verwenden Sie Deep Learning, um den einfachen gleitenden Durchschnitt der Tagespreise von $ T + 1 $ bis $ T + 30 $ vorherzusagen. 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.
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.
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.) Zum Zeitpunkt des Lernens werden alle durch 0-1 normalisiert.
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.
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.
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) 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.
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. .. Das gesamte Lernergebnis ist wie folgt. Der Fehler wird als Dispersion ausgedrückt. 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.
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. 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.
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