Diskussion zum Artikel "Nutzung des CatBoost Machine Learning Modells als Filter für Trendfolgestrategien"

 

Neuer Artikel Nutzung des CatBoost Machine Learning Modells als Filter für Trendfolgestrategien :

CatBoost ist ein leistungsfähiges, baumbasiertes, maschinelles Lernmodell, das auf die Entscheidungsfindung auf der Grundlage stationärer Merkmale spezialisiert ist. Andere baumbasierte Modelle wie XGBoost und Random Forest haben ähnliche Eigenschaften in Bezug auf ihre Robustheit, ihre Fähigkeit, komplexe Muster zu verarbeiten, und ihre Interpretierbarkeit. Diese Modelle haben ein breites Anwendungsspektrum, das von der Merkmalsanalyse bis zum Risikomanagement reicht. In diesem Artikel werden wir das Verfahren zur Verwendung eines trainierten CatBoost-Modells als Filter für eine klassische Trendfolgestrategie mit gleitendem Durchschnitt erläutern. Dieser Artikel soll einen Einblick in den Strategieentwicklungsprozess geben und gleichzeitig auf die Herausforderungen eingehen, denen man sich auf diesem Weg stellen kann. Ich werde meinen Arbeitsablauf vorstellen, bei dem ich Daten von MetaTrader 5 abrufe, ein maschinelles Lernmodell in Python trainiere und zurück in MetaTrader 5 Expert Advisors integriere. Am Ende dieses Artikels werden wir die Strategie durch statistische Tests validieren und zukünftige Bestrebungen erörtern, die über den derzeitigen Ansatz hinausgehen.

In der Branche gilt als Faustregel für die Entwicklung von CTA-Strategien (Commodity Trading Advisor), dass hinter jeder Strategieidee eine klare, intuitive Erklärung stehen sollte. Dies ist im Grunde genommen die Art und Weise, wie Menschen überhaupt über Strategieideen nachdenken, ganz zu schweigen davon, dass dadurch auch eine Überanpassung vermieden wird. Dieser Vorschlag ist sogar für die Arbeit mit maschinellen Lernmodellen geeignet. Wir werden versuchen, die Intuition hinter dieser Idee zu erklären.

Warum das funktionieren könnte:

Das CatBoost-Modell erstellt Entscheidungsbäume, die die Eingaben der Merkmale aufnehmen und die Wahrscheinlichkeit der einzelnen Ergebnisse ausgeben. In diesem Fall trainieren wir nur für binäre Ergebnisse (1 ist ein Gewinn, 0 ein Verlust). Das Modell ändert die Regeln in den Entscheidungsbäumen so, dass es die Verlustfunktion im Trainingsdatensatz minimiert. Wenn das Modell ein gewisses Maß an Vorhersagbarkeit des Ergebnisses der Out-of-Sample-Tests aufweist, können wir in Erwägung ziehen, es zum Herausfiltern von Geschäften mit geringer Gewinnwahrscheinlichkeit zu verwenden, was wiederum die Gesamtrentabilität steigern könnte.

Eine realistische Erwartung für Händler wie Sie und ich ist, dass die Modelle, die wir trainieren, nicht wie Orakel sein werden, sondern nur geringfügig besser als Random Walk. Es gibt viele Möglichkeiten, die Präzision des Modells zu verbessern, auf die ich später noch eingehen werde, aber dennoch ist es ein großartiges Unterfangen für leichte Verbesserungen.

CatBoost ML model


Autor: Zhuo Kai Chen

 

Aus meiner eigenen Erfahrung kann ich nur hinzufügen, dass das Trainieren von Modellen auf Daten, die älter als drei Monate sind, nichts bringt. Das Modell sollte in der Lage sein, aktuelle Muster zu erfassen und sich auf diese zu konzentrieren. Man muss nahe am Markt bleiben.

 
Krzysztof Tadeusz Kanacki #:

Aus meiner eigenen Erfahrung kann ich nur hinzufügen, dass das Trainieren von Modellen auf Daten, die älter als drei Monate sind, nichts bringt. Das Modell sollte in der Lage sein, aktuelle Muster zu erfassen und sich auf diese zu konzentrieren. Man muss nahe am Markt bleiben.

Ihr Argument ist absolut zutreffend. Ich habe auch die Erfahrung gemacht, dass es einfacher ist, ein Modell zu trainieren, das bessere Ergebnisse liefert, wenn man aktuelle Daten verwendet. Das Hauptproblem ist jedoch, dass dieser Ansatz die Größe der Trainingsmenge begrenzt, es sei denn, Sie verwenden einen sehr kurzen Zeitrahmen. Trendfolgestrategien schneiden laut wissenschaftlichen Arbeiten bei längeren Zeiträumen besser ab als bei kürzeren Zeiträumen. Sie könnten also ein Modell mit höherer Vorhersagbarkeit, aber weniger Trainingsstichproben trainieren, was zu einer Überanpassung führen kann, und die ursprüngliche Strategie hat von vornherein weniger Vorteile. Es besteht ein Kompromiss zwischen diesen Faktoren, ganz abgesehen davon, dass auch die Spreads eine Rolle spielen.

Meine Lösung besteht darin, die jüngeren Daten im Trainingssatz stärker zu gewichten, während die älteren Daten erhalten bleiben. Auf diese Weise können wir uns nach einem Regimewechsel an neue Muster anpassen und gleichzeitig von alten Mustern profitieren, die über die Jahre hinweg konsistent geblieben sind. Wie ich bereits erwähnt habe, gibt es bei diesen Entscheidungen jedoch immer Kompromisse.

 
Zhuo Kai Chen #:

Ihr Argument ist absolut zutreffend. Ich habe auch die Erfahrung gemacht, dass es einfacher ist, ein Modell zu trainieren, das bessere Ergebnisse liefert, wenn man aktuelle Daten verwendet. Das Hauptproblem ist jedoch, dass dieser Ansatz die Größe der Trainingsmenge begrenzt, es sei denn, Sie verwenden einen sehr kurzen Zeitrahmen. Trendfolgestrategien schneiden laut wissenschaftlichen Arbeiten bei längeren Zeiträumen besser ab als bei kürzeren Zeiträumen. Sie könnten also ein Modell mit höherer Vorhersagbarkeit, aber weniger Trainingsstichproben trainieren, was zu einer Überanpassung führen kann, und die ursprüngliche Strategie hat von vornherein weniger Vorteile. Es besteht ein Kompromiss zwischen diesen Faktoren, ganz abgesehen davon, dass auch die Spreads eine Rolle spielen.

Meine Lösung besteht darin, die jüngeren Daten im Trainingssatz stärker zu gewichten, während die älteren Daten erhalten bleiben. Auf diese Weise können wir uns nach einem Regimewechsel an neue Muster anpassen und gleichzeitig von alten Mustern profitieren, die über die Jahre hinweg konsistent geblieben sind. Wie ich bereits erwähnt habe, gibt es bei diesen Entscheidungen jedoch immer Kompromisse.

Ein erneutes Training des Modells alle drei Monate unter Verwendung der Daten der letzten drei Monate würde wahrscheinlich ausreichen. Ich werde versuchen, diese Idee der rollierenden Modelloptimierung später umzusetzen. Vielen Dank für die Anregung.

 

Ich versuche, Ihren Anweisungen zu folgen und bin leider aufgrund fehlender Details nicht in der Lage, bis zur endgültigen Ausgabe fortzufahren, da Dateiverweise fehlen und keine Download-Links vorhanden sind.

Ich werde mir die Zeit nehmen, Ihnen beizubringen, was Sie übersehen haben, denn das sieht nach einem guten Prozess aus.

Sie vermissen:

1. einen direkten Link zur Datei FileCSV.mqh, für den man den anderen Artikel lesen muss, um ihn zu erhalten.

2. die Deklaration aller Funktionsgriffe

3. Angemessene Erklärung des Prozesses zum Erstellen oder Herunterladen der Dateien

CatOnnx.mqh

"\\Files\\CatBoost_Momentum_test.onnx"

4. Direkte Links zu und relevante Anweisungen für die Installation von catboot mit pip oder ähnlichem, um sicherzustellen, dass Sie die für Python erforderlichen Abhängigkeiten installiert haben. (nicht für mich, aber andere werden es wissen müssen)

5. Anweisung zum Lesen der CB2.ipynb Anweisungen und des Arbeitsablaufs.


Alles in allem führt dies dazu, dass der Schüler den Artikel zur Hälfte gelesen hat und dann stundenlang nach dem korrekten Verfahren suchen muss, um das Tutorial abzuschließen und die Ergebnisse zu reproduzieren.

Insgesamt gebe ich diesem Artikel eine 4 von 10 für Informationen mit zusätzlichen Punkten für Ihre klassische Trendfolgestrategie, die gut zusammengesetzt ist.

Bitte bearbeiten Sie den Artikel, um mehr lehrreich und Schritt für Schritt, so können wir alle lernen und folgen.


PS

Empfehlungen, wie dies an andere Strategien angepasst werden könnte, wären großartig!

 
Benny Addams zusätzlichen Punkten für Ihre Classic Trend Following Strategy, die gut zusammengestellt ist.

Bitte bearbeiten Sie den Artikel, um mehr lehrreich und Schritt für Schritt, so können wir alle lernen und folgen.


PS

Empfehlungen, wie dies an andere Strategien angepasst werden könnte, wären großartig!

Vielen Dank für das Feedback. Leider habe ich die relevanten Artikel nur kurz beschrieben, weil ich dachte, das würde zu viel Platz beanspruchen, und ich habe aus urheberrechtlichen Gründen keine Download-Links angegeben. Die ausführlichen Details sind immer noch am besten in der Originalquelle zu finden. Ich denke jedoch, dass ich einige sorgfältige Anweisungen für meinen Python-Code und direkte Links zu Python-Anweisungen übersehen habe, obwohl ich jede Zeile kommentiert habe. Wenn Sie spezifische Hindernisse in Ihrem eigenen Implementierungsprozess haben, können Sie hier diskutieren oder mich zum Chat hinzufügen.

 
Die CatOnnx.mqh, die in der Datei ML-Momentum.mq5 aufgerufen wird, ist dieselbe wie die CatBoost.mqh, die ich in diesem Artikel zitiert habe. Tut mir leid, dass die Dateinamen Verwirrung stiften.
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
  • www.mql5.com
CatBoost AI models have gained massive popularity recently among machine learning communities due to their predictive accuracy, efficiency, and robustness to scattered and difficult datasets. In this article, we are going to discuss in detail how to implement these types of models in an attempt to beat the forex market.
 
Zhuo Kai Chen #:
Die CatOnnx.mqh, die in der Datei ML-Momentum.mq5 aufgerufen wird, ist die gleiche wie die CatBoost.mqh, die ich in diesem Artikel zitiert habe. Entschuldigung für die Verwirrung bei den Dateinamen.

Wenn ich zurückkehre und erneut versuche, die Anleitung in diesem Artikel zu vervollständigen, werde ich einige Notizen für die spätere Befruchtung des Forums beiseite legen.

Falls noch jemand an Katzenzucht interessiert ist...

 

Hallo. Ich spiele mit CatBoost herum und bin zu dem Punkt gekommen, an dem eine Strategie, die auf (allen) Daten aus dem Jahr 2024 trainiert wurde, beim Backtesting (im MetaTrader) für das Jahr 2024 eine Rendite von mehr als 300 % erzielt, aber in anderen Jahren schlecht abschneidet. Hat jemand Erfahrung mit diesem Problem? Intuitiv fühlt es sich wie eine Überanpassung an, aber selbst wenn ich mit viel niedrigeren Iterationen (wie 1k) trainiere, erhalte ich das gleiche Ergebnis.

