Strategiebildungsprozess (Forex)

Aufbau einer profitablen EURUSD-Strategie

von Mark Fric
In diesem Artikel erkläre ich den kompletten Schritt-für-Schritt-Prozess zum Aufbau einer profitablen, robusten Strategie für EURUSD, einschließlich mehrere Stufen verschiedener Robustheitstests.
Es gibt auch eine andere Variante dieses Artikels über Strategiebildungsprozess für E-Mini S & P 500-Futures.

Bei der Verwendung von Techniken des maschinellen Lernens wie der genetischen Programmierung der wichtigste Teil des Strategieentwicklungsprozesses ist die Prüfung der Strategie auf ihre Robustheit um sicherzustellen, dass sie nicht an die historischen Daten angepasst ist.
Ich verwende doppelte OOS-Filter plus Robustheitstests plus Walk-Forward-Matrix-Test.

 

 

Eingaben

Die einzigen Eingaben, die ich verwende, sind meine Erwartungen an die Strategie - ich möchte eine Strategie für EURUSD entwickeln, die profitabel ist und so wenig Drawdowns wie möglich hat. Ich möchte, dass die Strategie robust genug ist, damit sie auch bei anderen Symbolen (GBPUSD) funktioniert, und ich möchte, dass sie den Walk-Forward-Matrix-Test besteht, um sicherzustellen, dass die Re-Optimierung bei dieser Strategie funktioniert.


Prozess der Strategieentwicklung

  1. Generierung eines großen Pools potenzieller Kandidaten
  2. Erster Filter - Prüfung auf Nichtvorhandensein einer Probe (OOS)
  3. Zweiter Filter - erneuter Test und zweite OOS-Prüfung
  4. Dritter Filter - GBPUSD-Prüfung
  5. Vierter Filter - Robustheitstests
  6. Fünfter Filter - Walk-Forward-Matrix-Test

Generierung eines großen Pools potenzieller Kandidaten

Im ersten Schritt muss ich einfach einen großen Pool potenziell "guter" Strategien generieren, die ich später auf ihre Robustheit prüfen werde. Ich möchte, dass alle meine anfänglichen Strategien profitabel und (bis zu einem gewissen Grad) robust sind, daher setze ich auch in dieser ersten Phase mehrere Filter ein.

Meine Einstellungen für diesen Schritt
Sie können die Einstellungen, die ich in diesem Schritt verwende, über den unten stehenden Link herunterladen. Klicken Sie mit der rechten Maustaste auf den Link und wählen Sie Link speichern unter...
In StrategyQuant verwenden Sie dann Einstellungen laden, um diese Einstellungsdatei in das Programm zu laden.

build_eurusd_strategy.xml

Einstellungen erklärt
Zunächst einmal erstelle ich alle meine Strategien für mehrere Symbole. Mein Ziel ist es, eine gute Strategie für EURUSD zu finden, aber ich möchte, dass meine Strategie robust ist - ich möchte also, dass sie auch für GBPUSD profitabel ist. Ich füge GBPUSD zu den zusätzlichen Daten hinzu, so dass die Strategie jetzt für beide Symbole getestet wird.

Abbildung 1: Einstellung der Daten

Ich verwende Daten vom 1.1.2007 bis zum 30.6.2011, also viereinhalb Jahre. Der Rest der Daten wird später für weitere OOS-Tests zur Verfügung stehen.

Ich werde den Modus Genetische Evolution verwenden. Die Idee ist, eine Population von 200 Strategien zu erstellen, sie über 30 Generationen zu entwickeln und dann wieder von vorne zu beginnen. Auf diese Weise vermeide ich, dass ich während der Evolution in eine Sackgasse gerate, und die besten Strategien werden kontinuierlich in der Datenbank gespeichert.
Sie können auch sehen, dass die einzige Bedingung für die Ausgangspopulation darin besteht, dass sie mindestens 100 Geschäfte machen muss. Sie muss nicht profitabel sein - die genetische Evolution sollte in der Lage sein, sie zu verbessern.

Abbildung 2: Genetische Optionen

Der letzte wichtige Teil der Einstellung sind die Ranking-Optionen. Ich habe die Datenbank so eingestellt, dass sie die 2000 besten Strategien speichert, weil ich eine gute Grundlage für den weiteren Auswahlprozess haben möchte. Außerdem habe ich als Auswahlkriterium das Verhältnis von Rendite und Drawdown eingestellt - das ist mein Favorit. Sie können auch andere Auswahlkriterien verwenden, vielleicht erhalten Sie dann bessere Ergebnisse.

Abbildung 3: Ranking-Optionen

