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

 
Andrey Dik #:

Ja, es geht immer darum, die Robustheit des Modells bei neuen Daten zu gewährleisten. Deshalb habe ich gesagt, dass die Suche nach einem solchen Kriterium eines der wichtigsten und schwierigsten ist.

Ich meine, dass die Ergebnisbewertungsmetriken, die wir im Handel und beim maschinellen Lernen zu verwenden gewohnt sind, nur einen Teil der Bewertung der Qualität des resultierenden Modells/Tunings/der Annäherung darstellen.

Wichtig ist, unter welchen Bedingungen wir dies erreicht haben. Wie viele Informationen waren dafür erforderlich. Wir müssen die Stabilität der Beobachtungen im Laufe der Zeit bewerten. Der Beitrag der einzelnen Prädiktoren.

Das Problem bei komplexen Modellen mit einer großen Anzahl von Prädiktoren und Entscheidungsregeln (unabhängig davon, ob es sich um Bäume oder Neuronen handelt) besteht darin, dass sie komplexe Muster erzeugen, die sich wahrscheinlich nicht in ihrer Gesamtheit wiederholen, was zu einer Verzerrung der Wahrscheinlichkeit der Zuordnung zu einer der Klassen führt. Vorhin habe ich ein Bild gepostet, das zeigt, dass die meisten Blätter bei neuen Daten einfach nicht aktiviert werden.

All dies kommt daher, dass wir es mit einer "Funktion" (eigentlich ihrer Summe) zu tun haben, die nicht vollständig untersucht werden kann, um sie zu approximieren. Das bedeutet, dass wir nur denen besondere Aufmerksamkeit schenken müssen, die besser verstanden/bekannt sind. Es ist besser, das Modell bei neuen Daten "schweigen" zu lassen, da es mit der Situation nicht vertraut ist, als mit Einzelfällen aus der Vergangenheit zu operieren.

Es stellt sich also die Frage, wie man das Modell zum Schweigen bringen kann, wenn es nicht sicher ist, und wie man ihm Vertrauen schenken kann, wenn die Wahrscheinlichkeit günstiger Ereignisse hoch ist.

Wir brauchen Methoden, um fertige Modelle zu korrigieren. Sie können durch die Beeinflussung des Modells nach dem Training oder durch die Anwendung von Modellen zweier Klassen - eines vom Typ "bousting" und eines vom Typ "nearest neighbours" - realisiert werden.

 
Aleksey Vyazmikin #:

Ich will damit sagen, dass die Ergebnisbewertungsmetriken, die wir im Handel und beim maschinellen Lernen zu verwenden gewohnt sind, nur einen Teil der Bewertung der Qualität des resultierenden Modells/der Abstimmung/der Annäherung darstellen.

Wichtig ist, unter welchen Bedingungen wir dies erreicht haben. Wie viele Informationen waren dafür erforderlich. Wir müssen die Stabilität der Beobachtungen im Laufe der Zeit bewerten. Der Beitrag der einzelnen Prädiktoren.

Das Problem bei komplexen Modellen mit einer großen Anzahl von Prädiktoren und Entscheidungsregeln (seien es Bäume oder Neuronen) besteht darin, dass sie komplexe Muster erzeugen, die sich wahrscheinlich nicht in ihrer Gesamtheit wiederholen werden, was zu einer Verzerrung der Wahrscheinlichkeit der Zuordnung zu einer der Klassen führt. Ich habe vorhin ein Bild von "was die Bäume so treiben" gepostet, das zeigt, dass die meisten Blätter bei neuen Daten einfach nicht aktiviert werden.

All dies kommt daher, dass wir es mit einer "Funktion" (eigentlich ihrer Summe) zu tun haben, die nicht vollständig untersucht werden kann, um sie zu approximieren. Das bedeutet, dass wir nur denen besondere Aufmerksamkeit schenken müssen, die besser verstanden/bekannt sind. Es ist besser, das Modell zu neuen Daten "schweigen" zu lassen, da es mit der Situation nicht vertraut ist, als mit Einzelfällen aus der Vergangenheit zu operieren.

