Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 105

 
Dr. Trader:

Ich sage nur 2 Klassen voraus - "kaufen" und "verkaufen", was bedeutet, dass ich immer einen Handel offen haben werde. Ich arbeite mit einem Modell, ich sehe keinen Sinn darin, zwei Modelle zu erstellen, die einfach entgegengesetzte Ergebnisse liefern.

Aber ich möchte allmählich zu 3 Klassen übergehen - "kaufen"/"alles schließen und nicht handeln"/"verkaufen". Dies würde die Möglichkeit bieten, mit einer komplexeren Strategie zu handeln. Ich habe es ein paar Mal versucht, aber ich hatte Probleme mit dem Training von Modellen für drei Klassen, insbesondere wenn das Modell regressiv ist und das Ergebnis auf Klassen gerundet wird.
Ich denke, es ist einen Versuch wert, zwei Modelle zu erstellen, bei denen die ursprünglichen 1/0/-1-Klassen in 1/0/0 für das erste Modell(nur kaufen) und 0/0/1 für das zweite Modell (nur verkaufen) umgewandelt werden. Dies würde zu unausgewogenen Klassen in jedem Modell führen (die Anzahl der Beispiele mit einer Klasse ist viel höher als die der anderen), aber ich habe gute Metriken zur Bewertung von Modellen gefunden, die unter solchen Bedingungen funktionieren - F-Score und Kappa. Ich habe noch nichts in dieser Richtung unternommen, aber ein solcher Plan scheint durchaus möglich.

Die Probleme bei den Methoden dieses Zweigs sind nicht nur die Nicht-Stationarität der Zeitreihen (unterschiedliche Skalen derselben Muster nach Preis und Zeit), sondern auch die Variabilität der Muster. Das heißt, dass die Muster, die gestern noch ein Wachstum vorausgesagt haben, heute eine Stagnation oder sogar einen Rückgang bedeuten können.

Der getrennte Unterricht für Kauf und Verkauf löst diese Probleme teilweise. Ich schrieb vor ein paar Seiten, wie, ich habe zwei Raster, ein Lernen auf Kaufsignale (1;0) - kaufen oder nichts tun, und eine andere auf verkaufen (-1;0) - verkaufen oder nichts tun. Am Ausgang dieser beiden Gitter befindet sich ein Schalter, der die Signale in einem (-1;0;1) Muster zusammenführt. Die Arbeit dieses Gremiums von Gittern stellt sich als sehr interessant heraus: am Anfang gute Signale bei der Rückkopplung, allmählich nimmt die Anzahl der Signale ab, d.h. immer öfter ist die Antwort am Ausgang 0 (Muster werden nicht mehr erkannt und das ist besser als falsche Handelssignale), und nach einiger Zeit beginnen falsche Handelssignale (Muster haben sich geändert). Wenn also die Anzahl der Signale unter einen bestimmten Schwellenwert sinkt, kann und sollte dies als Beginn eines neuen Trainings mit neuen Daten angesehen werden.

Aber in Wirklichkeit gibt es keine solche "Ausbildung" und "Praxis". Alle Arten von Kreuzvalidierungen und OOS-Tests haben nicht die erwartete Wirkung und können sie auch nicht haben. Der Punkt ist, dass solche Tricks nichts anderes sind, als die Werte zu suchen und dann zu wählen, die sowohl im Trainings- als auch im Testbereich annähernd zufriedenstellend funktionieren, d.h. dieser Satz von Parametern existiert bereits am Anfang unter all ihren möglichen Varianten und es ist gleichbedeutend mit der Wahl des gesamten Geschichtsbereichs auf einmal.

Nichtsdestotrotz ist die Verwendung von zwei Modellen (in meinem Fall zwei Gittern) meiner Meinung nach das Beste, was unter den derzeit verfügbaren Methoden des maschinellen Lernens" angewendet werden kann. Es ist kein Training oder Coaching, sondern eine Möglichkeit, das Modell zu optimieren.

Heute gibt es keine echte Ausbildung mehr. Das Wiedererkennen gleicher oder ähnlicher Muster ist kein Ergebnis von Lernen, sondern von Erinnern. Die Ausbildung muss eine Art von Denkprozess beinhalten (wie primitiv auch immer), der es ermöglicht, bei der Aufnahme neuer Informationen zu argumentieren und Schlussfolgerungen zu ziehen, sowie die Fähigkeit, neue Informationen unabhängig zu generieren. Der Markt erfordert ein solches Vorgehen - ein Denken, das es meines Wissens heute nicht gibt. Und was wir heute anwenden, ist Auswendiglernen, nicht Denken, leider.

 
Andrey Dik:

Aber in Wirklichkeit gibt es so etwas wie "Training" und "Coaching" nicht. Alle Arten von Kreuzvalidierung und OOS-Kontrollen können nicht die erwartete Wirkung erzielen. Der Punkt ist, dass solche Tricks nichts anderes sind, als die Werte zu suchen und dann auszuwählen, die sowohl im Trainings- als auch im Testbereich annähernd zufriedenstellend funktionieren, d.h. dieser Satz von Parametern existiert bereits am Anfang unter all ihren möglichen Varianten und es ist gleichbedeutend mit der Auswahl des gesamten Geschichtsbereichs auf einmal.

Es gibt Modelle, die die Kreuzvalidierung bestehen, aber den Test mit neuen Daten nicht bestehen. Und es gibt Modelle, die die Kreuzvalidierung bestehen und dann irgendwie einen Gewinn abwerfen. Wenn aber ein Modell bei der Kreuzvalidierung versagt, ist es sinnlos, mit ihm auf neuen Daten zu handeln.
Meiner Meinung nach ist es ein sehr guter erster Schritt, Prädiktoren und Modellparameter auszuwählen. Weiter - Roll-Forward-Test, um herauszufinden, ob das Modell (oder eine Heuristik für die Anpassung von Modellparametern und Prädiktoren) mit neuen Daten funktionieren kann. Wenn das nicht der Fall ist, müssen wir etwas ändern.

Sie haben zwei Neuronen - Sie haben deren Parameter nicht aus dem Nichts erhalten, oder? Schichten, Lernrate, Hemmung, Gewichtskontrolle und Dutzende anderer Parameter, die Neuronen haben. Sie müssen eine Art Rollforward-Test durchgeführt haben, um die geeigneten Parameter zu bestimmen, was ebenfalls eine Kreuzvalidierung darstellt. Ich glaube nicht, dass man einfach zwei Neuronen mit Standardparametern nehmen und mit dem Handel auf den Gewinn beginnen kann.

 
Dr. Trader:

Ich glaube nicht, dass man einfach zwei Neuronen mit Standardparametern nehmen und sofort mit Gewinn handeln kann.

Warum nicht?
 
Dr. Trader:

1. Es gibt Modelle, die die Kreuzvalidierung bestehen, aber den Test mit neuen Daten nicht bestehen.

2. und es gibt Modelle, die die Kreuzvalidierung bestehen können und dann irgendwie etwas im Plus sind.

Wenn das Modell jedoch bei der Kreuzvalidierung versagt, ist es sinnlos, mit ihm auf den neuen Daten zu handeln.

4. Meiner Meinung nach ist dies ein sehr guter erster Schritt zur Auswahl von Prädiktoren und Modellparametern.

5. Nächster Schritt: Roll-Forward-Test, um festzustellen, ob das Modell mit den neuen Daten handeln kann. Wenn das nicht der Fall ist, müssen wir etwas ändern.

6. Sie haben zwei Neuronen - Sie haben deren Parameter nicht aus dem Boden geholt, oder? Schichten, Lerngeschwindigkeit, Hemmung, Gewichtskontrolle und Dutzende anderer Parameter, die Neuronen haben. Sie müssen eine Art Rollforward-Test durchgeführt haben, um die geeigneten Parameter zu bestimmen, was ebenfalls eine Kreuzvalidierung darstellt. Ich glaube nicht, dass man einfach zwei Neuronen mit Standardparametern nehmen und sofort mit Gewinn handeln kann.

1. Ja. Das bedeutet nicht, dass das Modell schlecht ist. Dies kann entweder bedeuten, dass das Modell nicht genügend Speicherplatz für die gegebene Datenmenge hat, oder es kann bedeuten, dass der Parametersatz, der für das gesamte Diagramm zusammen mit den Trainingsdiagrammen und den Validierungsdiagrammen geeignet ist, nicht gefunden wurde. Das Problem ist, dass es keine Möglichkeit gibt, genau zu bestimmen, was das Problem ist, wenn die Tests mit den neuen Daten fehlschlagen.

2. Ja, es bedeutet "ausreichend Speicher". Sie können das Gleiche wie in Punkt 1 erreichen, indem Sie einfach die Menge der Trainingsdaten reduzieren. Die Tatsache, dass wir etwas Positives auf die unbekannten Daten bekommen haben, kann als reines "Glück" betrachtet werden, weil wir Muster gefunden haben, die gleich oder sehr ähnlich zu dem sind, was das System kennt, und wir gleichzeitig genau die Marktreaktionen hatten, die vor den entsprechenden Mustern passiert sind. Das Problem ist, dass sich die Muster ständig allmählich und manchmal auch abrupt ändern und es keine Garantien für die Zukunft gibt.

3. Ja, aber es ist nicht viel schlimmer, wenn sie aus den oben genannten Gründen verabschiedet worden wäre.