Eines der wichtigsten Dinge ist es, die anfänglichen Filterkriterien für Strategien in Databank festzulegen. Ich möchte nur Strategien berücksichtigen, die mindestens $2000 im Gewinn sind, ein Return/DD-Verhältnis > 3 haben, mindestens 300 Trades UND ein Return/DD-Verhältnis eines Portfolios von mindestens 2,5.

Da ich die Strategien auf zwei Symbolen - EURUSD und GBPUSD - teste, werden auch die Portfolioergebnisse für die Strategien berechnet. Mit dieser Bedingung lege ich einfach fest, dass die Portfolioperformance nicht viel schlechter sein darf als die Performance nur für EURUSD, und das Programm wird alle Strategien mit schlechter Portfolioperformance ausschließen.

Jetzt müssen wir nur noch die Start und lassen Sie das Programm die Arbeit machen.
Denken Sie daran, dass wir mindestens 2000 "gute" Strategien generieren wollen, bevor wir mit dem Filterprozess fortfahren.

Je nach den Einstellungen und der Geschwindigkeit Ihres Computers kann dies mehrere Stunden oder sogar Tage dauern, haben Sie also Geduld. Wenn das Programm für eine sehr lange Zeit keine Strategie erzeugt, sollten wir vielleicht zu einem höheren Zeitrahmen - H4 oder D1 - wechseln oder die Beschränkungen verringern.


1. Erster Filter - Prüfung auf Nichtvorhandensein einer Probe (OOS)

Wenn ich 2000 potenziell gute Strategien in der Datenbank habe, stoppe ich die Generierung und beginne mit dem Filterungsprozess.
Ich wende den ersten Filter an, indem ich alle Systeme mit schlechter Out of Sample-Performance entferne. Ich kann das schnell tun, indem ich die Strategien in der Datenbank sortiere und diejenigen lösche, deren OOS-Gewinn kleiner als $500 ist.

Abbildung 4 Datenbank mit einem Pool von Strategien, sortiert nach OOS-Nettogewinn

In diesem ersten Schritt wird in der Regel ein großer Teil der Strategien entfernt, so dass wir von ursprünglich 2000 Kandidaten auf etwa 1500 zurückgehen.


2. Zweiter Filter - erneuter Test und zweite OOS-Prüfung

In diesem Schritt werde ich alle Strategien erneut testen, indem ich die 1 Minute Genauigkeit über den unbekannten Zeitraum außerhalb der Stichprobe.
Ich habe in der Build-Phase die Präzision des ausgewählten Zeitrahmens verwendet, um die Tests so schnell wie möglich durchzuführen, aber vor der weiteren Auswertung möchte ich sicherstellen, dass die Backtests wirklich zuverlässig sind, daher teste ich alle Strategien erneut mit höherer Präzision.

Das erneute Testen der Strategien ist ganz einfach: Ich wähle einfach alle Strategien in der Datenbank aus und klicke auf die Schaltfläche Erneut testen. Dadurch werden alle Strategien auf eine Registerkarte "Retest" verschoben. Ich bestätige auch den Dialog mit der Frage, ob die Build-Einstellungen für den Retest verwendet werden sollen

Ich werde dann den Datenzeitraum bis zum Ende der verfügbaren Daten verlängern. Die Strategien wurden auf Daten vom 1.1.2007 bis 30.6. 2011 erstellt. Ich teste die Strategien nun erneut mit Daten bis zum 30.6.2013 und setze den Zeitraum "Out of Sample" vom 2.7.2011 bis zum 28.6.2013.
Beachten Sie, dass dadurch die Strategien auf einem neuen, unbekannten Teil der Daten erneut getestet werden und der OOS-Teil die Leistung der Strategie während der letzten anderthalb Jahre zeigt.

Abbildung 5: Einstellung der Prüfgenauigkeit auf 1 Minute

Da ich auch eine andere Quelle für historische EURUSD-Daten habe (kostenlose Daten, die ich von Dukascopy heruntergeladen habe), werde ich sie zu den zusätzlichen Daten hinzufügen, um die Leistung beider EURUSD-Datenquellen zu vergleichen.

Der Test kann einige Zeit in Anspruch nehmen, und danach werde ich wieder alle Systeme entfernen, die eine schlechte Out of Sample Performance haben. Wieder kann ich die Strategien in der Datenbank nach Nettogewinn (OOS) sortieren und diejenigen löschen, deren OOS-Gewinn kleiner als $500 ist.


3. Dritter Filter - GBPUSD-Prüfung

