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

 
fxsaber #:

Ich habe es für meine eigenen Aufgaben gemacht und den Arbeitscode geteilt. Jeder, der es braucht, wird einen Blick darauf werfen.

Wo kann ich den endgültigen Code sehen?

 

Hat schon einmal jemand versucht, mit "Ausreißern" zu arbeiten? Und ich spreche nicht von Ausreißern als Fehler, sondern von seltenen Ereignissen.

Es ist schon komisch, aber es hat sich herausgestellt, dass in einigen Stichprobenstrings Ausreißer in mehr als 50 % der Prädiktoren verzeichnet sind....

Gelangen diese Ausreißer in die Modelle - ziemlich leicht, wie sich herausstellt.

Es scheint also, dass dies nicht nur für NS kritisch ist....

 
fxsaber #:

Ich führe keine Vergleiche durch, sondern stelle einen Code zur Verfügung, den jeder für seinen eigenen Fall messen kann.

Die Stringlänge von 100 ist die Länge des Musters. Sie brauchen wahrscheinlich nicht mehr als das.

15000 Stichproben sind wegen der quadratischen Größe der Korrelationsmatrix speicherbegrenzt. Je mehr Stichproben, desto besser. Deshalb habe ich ein selbstgemachtes Programm geschrieben, in dem es eine Million davon geben kann.

Ich habe weder Lust noch Zeit, mich mit einem objektiven Vergleich zu beschäftigen. Ich habe es für meine eigenen Aufgaben gemacht und den Arbeitscode weitergegeben. Wer es braucht, wird es sehen.

Varianten der Beschleunigungs - Ausgabematrix sollten in uchar gespeichert werden. In der Regel ändern wir die Prozentsätze in 1%-Schritten und schauen uns etwas an. uchar - nur bis zu +- 128. Sie können Ihren eigenen Entwurf für uchar ändern, und alglib auch, der Code ist verfügbar. Gesamtmatrizen können bei gleichem Speicher 8 mal größer sein.

 
Aleksey Vyazmikin #:

Hat schon einmal jemand versucht, mit "Ausreißern" zu arbeiten? Und ich spreche nicht von Ausreißern als Fehler, sondern von seltenen Ereignissen.

Es ist lustig, aber es stellte sich heraus, dass in einigen Strings der Stichprobe der Ausreißer in mehr als 50 % der Prädiktoren fixiert ist....

Ob diese Ausreißer in den Modellen enthalten sind, ist ziemlich willkürlich, wie sich herausstellt.

Es scheint also, dass dies nicht nur für NS kritisch ist....

Weiße/schwarze Schwäne... fxsaber hat in seinem Blog darüber geschrieben. Ich habe solche Varianten unter vielen Varianten gehabt: alle paar Jahre wird etwa eine Woche lang gehandelt. Im Allgemeinen sitzt der Experte nur da und wartet auf Bewegung. Aber das ist eine ideale Performance im Testgerät. Im wirklichen Leben können Ausrutscher (sie sind während der Bewegung riesig) alles ruinieren.

 
Forester #:

Weiße/schwarze Schwäne..... fxsaber hat in seinem Blog über sie geschrieben. Neben vielen anderen Varianten habe ich die folgende erlebt: Alle paar Jahre wird für etwa eine Woche gehandelt. Im Allgemeinen sitzt der Experte da und wartet auf Bewegung. Aber das ist eine ideale Performance im Tester. Im wirklichen Leben können Ausrutscher (sie sind riesig während der Bewegung) alles ruinieren.

Ich habe versucht, Zeilen aus der Stichprobe zu entfernen, in denen es viele Ausreißer gibt.

Und das Training hat sich radikal verändert.

Wenn früher im Test im Durchschnitt gute Ergebnisse im Plus waren, und in der Prüfung - fast alle im Minus - das ist von 100 Modellen, dann hat die Reinigung von Ausreißern das Ergebnis verändert - die Ergebnisse im Test verschlechterten sich sehr (durchschnittlicher Gewinn nahe Null), und in der Prüfung im Gegenteil - viele Modelle wurden im Plus.

Ich bin noch nicht bereit zu sagen, dass dies eine Regelmäßigkeit ist, ich werde versuchen, es an anderen Stichproben zu überprüfen.

Außerdem ist die Frage, wie man den Ausreißer am besten bestimmt, für mich noch offen. Jetzt nehme ich einfach bis zu 2,5 % für jede Seite, solange die Ränge diese Grenze nicht überschreiten.

 
Im Allgemeinen hat man den Eindruck, dass es nach dem Training einen Zyklus von einigen Jahren gibt, in dem die Modelle plötzlich anfangen, einige Muster in neuen Daten zu finden.
 
