Devisenmarktprognose mit neuronalen Netzen

10

Ich möchte ANN verwenden, um Handelswährungen zu automatisieren, vorzugsweise USD / EUR oder USD / GBP. Ich weiß, dass dies schwierig und möglicherweise nicht einfach ist. Ich habe bereits einige Artikel gelesen und einige Experimente durchgeführt, aber ohne viel Glück. Ich würde gerne Ratschläge von Experten erhalten, damit dies funktioniert.

Folgendes habe ich bisher gemacht:

  1. Ich habe Tick-by-Tick-Daten für den Monat Juli 2013 erhalten. Es hat Bid / Ask / Bid-Volumen / Ask-Volumen.
  2. Alle Zecken für den Zeitraum 12 bis 14 Uhr für alle Tage extrahiert.
  3. Erstellen Sie aus diesen Daten einen Datensatz, in dem jeder Eintrag nacheinander aus n Gebotswerten besteht.
  4. Verwendet diese Daten, um eine ANN mit n-1 Eingaben zu trainieren, und die Ausgabe ist der prognostizierte n-te Gebotswert.
  5. Das ANN hatte n-1 Eingangsneuronen, (n-1) * 2 + 1 verstecktes und 1 Ausgangsneuron. Die Eingabeschicht hatte einen linearen TF, ein versteckter logarithmischer TF und ein linearer TF.
  6. Trainierte das Netzwerk mit Back Propagation zuerst mit n-125 und dann mit 10.

Für beide n fiel die MSE nicht unter 0,5 und blieb während des gesamten Trainings auf diesem Wert. Unter der Annahme, dass dies daran liegen könnte, dass die Zeitreihen völlig zufällig sind, habe ich das R-Paket verwendet, um eine teilweise Autokorrelation im Datensatz (pacf) zu finden. Dies ergab Werte ungleich Null nur für 2 und 3 Verzögerungen.

Frage 1: Was bedeutet das genau?

Dann habe ich den Hurst-Exponenten verwendet, um die Zufälligkeit zu bewerten. In R zeigte Hurst (Werte) Werte über 0,9.

Frage 2: Es soll fast zufällig sein. Sollte es einen Wert haben, der näher an 0,5 liegt?

Ich wiederholte das Training des ANN mit n = 3. Die ANN wurde geschult und konnte einen ziemlich niedrigen Wert für MSE erzielen. Die berechnete Ausgabe dieser ANN unterscheidet sich jedoch nicht wesentlich vom (n-1) -ten Gebotswert. Es sieht so aus, als würde ANN nur das letzte Gebot als nächstes Gebot annehmen! Ich habe verschiedene Netzwerkstrukturen (alle mehrschichtigen Wahrnehmungen), verschiedene Trainingsparameter usw. ausprobiert, aber die Ergebnisse sind gleich.

Frage 3: Wie kann ich die Genauigkeit verbessern? Gibt es andere Trainingsmethoden als Backpropagation?

user1300
quelle
Ich bin mir nicht sicher, ob Sie es besser machen, als 1 / f-Rauschen vorherzusagen, wenn Sie vergangene Werte als Indikatoren für zukünftige verwenden. Scholarpedia.org/article/1/f_noise#Stock_markets_and_the_GNP - Ihre bisherigen Ergebnisse scheinen damit übereinzustimmen . Wahrscheinlich sollten Sie sich andere mögliche Merkmale ansehen, die einen Grund haben, mit zukünftigen Wechselkursen zu korrelieren. Wenn dies einfach wäre, gäbe es reichhaltigere Datenwissenschaftler.
Neil Slater
Ja, vielleicht tragen andere Variablen mehr zum nächsten Wert bei als die Zeitreihenwerte selbst. Ich werde auch damit experimentieren. Vielen Dank für die Hinweise.
user1300

Antworten:

6

Die Ergebnisse, die Sie sehen, sind kein Nebenprodukt Ihres Trainingsprodukts, sondern neural netskeine gute Wahl für diese Aufgabe. Neural netssind effektiv ein Mittel, um eine nichtlineare Funktion hoher Ordnung durch Zusammensetzen einer Reihe einfacherer Funktionen zu erzeugen. Dies ist oft eine wirklich gute Sache, da neuronale Netze sehr komplexe Muster anpassen können.

An einer Börse wird jedoch jedes komplexe Muster, wenn es gehandelt wird, schnell verfallen. Das Erkennen eines komplizierten Musters führt im Allgemeinen nicht zu nützlichen Ergebnissen, da es sich kurzfristig typischerweise um komplexe Muster handelt. Abhängig von der von Ihnen gewählten Metrik gibt es außerdem eine Reihe von Möglichkeiten, eine gute Leistung zu erzielen, die sich beim Investieren nicht auszahlen (z. B. nur die Vorhersage des letzten Werts in Ihrem Beispiel).

Darüber hinaus ist der Aktienmarkt erstaunlich chaotisch, was zu einer neural netÜberanpassung führen kann. Dies bedeutet, dass die erlernten Muster schlecht verallgemeinert werden. Etwas in der Art, dass nur eine Aktie über einen Tag sinkt und einheitlich entschieden wird, dass die Aktie immer sinken wird, nur weil sie relativ kurzfristig gesehen wurde. Stattdessen sind Techniken wie ridgeund robust regression, die allgemeinere, weniger komplexe Muster identifizieren, besser.

Der Gewinner eines ähnlichen Kaggle-Wettbewerbs hat genau robust regressionaus diesem Grund verwendet. Sie werden wahrscheinlich bessere Ergebnisse sehen, wenn Sie zu einem flachen Lernmodell wechseln, das Funktionen einer niedrigeren Polynomordnung über die tiefen komplexen Funktionen eines neuronalen Netzes findet.

indico
quelle
vielen Dank. Ich werde eine robuste Regression bewerten und sehen, wie es geht.
user1300