4. Ja, ein guter. Aber nicht, um Vertrauen in die Robustheit des Modells in der Zukunft zu schaffen, sondern nur, um die Validierungen zu bestehen und nichts weiter.

5. Die Vorwärtsbewegung ist die einzige Möglichkeit, das System zu validieren. Der einzige. Wenn es gelingt, ein System zu schaffen, das mindestens 55-60 % effizient ist (d. h. eine Verringerung der Effizienz um 30 % oder mehr im Vergleich zu "Lern"-Parzellen), dann kann man meiner Meinung nach von einem Erfolg sprechen. Aber auch das bedeutet nur einen Kompromiss zwischen der Geschwindigkeit, mit der sich die Marktmuster ändern, und der Fähigkeit des Systems, sich die notwendige Menge an Informationen zu merken, aber es bedeutet nicht, dass das System um 30 % "dümmer" ist, sondern es bedeutet, dass das System 30 % der neuen oder veränderten alten Muster nicht lernt.

6. Der von mir erwähnte Ansatz der zwei Neuronen bedeutet nicht "Lernen" im eigentlichen Sinne. Es ist dasselbe "Auswendiglernen", nur auf geschickte Art und Weise angewandt. Ich vergesse alte Muster und erkenne neue nicht, so wie Sie, aber ich handle nicht in unbekannten Mustern, der Handel verblasst mit der Zeit, und dann erscheinen die falschen Signale. Ich führe (früher) Valk-Forward-Tests durch, bei denen neues Lernen stattfand, wenn die Anzahl der Trades pro Zeiteinheit unter den zulässigen Schwellenwert sank, so dass ich unterschiedlich lange Testabschnitte auf Valk-Forwards mit denselben "Lern"-Abschnitten erhielt. Dies führte zu einem durchschnittlichen Effizienzrückgang von 30 %.

 
Combinator:
Warum?

Wie jedes andere Modell auch, wird Neuronics einfach einige Muster in den verfügbaren Daten finden. Ob diese Muster irgendwelchen internen Prozessen in Forex entsprechen, oder ob sie einfach von den Neuronen nach dem Prinzip "multipliziere etwas mit etwas, wenn nur das Ergebnis übereinstimmt" aufgegriffen werden - niemand weiß es, es gibt keine Garantien. Damit es die internen Prozesse des Devisenhandels erkennen kann, muss seine Struktur (Schichten, Verbindungen) in irgendeiner Weise dem Devisenhandel entsprechen, es muss speziell dafür konfiguriert sein, nur dann wird es anfangen, konstant gute Ergebnisse zu liefern.

So sind zum Beispiel Faltungsneuronale Netze zur Klassifizierung von Bildern sehr beliebt. Ihre Verwendung klingt sehr einfach (Python-Bibliothek herunterladen und fertig), aber die Leute vergessen, dass viele Universitäten seit Jahrzehnten an "Bilderkennungs"-Wettbewerben teilnehmen, bei denen sie um jeden Gewinnprozentsatz kämpfen. Trendige Dinge wie "male ein Bild wie Van Gogh" oder ersetze ein Gesicht in einem Bild sind das Ergebnis jahrzehntelanger Arbeit von Universitäten mit all ihren Studenten (und wahrscheinlich auch Professoren), die viel Zeit damit verbringen, Modellparameter anzupassen oder neue Modelle zu entwickeln.
Im Devisenhandel ist dies auch möglich, aber Sie müssen genauso viel Aufwand betreiben. In diesem Fall handelt es sich bei den Gewinnen um echte Forex-Gewinne, weshalb mit den Modellkonfigurationen nicht geprahlt wird und sie nicht öffentlich zugänglich gemacht werden, sondern jeder neue Teilnehmer wieder von vorne anfangen muss.

 
Dr. Trader:

Ich glaube nicht, dass man einfach zwei Neuronen mit Standardparametern nehmen und sofort mit Gewinn handeln kann.

Daran glaube ich natürlich auch nicht. Denn das würde bedeuten, eine denkende Maschine zu schaffen, die nur einmal in ihrem Leben trainiert werden muss. Von denkenden Maschinen ist die Menschheit noch weit entfernt.
 
Andrej Dik:

Getrenntes Lernen für Kauf und Verkauf löst diese Probleme teilweise. Ich schrieb vor ein paar Seiten, wie, ich habe zwei Raster, ein Lernen auf Kaufsignale (1;0) - kaufen oder nichts tun, und eine andere auf verkaufen (-1;0) - verkaufen oder nichts tun.

Mein ternärer Klassifikator hat ebenfalls zwei Maschen, aber mit unterschiedlichen versteckten Schichten, und beide klassifizieren die Vorhersage der nächsten Kursrichtung, d. h. 1 oder -1. Am Ausgang befindet sich ein Schalter, der im Falle, dass eines der Gitter 1 und das andere -1 ausgibt (einander widersprechen), 0 ausgibt - nichts tun.

