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:
- Ich habe Tick-by-Tick-Daten für den Monat Juli 2013 erhalten. Es hat Bid / Ask / Bid-Volumen / Ask-Volumen.
- Alle Zecken für den Zeitraum 12 bis 14 Uhr für alle Tage extrahiert.
- Erstellen Sie aus diesen Daten einen Datensatz, in dem jeder Eintrag nacheinander aus n Gebotswerten besteht.
- Verwendet diese Daten, um eine ANN mit n-1 Eingaben zu trainieren, und die Ausgabe ist der prognostizierte n-te Gebotswert.
- 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.
- 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?
quelle
Antworten:
Die Ergebnisse, die Sie sehen, sind kein Nebenprodukt Ihres Trainingsprodukts, sondern
neural nets
keine gute Wahl für diese Aufgabe.Neural nets
sind 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 wieridge
undrobust regression
, die allgemeinere, weniger komplexe Muster identifizieren, besser.Der Gewinner eines ähnlichen Kaggle-Wettbewerbs hat genau
robust regression
aus 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.quelle
Probieren Sie ein wiederkehrendes neuronales Netzwerk aus, ein Modell, das sich gut für Zeitreihendaten eignet. Sie sind notorisch schwer zu trainieren, scheinen aber bei richtigem Training gute Leistungen zu erbringen: http://cs229.stanford.edu/proj2012/BernalFokPidaparthi-FinancialMarketTimeSeriesPredictionwithRecurrentNeural.pdf
quelle