Es stellt sich also die Frage, wie man das Modell zum Schweigen bringen kann, wenn es nicht sicher ist, und wie man ihm Vertrauen schenken kann, wenn die Wahrscheinlichkeit günstiger Ereignisse hoch ist.

Wir brauchen Methoden, um fertige Modelle zu korrigieren. Dies kann durch die Auswirkung auf das Modell nach dem Training geschehen oder durch die Anwendung von Modellen zweier Klassen - eines vom Typ Bousting und eines vom Typ K-Nächste Nachbarn.

Ich habe früher Modelle erstellt, die mit der Zeit einfach keine Handelssignale mehr lieferten. Und ja, das ist besser, als die Wahrscheinlichkeit richtiger Antworten bei neuen Daten auf 50/50 zu verschieben. Der Punkt ist, dass beim Training, um die Antworten des Gitters in einem engen Zahlenbereich zu erhalten, mit der Zeit die Antworten beginnen, aus dem Bereich herauszugehen und die Signale verschwinden. Dies ist ein sehr arbeitsintensiver Prozess, ich habe es nicht geschafft, das Training und den weiteren Handel zu automatisieren.

Dies ist einer der Ansätze, wahrscheinlich gibt es andere, es ist notwendig, um dieses Thema zu studieren.

 
Andrey Dik #:

Das Wesen - während der Ausbildung zu erreichen, schlagen die Gitter Antworten in einem engen Bereich von Zahlen, im Laufe der Zeit die Antworten beginnen, aus dem Bereich und Signale verschwinden zu gehen. Dies ist ein sehr arbeitsintensiver Prozess, ich habe es nicht geschafft, Ausbildung und weiteren Handel vollständig zu automatisieren.

Ich habe diese Idee mit Hilfe des MT5-Optimierers umgesetzt:

Ich habe eine Bedingung für mein Pseudo-Neuron gesetzt: "Open BUY if the result of the set gives a number in the range Close[1] +/- 0.00050 pips."
Input - one number only - Close[2];

Der Optimiser beginnt, fleißig nach profitablen Trades zu suchen, aber stattdessen sortiere ich die Sets nach der Anzahl der Trades.

Wenn der Optimiser fertig ist, wählt man das auszehrendste Set mit der größten Anzahl an Trades - das bedeutet natürlich, dass der Expert Advisor die maximale Anzahl an zukünftigen Preisen erraten hat.

Dann wechsle ich in den Testmodus, wo die Bedingung bereits geändert wurde:"Open BUY if the result of the set gives a number greater than Close[1] by N points "

Voila: der Forward ist in einem Jahr profitabel.

Ein Problem: es funktionierte nur mit einer Stundenkerze um 2 Uhr morgens. Closing - zur Eröffnung der nächsten Stunde.

Ich habe irgendwie ein solches Muster gefunden. Es funktionierte bei EURUSD, USDCHF und EURGBP zu einer anderen Morgenstunde.

 
Andrey Dik #:
Rasterantworten in einem engen Bereich von Zahlen

Reden wir über NS oder ein anderes Gitter?

Andrey Dik #:
im Laufe der Zeit die Antworten beginnen, aus dem Bereich zu bewegen und Signale verschwinden

Liegt es an der Veränderung der Gesamtzahl der Prädiktoren, oder zeigt vielleicht nur einer nicht mehr das "gewünschte" Ergebnis?

Generell kann die Frage, warum etwas kaputt ist, sehr wichtig für weitere Ideen sein.

 
Aleksey Vyazmikin #:

1. Reden wir über NS oder ein anderes Netz?

2. Liegt es an der Veränderung der Gesamtwerte der Prädiktoren, oder zeigt vielleicht nur einer von ihnen nicht mehr das "gewünschte" Ergebnis?

Generell kann die Frage, warum etwas nicht mehr funktioniert, sehr wichtig für weitere Überlegungen sein.

1. Ja, natürlich.