Ich trainiere mit ca. 40 - 50 Merkmalen, auf Minutendaten, also etwa 250.000 Zeilen pro Jahr. Die Größe der .cbm-Datei entspricht in der Regel dem 1000-fachen der Anzahl der Iterationen (z. B. 1000 Iterationen = 1 MB, 10.000 Iterationen = 10 MB usw.). Beim Backtesting mit Metatrader kann ich nur etwa 100.000 MB speichern, bevor der Backtester zum Stillstand kommt. Ich kann Backtests mit C++ bis zu einer beliebig hohen Größe durchführen, aber meine Ergebnisse in Metatrader und C++ sind völlig unterschiedlich.

 
johnboy85 CatBoost herum und bin zu dem Punkt gekommen, an dem eine Strategie, die auf (allen) Daten aus dem Jahr 2024 trainiert wurde, beim Backtesting (im MetaTrader) für das Jahr 2024 eine Rendite von mehr als 300 % erzielt, aber in anderen Jahren schlecht abschneidet. Hat jemand Erfahrung mit diesem Problem? Intuitiv fühlt es sich wie eine Überanpassung an, aber selbst wenn ich mit viel niedrigeren Iterationen (wie 1k) trainiere, erhalte ich das gleiche Ergebnis.

Ich trainiere mit ca. 40 - 50 Merkmalen, auf Minutendaten, also etwa 250.000 Zeilen pro Jahr. Die Größe der .cbm-Datei entspricht in der Regel dem 1000-fachen der Anzahl der Iterationen (z. B. 1000 Iterationen = 1 MB, 10.000 Iterationen = 10 MB usw.). Beim Backtesting mit Metatrader kann ich nur etwa 100.000 MB speichern, bevor der Backtester zum Stillstand kommt. Ich kann Backtests mit C++ bis zu einer beliebig hohen Größe durchführen, aber meine Ergebnisse in Metatrader und C++ sind völlig unterschiedlich.

Hallo zusammen. Zunächst einmal berücksichtigt der Metatrader-Backtester Spreads und Provisionen, was erklären könnte, warum er sich von Ihren Ergebnissen in C++ unterscheidet. Zweitens ist maschinelles Lernen meiner Meinung nach im Wesentlichen ein Prozess der Überanpassung. Es gibt viele Möglichkeiten, die Überanpassung zu reduzieren, z. B. Ensemble, Dropout und Feature Engineering. Aber letzten Endes ist In-Sample immer besser als Out-of-Sample. Der Einsatz von maschinellem Lernen bei der Vorhersage von Finanzzeitreihen ist ein uraltes Problem. Wenn Sie versuchen, die Rendite vorherzusagen (ich nehme an, weil Sie von 250k Zeilen sprechen), ist Rauschen zu erwarten, weil Sie und andere Spieler das gleiche Vorhersageziel haben. Was ich in diesem Artikel vorstelle, ist eine Methode des Metalabeling, bei der es weniger Rauschen gibt, weil Ihr Vorhersageziel auf Ihre eigene Strategie eingegrenzt ist, aber es hätte weniger Stichproben zum Lernen, was die Komplexitätseinschränkung noch strenger macht. Ich würde sagen, senken Sie Ihre Erwartungen mit der ML-Methode und suchen Sie nach Möglichkeiten, die Überanpassung zu reduzieren.

 

Danke, dass Sie so schnell auf ein Thema geantwortet haben, das mehr als 6 Monate alt ist. Hier gibt es eine Menge zu bedenken. Ich gewöhne mich gerade an den riesigen Parameterraum und versuche, Wege zu finden, die Überanpassung zu reduzieren.

Nochmals vielen Dank!