In diesem Schritt werde ich die Leistung der Strategien für das GBPUSD-Symbol überprüfen. Ich gehe zu Ergebnisse -> Aktienchart, wechsle zum Chart GBPUSD/H1 oder zum Portfolio und gehe die Strategien eine nach der anderen durch, wobei ich mir den Chart für GBPUSD ansehe.

Abbildung 6: Beispiel für gute und schlechte GBPUSD-Performance

Ich werde nur Strategien in Betracht ziehen, die zumindest eine gewisse Rentabilität beim GBPUSD aufweisen. Die Equity-Kurve muss nicht perfekt sein, aber sie sollte ohne extreme Drawdowns wachsen.

Dieser Filter ist sehr streng - wir finden in der Regel nur wenige Strategien, die diesen Test bestehen.
Von den anfänglichen 2000 sind wir also in der Regel auf 5-15 Strategien heruntergekommen.


4. Vierter Filter - Robustheitstests

Nachdem ich alle Strategien mit schlechter GBPUSD-Performance entfernt habe, sind weniger als 10 Strategien übrig geblieben, die eine gute IS- und OOS-Performance sowie eine zufriedenstellende Performance auf GBPUSD aufweisen. Ich werde die Strategien jetzt noch einmal mit Robustheitstests und Money Management testen, um zu sehen, wie jede der Strategien mit kleinen Änderungen der Eingaben umgeht und um die Strategien miteinander vergleichen zu können.

Ich werde die Geldverwaltung von einer festen Größe auf einen festen Betrag umstellen, so dass jede Strategie $100 pro Handel riskiert. Dies ermöglicht eine bessere Strategien Vergleich, weil sie den gleichen Betrag pro Handel riskieren.

Bild 7: Einstellung der Geldverwaltung auf einen festen Betrag

Bei Robustheitstests verwende ich mindestens 20 Simulationen und teste die Strategie für alle Arten von Stresssituationen. Nachdem ich den Robustheitstest konfiguriert habe, teste ich die Strategien erneut.
Diesmal wird es schnell gehen, denn es sind nur noch wenige Strategien in der Datenbank vorhanden.

Abbildung 8: Robustheitstests

Wie man Robustheitstests auswertet
Robustheitstests zeigen uns, wie sich die Strategie in der Realität verhalten kann, wenn es verpasste Trades, unterschiedliche historische Daten usw. gibt. Ich suche nach Strategien, die akzeptable Werte für Nettogewinn und Drawdown auf dem Konfidenzniveau 95% aufweisen.

Abbildung 9: Ergebnisse der Robustheitstests

Im obigen Beispiel sehen wir die Robustheitsergebnisse für zwei Strategien. Die Strategie auf der linken Seite hat einen akzeptablen Gewinn, aber der Drawdown hat sich im Vergleich zum ursprünglichen Ergebnis mehr als verdoppelt.
Die Strategie auf der rechten Seite hat ebenfalls einen Gewinn in akzeptabler Höhe und der Drawdown war fast unverändert.

In diesem Schritt wähle ich nur 1-3 endgültige Strategien aus, die dem nächsten Test der Robustheit unterzogen werden.
Diese endgültigen Strategien werden nach den besten Ergebnissen in Robustheitstests, der Gesamtrentabilität und der Einfachheit ausgewählt - ich möchte, dass die Strategieregeln so einfach wie möglich sind, und die Handelsregeln sollten einen gewissen Sinn ergeben.


5. Fünfter Filter - Walk-Forward-Matrix-Test

Es bleiben nur wenige Strategien übrig, und wir können den ultimativen Test auf Robustheit durchführen - den Walk-Forward-Matrix-Test. Die WF-Matrix ist einfach eine Matrix von Walk-Forward-Optimierungen mit unterschiedlicher Anzahl von Durchläufen und Laufperioden.

Wenn die Strategie den Walk-Forward-Matrix-Test besteht, bedeutet dies, dass die Strategie mit Hilfe der Parameter-Re-Optimierung ist an eine große Bandbreite von Marktbedingungen anpassbar UND auch, dass die Strategie nicht an bestimmte Daten angepasst ist - denn mit der Re-Optimierung funktioniert sie in vielen verschiedenen Zeiträumen.

Darüber hinaus gibt der WF-Matrix-Test auch Aufschluss darüber, ob die Strategie permanent reoptimiert werden sollte und welches der optimale Reoptimierungszeitraum ist.

Der Walk-Forward-Matrix-Test muss für jede Strategie einzeln durchgeführt werden. Ich lade meine Strategie in den Optimizer und wähle die Option "Walk-Forward Matrix". Ich wähle auch Schritte für Läufe und OOS-Prozentsätze. StrategyQuant wird all diese Kombinationen durchgehen und die Walk-Forward-Optimierung der Strategie durchführen.

