Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 88
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Yur, machen eine normale Version des Programms (oder aktualisiert) für die Menschen)))
1. lassen Sie es Standarddateien dieses Typs lesen - Kopfzeile (mit Anführungszeichen und ohne), Daten, Trennzeichen, lassen Sie es zpt, diff.zpt, Tabellierung lesen. Beispiel.
"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1
2. nur 10 Eingaben für das Modell verwendet werden, aber es möglich ist, viele von ihnen zu laden, dann
in einer separaten Registerkarte, oder setzen Sie Großbuchstaben (Sie wählen die Eingänge), oder sonst.
3. ohne Normalisierung! (oder deaktiviert), denn wenn die Daten anfangs auf 0 zentriert sind, wird nach der Konvertierung
x-x.min/....(oder was immer Sie haben) - fliegen Sie weg)))
4. die Zufälligkeit weglassen (oder umschaltbar), die Daten einfach in zwei Teile aufteilen, der Reihe nach zählen und den Prozentsatz der erfolgreichen Vorhersagen für 1 ausgeben (für 0 nicht)
5. hat die Bedeutung von Inputs erkannt - gut!
6. lassen Sie zusätzlich zur ausgegebenen Formel die vollständige! ausgeben, d.h. jetzt
double x2 = 2,0 * (v5 + 1,0) / 2,0 - 1,0;
double Entscheidung = -0.2632437547312642 -0.2634178652535958 * x2
+ 0.05267978803936412
müssen wir -
Name Ziel = -0,2632437547312642 -0,2634178652535958 * Konstruktion einfügen x2= (2,0 * (v5 + 1,0) / 2,0 - 1,0)
+ 0.05267978803936412
erhalten wir -
Name Ziel = -0,2632437547312642 -0,2634178652535958 * (2,0 * (v5 + 1,0) / 2,0 - 1,0)
+ 0.05267978803936412
Sie erhalten ein einigermaßen brauchbares Gerät für schnelle Tests. Dann können Sie noch einfügen usw., einfach (nicht gierig)
Algorithmen, mit einer Auswahl... Andernfalls ist das Werkzeug nutzlos. Während die Datei bearbeitet wird, wird dies und jenes... Es ist einfacher, etwas anderes zu benutzen...
Wo ist die Version 7?
So lala - einfach nicht genug Köpfchen und Zeit.
Man muss mit der Zielvariablen beginnen und sie dann mit Prädiktoren abgleichen und sie dann sozusagen mit Mathematik überprüfen. Wie auch immer, der Prozess ist mühsam und ich weiß nicht, wie ich ihn formalisieren soll.
4. den Zufall ausschalten (oder deaktivieren), die Daten einfach in zwei Teile aufteilen, der Reihe nach zählen und den Prozentsatz der erfolgreichen Vorhersagen für 1 ausgeben (keine Notwendigkeit für 0)
Wenn Sie jPrediction für Forex verwenden wollen, ist dies wahrscheinlich das Wichtigste, was Sie hinzufügen müssen. Es gibt viele Modelle, die die Daten nach dem Zufallsprinzip in zwei Teile aufteilen, dann auf dem ersten Teil trainieren und auch auf dem zweiten Teil gute Ergebnisse zeigen. Die meisten dieser Modelle werden jedoch bei neuen Daten unwirksam sein. Im Forex gibt es keine konstanten Abhängigkeiten, gute Ergebnisse bei einer Stichprobe sind keine Garantie für gute Ergebnisse bei neuen Daten. Die einzige Möglichkeit, um sicherzustellen, dass ein Modell für den Devisenhandel geeignet ist, ist ein Rollforward-Test:
Das Modell sollte bei den rot markierten Daten eine gute Vorhersagekraft aufweisen. In jPrediction müssen solche Tests nun manuell durchgeführt werden, indem die Daten für jeden Testfall neu eingegeben werden, was für ernsthafte Arbeit nicht geeignet ist.
Und ich stimme zu, dass es besser ist, eine Punktzahl nur für die Testdaten anzuzeigen als eine Gesamtzahl für Training und Test.
Alle Noten, die jPrediction jetzt erzeugt, sind für Forex unzureichend und nur irreführend.
Hier ist übrigens zu sehen, wie die Vorwärtsrolle im Caret-Paket für R durchgeführt wird:
http://topepo.github.io/caret/splitting.html(Abschnitt Datensplitting für Zeitreihen)
Das Modell wird anhand der ersten 1000 Stichproben trainiert und dann anhand der Stichproben 1001-1300 getestet. Dann wechseln Sie zu 300, trainieren Sie 301-1300, testen Sie 1301-1600 usw., bis Sie keine Trainingsbeispiele mehr haben.
Yur, machen Sie eine normale Version des prog (oder aktualisiert) für Menschen))))
1. lassen Sie es die Standarddateien dieses Typs lesen - Kopfzeile (mit oder ohne Anführungszeichen), Daten, Begrenzungszeichen lassen Sie es zpt, tchk.zpt, Tabellierung beschleunigen. Beispiel.
2. vielleicht nur 10 Eingaben für das Modell verwenden, aber es möglich machen, viele von ihnen zu laden, dann
Auf einer separaten Registerkarte können Sie Markierungen setzen (Sie wählen die Eingänge aus) oder etwas anderes.
3. ohne Normalisierung! (oder deaktiviert), denn wenn die Daten anfangs auf 0 zentriert sind, wird nach der Konvertierung
x-x.min/....(oder was immer Sie haben) - fliegen Sie weg)))
4. die Zufälligkeit weglassen (oder umschaltbar), die Daten einfach in zwei Teile aufteilen, der Reihe nach zählen und den Prozentsatz der erfolgreichen Vorhersagen für 1 ausgeben (für 0 nicht)
5. hat die Bedeutung von Inputs erkannt - gut!
6. zusätzlich zu der Formel, die ausgegeben wird, die vollständige! ausgeben lassen, die nun lautet
7. Wo ist Version 7?
Sollte jemandem etwas an jPrediction nicht gefallen, so ist das Projekt mit Open Source unter GNU GPL Lizenz offen und das Erstellen von Forks, also das Ändern und Modifizieren von etwas, ist nicht nur nicht verboten, sondern in gewissem Maße sogar willkommen.
Wenn Sie jPrediction für Forex verwenden wollen, ist dies wahrscheinlich das Wichtigste, was Sie hinzufügen müssen. Es gibt zahlreiche Modelle, die die Daten nach dem Zufallsprinzip in zwei Teile aufteilen, dann auf dem ersten Teil trainieren und auch auf dem zweiten Teil gute Ergebnisse erzielen können. Die meisten dieser Modelle werden jedoch bei neuen Daten unwirksam sein. Im Forex gibt es keine konstanten Abhängigkeiten, gute Ergebnisse bei einer Stichprobe sind keine Garantie für gute Ergebnisse bei neuen Daten. Die einzige Möglichkeit, um sicherzustellen, dass ein Modell für den Devisenhandel geeignet ist, ist ein Rollforward-Test:
Das Modell sollte bei den rot markierten Daten eine gute Vorhersagekraft aufweisen. In jPrediction müssen solche Tests nun manuell durchgeführt werden, indem die Daten für jeden Testfall neu eingegeben werden, was für ernsthafte Arbeit nicht geeignet ist.
Und ich stimme zu, dass es besser ist, eine Punktzahl nur für die Testdaten anzuzeigen als eine Gesamtzahl für Training und Test.
Alle Noten, die jPrediction jetzt vergibt, sind für Forex unzureichend und nur irreführend.
Hier ist übrigens zu sehen, wie die Vorwärtsrolle im Caret-Paket für R durchgeführt wird:
http://topepo.github.io/caret/splitting.html(Abschnitt Datensplitting für Zeitreihen)
Das Modell wird an den ersten 1000 Stichproben trainiert und dann an den Stichproben 1001-1300 getestet. Dann verschieben Sie auf 300, trainieren Sie auf 301-1300, testen Sie auf 1301-1600 usw., bis die Trainingsbeispiele aufgebraucht sind.
Alle Schätzungen, die jPrediction jetzt herausgibt, sind für den Forex-Bereich unzureichend und nur irreführend.
Es handelt sich um unbegründete Behauptungen, also um das, was man gemeinhin als Bullshit bezeichnet. Um die Wirksamkeit von Walk Forward zu demonstrieren, stellen Sie bitte vergleichende Ergebnisse von Modellen, die in jPrediction abgeleitet wurden, und Modellen, die nach Walk Forward abgeleitet wurden, zur Verfügung, so dass sie auf ihre "Lousiness" hin überprüft werden können. Wenn solche Ergebnisse Ihre Worte bestätigen, dann wäre es sinnvoll, den derzeit in jPrediction implementierten Testalgorithmus durch Walk Forward zu ersetzen.
Ich habe immer wieder erlebt, dass sich scheinbar "naheliegende" Ideen nach ihrer Umsetzung und Prüfung durch die Erfahrung als "leer" herausstellen. Nur ein sehr kleiner Teil der Ideen ist wirksam und oft nur nach zusätzlicher Bearbeitung mit einer "Feile". Das liegt daran, dass die Details der Ideen fehlen. Und genau in diesen Details steckt der Teufel.
Linus Torvald (Schöpfer des Linux-Kernels) wird nicht müde zu betonen: "Früher oder später trifft die Theorie auf die Praxis. Und die Praxis ist immer das Kriterium der Wahrheit. Immer!".
Ein weiteres Problem bei Walk Forward ist, dass wir in jeder Phase viele Modelle bekommen. Welches dieser Modelle sollte als Arbeitsmodell beibehalten werden und nach welchen Kriterien sollte es ausgewählt werden?
Es handelt sich dabei um unbegründete Behauptungen, d. h. um das, was man gemeinhin als Schwachsinn bezeichnet. Um die Wirksamkeit des Walk Forward zu demonstrieren, stellen Sie bitte vergleichende Studien von jPrediction-Modellen und Post-Walk Forward-Modellen zur Verfügung, damit sie auf ihre "Lousiness" hin überprüft werden können. Wenn solche Ergebnisse Ihre Worte bestätigen, dann wäre es sinnvoll, den derzeit in jPrediction implementierten Testalgorithmus durch Walk Forward zu ersetzen.
Ich habe immer wieder erlebt, dass sich scheinbar "naheliegende" Ideen, sobald sie umgesetzt und durch Erfahrung getestet wurden, als "leer" herausstellen. Nur ein sehr kleiner Teil der Ideen ist wirksam, und oft erst nach einer weiteren "Überarbeitung". Das liegt daran, dass die Details der Ideen fehlen. Und genau in diesen Details steckt der Teufel.
Linus Torvald (Schöpfer des Linux-Kernels) wird nicht müde zu wiederholen: "Theorie trifft früher oder später auf Praxis. Und die Praxis erweist sich immer als das Kriterium der Wahrheit. Immer!".
Ein weiteres Problem bei Walk Forward ist, dass wir in jeder Phase viele Modelle bekommen. Welches dieser Modelle sollte als Arbeitsmodell beibehalten werden und nach welchen Kriterien sollte es ausgewählt werden?
Es gibt keinen Grund zu streiten. Wir arbeiten an einem sehr komplexen Forschungsthema. Es gibt eine Reihe von Annahmen. Und diese Annahmen führen dazu, dass zu viel gelernt wird und zu viele Stichproben gemacht werden.
Zwei einfache Regeln: Täusche den Markt, täusche nicht dich selbst.
Walk Forward ist natürlich eine gute Methode. Die wichtigsten Parameter sind dabei die Lerntiefe und die Testlänge. Gleichzeitig (!!!), wenn diese Parameter so angepasst werden, dass das Ergebnis in der Vorwärtsposition besser wird, wird Walk Forward übertrainiert! Das heißt, dass wir auf einem großen Brocken wiederholt eine Walk-Forward-Optimierung durchführen. Auf einem anderen, sich nicht überschneidenden Stück versuchen wir die besten Walk Forward-Parameter auf "Training" und laufen einen weiteren vollen Wolf vorwärts, aber nur einmal. Wenn das Ergebnis gut ist, dann erfasst das Modell die Abhängigkeiten. Wenn das Ergebnis schlecht ist, haben wir Walk Forward einfach mit einem weniger guten Modell neu trainiert.
Das gleiche Problem besteht bei einmaligen Tests an einer verzögerten Probe. Daran arbeite ich gerade: meine Ergebnisse aus dem Übertraining zu befreien. Die Ergebnisse der Kreuzvalidierung sollten mit der aufgeschobenen Probe für die endgültige Prüfung übereinstimmen. Die Auswahl des besten Modells durch Kreuzvalidierung führt jedoch zu den annähernd besten Ergebnissen außerhalb der Stichprobe. Andernfalls - wenn es keine oder eine negative Korrelation gibt - haben wir ein unangemessenes Forex-Modell, das geändert werden muss.
Es handelt sich um unbegründete Behauptungen, also um das, was man im allgemeinen Sprachgebrauch als Bullshit bezeichnet. Um die Wirksamkeit von Walk Forward zu beweisen, legen Sie bitte die Ergebnisse vergleichender Studien von jPrediction-Modellen und Post-Walk-Forward-Modellen in einer Form vor, die auf "Lousiness" überprüft werden kann. Wenn solche Ergebnisse Ihre Worte bestätigen, dann wäre es sinnvoll, den derzeit in jPrediction implementierten Testalgorithmus durch Walk Forward zu ersetzen.
Ich habe immer wieder erlebt, dass sich scheinbar "naheliegende" Ideen, sobald sie umgesetzt und durch Erfahrung getestet wurden, als "leer" herausstellen. Nur ein sehr kleiner Teil der Ideen ist wirksam, und oft erst nach einer weiteren "Überarbeitung". Das liegt daran, dass die Details der Ideen fehlen. Und genau in diesen Details steckt der Teufel.
Linus Torvald (Schöpfer des Linux-Kernels) wird nicht müde zu wiederholen: "Theorie trifft früher oder später auf Praxis. Und die Praxis erweist sich immer als das Kriterium der Wahrheit. Immer!".
Ein weiteres Problem bei Walk Forward ist, dass wir in jeder Phase viele Modelle bekommen. Welches dieser Modelle sollte als Arbeitsmodell beibehalten werden und nach welchen Kriterien sollte es ausgewählt werden?
Es ist es nicht wert, darüber zu streiten.
Ich stimme zu. Dazu ist es jedoch erforderlich, die Zahl der unbegründeten Anschuldigungen in diesem Thema zu minimieren. Die beste Option ist die Angabe der Ergebnisse von Vergleichsstudien mit der Möglichkeit einer doppelten Überprüfung.
Wir arbeiten an einem sehr komplexen Forschungsprojekt.
Einige arbeiten, andere drehen Däumchen, ohne etwas zu beweisen (wir wollen nicht mit dem Finger auf andere zeigen).
Es lohnt sich nicht zu kämpfen.
Ich stimme zu.
Hier gibt es eine Menge Annahmen. Und diese Annahmen führen zu einer Überqualifizierung und zu einer Überschreitung der Stichprobengröße.
Man kann sich keine Annahmen aufs Brot schmieren und sie in die Tasche stecken. Daher sollte alles empirisch überprüft werden, anstatt unbewiesene Annahmen zu treffen, um nicht in die Gefahr des Übertrainings und des Absinkens außerhalb der Stichprobe zu geraten.
Walk Forward ist natürlich eine gute Methode. Die wichtigsten Parameter sind jedoch die Lerntiefe und die Testlänge. Wenn wir gleichzeitig (!!!) diese Parameter so ansprechen, dass das Ergebnis auf der Vorwärtsspur besser wird, werden wir Walk Forward übertrainieren! Das heißt, dass wir auf einem großen Brocken wiederholt eine Walk-Forward-Optimierung durchführen. In einem weiteren, sich nicht überschneidenden Chunk probieren wir die besten Walk-Forward-Parameter für "Training" aus und führen es ein weiteres Mal durch. Wenn das Ergebnis gut ist, dann nimmt das Modell die Abhängigkeiten auf. Wenn das Ergebnis schlecht ist, dann haben wir Walk Forward einfach mit einem nicht so guten Modell neu trainiert.
Das gleiche Problem besteht bei einmaligen Tests an einer verzögerten Probe. Daran arbeite ich gerade: meine Ergebnisse aus dem Übertraining zu befreien. Die Ergebnisse der Kreuzvalidierung sollten mit der aufgeschobenen Probe für die endgültige Prüfung übereinstimmen. Die Auswahl des besten Modells durch Kreuzvalidierung führt jedoch zu den annähernd besten Ergebnissen außerhalb der Stichprobe. Andernfalls - wenn es keine oder eine negative Korrelation gibt - haben wir ein unangemessenes Forex-Modell, das geändert werden muss.
Unterm Strich haben alle Methoden Vor- und Nachteile. Annahmen übertreiben die Vorzüge und vernachlässigen die Nachteile.
Ein noch wichtigerer Punkt ist, dass keine Methode es erlaubt, Modelle nach dem besten Qualitätskriterium auszuwählen, und alle Methoden wählen nach dem Prinzip der Zurückweisung aus - sie filtern nur die wissentlich ungeeigneten aus. Keine ML-Methode kann die potenzielle Eignung dessen berechnen, was nach der Ablehnung übrig bleibt.
Insbesondere in nicht-stationären Umgebungen. Es ist möglich, die scheinbar am besten geeigneten Modelle im Hinblick auf ihre Verallgemeinerbarkeit auszuwählen, aber morgen furzt irgendein Zentralbankchef bei einer Sitzung irgendetwas und alle Modelle gehen den Bach runter.
Der Punkt ist, dass alle Methoden Vor- und Nachteile haben. Annahmen übertreiben die Vorzüge und vernachlässigen die Nachteile.
Ein noch wichtigerer Punkt ist, dass keine Methode die Modelle nach dem besten Qualitätskriterium auswählt, sondern alle Methoden nach dem Prinzip der Zurückweisung - nur das herauszufiltern, was als ungeeignet bekannt ist. Keine ML-Methode kann den potenziellen Wert dessen berechnen, was nach der Ablehnung übrig bleibt.
Dies gilt umso mehr in nicht-stationären Umgebungen. Es scheint möglich zu sein, die geeignetsten Modelle im Hinblick auf ihre Verallgemeinerbarkeit auszuwählen, aber morgen wird irgendein Zentralbankchef einen Furz machen und alle Modelle werden den Bach runtergehen.