2. Vielleicht habe ich es nicht richtig ausgedrückt. Nein, es war nur ein positiver Effekt - der Handel würde bei neuen Daten allmählich zum Erliegen kommen. Sobald die Anzahl der Trades unter ein bestimmtes Niveau pro Zeiteinheit sinkt, müssen Sie erneut trainieren. D.h. nicht ein Rückgang der Handelseffizienz bei OOS als Signal zum erneuten Trainieren, sondern ein Rückgang der Anzahl der Trades.

D.h., anstatt Unsinn zu reden, der zu Verlusten beim Handel am OOS führt, schweigt der NS als Antwort auf unbekannte Daten.

 
Aleksey Nikolayev #:
In Ihrem Link ist auch die Rede von der Verknüpfung von "Profil" und Kreuzvalidierung, für die es einfacher sein könnte, Pakete zu finden.

Ich sehe den Zusammenhang hier nicht. Aus welchen Worten folgt er?

 
Forester #:

Die Arbeit ist experimentell. Hier ist ein Zitat von http://www.ccas.ru/frc/papers/students/VoronKoloskov05mmro.pdf

Es ist unwahrscheinlich, dass für jedes Experiment ein Paket erstellt wurde.

Oh, und das Experiment ist künstlich. Dem klar nach Klassen getrennten Datensatz wurde Rauschen hinzugefügt. Und die klare Trennung gilt nur für ein Merkmal - die Y-Achse. Wenn wir das Rauschen entfernen (alle Daten von 0,2 bis 0,8), stellt sich heraus, dass nur Beispiele übrig bleiben, bei denen der Abstand zu einer anderen Klasse nicht kleiner als 0,6 ist. Ich meine die komplizierteste 3. Variante im Bild:


Gehen Sie ins wirkliche Leben und fügen Sie Ihre 5000 Prädiktoren, die Rauschen sein werden, zu diesem einzigen Arbeitsbogen hinzu. Beim Clustering berechnen Sie die Gesamtdistanz zwischen den Punkten in diesem 5001-dimensionalen Raum. 0,6 wird in diesem Chaos nie gefunden.

Ich denke, jeder Klassifikator wird es besser machen, derselbe Baum wird dieses einzelne Merkmal finden und durch es teilen, zuerst durch 0,5 und dann wird er Splits von 0,2 und 0,8 erreichen, gefolgt von Blättern mit 100% Reinheit.

Es wird behauptet, dass es mit diesem Algorithmus möglich war, die ersten Plätze auf Kagle zu gewinnen, ich glaube nicht, dass es einfache Aufgaben gab....

Sollen wir versuchen, es herauszufinden? Ich verstehe keine Formeln - zu meinem großen Bedauern.

 
mytarmailS #:
In einem Artikel von Vladimir Perervenko wurde diese Methode beschrieben, und es gab ein Beispiel mit Code, natürlich

Ich habe diesen Algorithmus in dem Video kennengelernt, es gibt ein paar Formeln auf der Tafel - es ist schwer, das als Code zu bezeichnen.

Wo haben Sie einen Beispielcode gesehen?

 
Andrey Dik #:

1. Ja, natürlich.

2. Vielleicht habe ich es nicht so ausgedrückt. Nein, es war nur ein positiver Effekt - der Handel würde bei neuen Daten allmählich zum Erliegen kommen. Sobald die Anzahl der Trades unter ein bestimmtes Niveau pro Zeiteinheit sinkt, muss man erneut trainieren. D.h. nicht ein Rückgang der Handelseffizienz bei OOS als Signal für ein erneutes Training, sondern ein Rückgang der Anzahl der Trades.

D.h., anstatt Unsinn zu reden, der Verluste beim Handel am OOS mit sich bringt, schweigt der NS als Antwort auf unbekannte Daten.

Das ist mir klar geworden. Ich wollte nur wissen, ob die Ursache dafür gefunden wurde. Nicht darüber, was kaputt ist, sondern warum die Signale fehlen.

 
Aleksey Vyazmikin #:

Ich habe diesen Algorithmus im Video kennengelernt, es gibt einige Formeln auf der Schiefertafel - es ist schwer, sie als Code zu bezeichnen.

Wo hast du ein Beispiel für Code gesehen?

Ist das Trolling?