Bei den abhängigen Variablenwerten ist mit Kauf und Verkauf alles klar, denn sie lassen sich durch die Tatsache bestimmen, dass die Richtung der Kursbewegung dem Muster folgt. Doch hier stellt sich eine knifflige Frage: Unter welcher Bedingung markieren Ihre binären Klassifikatoren die abhängige Variable mit 0 - nichts tun?

In der Natur gibt es keine Fakten, IMHO.

 
Andrey Dik:

5. ...

6. ...

Mit diesen Erklärungen klingt es, als ob es wahr wäre. Und wie seltene Muster handeln Sie? Angenommen, wir haben Übungsbeispiele mit den Klassen"Kaufposition eröffnen " und "alle Geschäfte schließen", wie hoch ist dann das prozentuale Verhältnis dieser Klassen? Ich kann davon ausgehen, dass die Kaufklasse der starken Kursbewegung nach oben um Hunderte von Punkten entspricht, d.h. der Anteil der Kaufklasse beträgt etwa 10% aller Trainingsbeispiele?
 
Andrej Dik:

1. Ja. Das bedeutet nicht, dass das Modell schlecht ist. Es könnte entweder bedeuten, dass der Speicher des Modells für die Menge der bereitgestellten Daten nicht ausreicht,

2. weil die Muster aufgetreten sind, die gleich oder sehr ähnlich zu dem sind, was das System weiß, und die genauen Marktreaktionen, die vor dem Auftreten der entsprechenden Muster stattgefunden haben. Das Problem ist, dass sich die Muster ständig allmählich und manchmal auch abrupt ändern und es keine Garantie für die Zukunft gibt.

1) Es gibt ein Netzwerk, das vorlernen kann, wenn es Daten erhält, die ihm vorher nicht bekannt waren. Vielleicht interessiert es Sie, darüber zu lesen, das Netzwerk heißt SOINNhttps://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=soinn

2) Ich habe es satt, darüber zu schreiben, außerdem habe ich praktisch bewiesen, dass der Markt gegen meine eigenen Statistiken verstößt, und sogar die Mechanik erklärt, warum das passiert, und die ganze klassische Art des Lernens kann nicht darauf angewendet werden, aber niemand interessiert sich dafür, jeder macht das Gleiche.

Google
Google
  • www.google.com.ua
Голосовой поиск – это очень удобно! Чтобы найти нужную информацию, скажите "О'кей, Google" и произнесите запрос.
 
Yury Reshetov:

Mein ternärer Klassifikator hat ebenfalls zwei Netze, aber mit unterschiedlichen versteckten Schichten, und beide klassifizieren die Tatsache der nächsten Kursrichtung, d. h. 1 oder -1. Es gibt einen Schalter am Ausgang, der im Falle, dass eine der Maschen 1 und die andere -1 ausgibt, 0 ausgibt - nichts zu tun.

Bei Käufen und Verkäufen ist alles klar, denn sie lassen sich an der Tatsache erkennen, dass die Richtung der Preisbewegung dem Muster folgt. Doch hier stellt sich eine knifflige Frage: Unter welchen Bedingungen markieren Ihre binären Klassifikatoren die abhängige Variable als 0 - nichts tun?

In der Tat gibt es keine solche Bedingung wie Fakten in der Natur, IMHO.

VERKAUFEN KAUFEN Interpretation

-1 0 verkaufen

0 0 Zaun

0 1 kaufen

-1 1 Zaun

Hier ist die Umschalttabelle. Daraus können Sie ersehen, dass Signale auftreten, wenn die Rastersignale vorhanden sind und sich nicht widersprechen. Nach dem Training werden die Muster erkannt und es kommt zu einem erfolgreichen Handel. Mit der Zeit beginnen die Messwerte entweder einander zu widersprechen (out 0 - fence) oder beide Raster hören auf, die Muster zu erkennen (out 0 - fence). Im Laufe der Zeit nimmt also die Zahl der Geschäfte ab, d. h. es gilt das Prinzip "Wer nicht sicher ist, handelt nicht".

Aber Ihre Frage scheint eine andere zu sein: Wie bringen Sie das relevante Netz dazu, zu kaufen/verkaufen, anstatt unentschlossen zu bleiben? - Die Antwort ist einfach: ein Punktesystem. Für richtige Antworten gibt es Punkte, für falsche und unvollständige Antworten Strafpunkte. Wir müssen das Verhältnis der Punkte wählen, es ist auch eine große Aufgabe, weil wir am Ende eine koordinierte Arbeit der beiden Gitter erreichen müssen, aber das Ergebnis ist die Mühe wert.

Imho sind die Muster für Kauf und Verkauf unterschiedlich. Das ist der Grundgedanke, der auch in Ihrem Fall zutreffen könnte.