Abbildung 10: Aufbau einer Walk-Forward-Matrix

Einstellung der Parameter für die Optimierung
Damit eine Optimierung sinnvoll ist, müssen Sie die Strategieparameter festlegen, die optimiert werden sollen. Jede Strategie verwendet eine andere Logik und hat andere Parameter, so dass Sie die Optimierung unterschiedlich konfigurieren müssen.

Abbildung 11: Optimierungsparameter

Da diese Strategie relativ einfach ist, optimiere ich nur den Stop-Loss-Wert und den Stop-Trailing-Koeffizienten.
Es ist nicht notwendig, alle Parameter zu optimieren, sondern nur die, die den größten Einfluss auf die Leistung der Strategie haben.

Jetzt kann ich die WF-Matrix-Optimierung starten. Dies könnte ein langwieriger Prozess sein, der mehrere Stunden dauern kann - je nach Einstellungen und Anzahl der optimierten Schritte und Parameter sowie der Geschwindigkeit Ihres Computers.

Auswertung der Walk-Forward-Matrix
Wenn die Optimierung abgeschlossen ist, klicke ich in Databank auf das Ergebnis der Walk-Forward-Matrix, um die Details zu sehen.

Abbildung 13: Ergebnisse der Walk-Forward-Matrix

Das Endergebnis ist, dass die Strategie den Walk-Forward-Matrix-Test für Robustheit bestanden hat. Das 3D-Punktediagramm zeigt uns, dass 16 von 24 Kombinationen unsere Kriterien erfüllt haben (bei Verwendung der Standardeinstellungen).
Die Strategie muss nicht für jede Kombination erfolgreich sein, ich suche nach einem 2×2 oder 3×3 Bereich, in dem die meisten Kombinationen erfolgreich sind - dies ist die Gruppe der besten Reoptimierungskombinationen. In diesem Fall kann ich sehen, dass 10 Durchläufe mit 30% Out of Sample eine der besten Kombinationen ist, weil sie von anderen Kombinationen umgeben ist, die ebenfalls bestanden haben.

Wenn ich das Walk-Forward-Optimierungsdiagramm überprüfe, kann ich sehen, dass die Strategie auch während der Re-Optimierung profitabel bleibt.

Abbildung 14: Walk-Forward-Optimierungsdiagramm

Die Walk Forward Matrix gibt mir noch eine weitere wichtige Information - wie oft sollten wir die Strategie neu optimieren?
Für unsere ausgewählte Kombination von 15 Läufen mit 30% Out of Sample:


Zusammenfassung

Ich habe meinen gesamten Arbeitsprozess mit StrategyQuant beschrieben, der zu einigen interessanten neuen Strategien geführt hat.
Sie können es selbst ausprobieren, sich inspirieren lassen und den Prozess möglicherweise mit Ihren eigenen Ideen verbessern, die Sie auf unserer Website veröffentlichen können. Forum.

Mögliche Verbesserungen des Prozesses - Sie können versuchen, nach Strategien für die Long- und Short-Richtung getrennt zu suchen. Jede Richtung hat ihre eigene Dynamik, und unterschiedliche Strategien für Long und Short könnten bessere Ergebnisse liefern.
Ich habe nicht erwähnt Verbesserer - Es ist ein leistungsfähiges Instrument, mit dem Sie nach besseren Varianten Ihrer bestehenden Strategie suchen können, wenn Sie mit der Leistung noch nicht zufrieden sind.

Denken Sie daran, dass es nicht darum geht, eine Strategie zu finden, die auf der Grundlage historischer Daten perfekt ist. Dies ist ein Rezept für eine Katastrophe, weil übermäßig optimierte Strategie ist garantiert in den realen Handel zu scheitern.
Unser Ziel sollte es sein, eine Strategie zu finden, die über verschiedene Daten und/oder Symbole hinweg robust ist, denn das bedeutet, dass sie einen echten Vorteil gegenüber dem Markt hat.

Abonnieren
Benachrichtigen Sie mich bei
1 Kommentar
Älteste
Neuestes Meistgewählt
Inline-Rückmeldungen
Alle Kommentare anzeigen
Mario Gordon
Mario Gordon
2. 1. 2019 18:10 Uhr

Wie könnten die Einstellungen auf SQ4 sein? Ich sehe, es hat neue Funktionen und es wäre toll, die Einstellungen für eine gute Generation von Strategien hochzuladen.

Lesen Sie weiter