Aleksey Vyazmikin #:

Ich habe versucht, Zeilen aus der Stichprobe zu entfernen, in denen es viele Ausreißer gibt.

Und das Training änderte sich radikal.

Wenn früher auf Test gab es gute Ergebnisse im Durchschnitt plus, und auf Prüfung - fast alle im Minus - das ist von 100 Modellen, dann Bereinigung von Ausreißern verändert das Ergebnis - die Ergebnisse auf Test wurde viel schlechter (durchschnittliche Gewinn nahe Null), und auf Prüfung im Gegenteil - viele Modelle wurde plus.

Ich bin noch nicht bereit zu sagen, dass dies eine Regelmäßigkeit ist, werde ich versuchen, auf andere Proben zu überprüfen.

Außerdem ist die Frage, wie man den Ausreißer am besten bestimmt, für mich noch offen. Jetzt nehme ich einfach bis zu 2,5 % für jede Seite, solange die Ränge diese Grenze nicht überschreiten.

Wenn man nur 2,5 % (oder andere) nimmt, hängt die Anzahl der Ausreißer von der Verteilung ab, und das ist nicht richtig.

Besser ist es, ein Quantil mit 100 Plots zu nehmen und nicht vor 1% und nach 99% zu entfernen, sondern durch Werte von 1% und 99% zu ersetzen. Sie können nichts löschen.

 
fxsaber #:
NumPy scheint einen anderen Algorithmus als ALglib zu haben, da er sich in der Leistung stark unterscheidet. Aber es ist klar, dass es in der riesigen Python-Gemeinschaft einige sehr starke Algorithmiker gab, die eine anständige Menge an Zeit in die Untersuchung dieses Problems gesteckt haben.

Der Quellcode ist offen, Sie können einen Blick darauf werfen. Die Funktion zur Berechnung der Korrelation, auf der rechten Seite steht [source], wenn man darauf klickt, kommt man zum Code. Wir sind an den Zeilen 2885-2907 interessiert. In Zeile 2889 wird die Kovarianz verwendet, nach Klick auf cov erscheinen rechts alle Erwähnungen von cov im Code, nach Klick auf die Zeile mit def cov... wird zur Kovarianzfunktion gesprungen, und so weiter. MQL C-ähnliche Sprache, alle C-ähnlichen Sprachen sind ~90% ähnlich, Sie können C#, Java, Python, JavaScript ohne große Probleme verstehen.

 
СанСаныч Фоменко #:

Wenn man nur 2,5 % (oder andere) nimmt, hängt die Zahl der gelöschten Personen von der Verteilung ab, und das ist nicht richtig.

Es ist besser, ein Quantil mit 100 Plots zu nehmen und nicht vor 1% und nach 99% zu löschen, sondern durch Werte von 1% und 99% zu ersetzen. Sie können nichts löschen.

Ich nehme einen Prozentsatz der Daten, nicht einen Prozentsatz des Bereichs. Wenn also viele Daten vorhanden sind (dichte Daten), wird das Anhalten auf der Bereichsskala schnell erfolgen.

Das Springen von Mittelwert und Varianz hat sich als wenig effektiv erwiesen.

Als ich die Frage der Ersetzung durch andere Werte untersuchte (allerdings nur zur Quantifizierung), gefiel mir die Option der Ersetzung durch zufällige Werte aus der verbleibenden Teilmenge, wobei die Wahrscheinlichkeit berücksichtigt wurde.

 
Aleksey Vyazmikin #:

Ich nehme einen Prozentsatz der Daten, nicht einen Prozentsatz des Bereichs. Wenn es also viele Daten gibt (es ist dicht), wird das Anhalten schnell auf der Bereichsskala erfolgen.

Das Springen von Mittelwert und Varianz hat sich als wenig effektiv erwiesen.

Als ich die Frage der Ersetzung durch andere Werte untersuchte (allerdings nur zur Quantifizierung), gefiel mir die Option der Ersetzung durch zufällige Werte aus der verbleibenden Teilmenge, wobei die Wahrscheinlichkeit berücksichtigt wurde.

Quantile sind Wahrscheinlichkeiten. Wir entfernen/ersetzen also Daten, die mit einer Wahrscheinlichkeit von weniger als 1%/mehr als 99% in den Bereich fallen, oder andere Werte. Man kann Mengen nicht abschneiden - wir haben schiefe und schwanzförmige Verteilungen.

Sie schreiben, dass der Ersatzwert am besten als Vorhersage dieser Menge durch den MOE genommen wird. Aber das scheint mir ein bisschen übertrieben zu sein.