Optimierung eines Handelsroboters: ein genetischer Algorithmus



In einem frĂŒheren Artikel habe ich begonnen, Methoden zur parametrischen Optimierung zu vergleichen, d. H. Parameter auszuwĂ€hlen und die RentabilitĂ€t des Handels mit einem Roboter wĂ€hrend des nachfolgenden Backtests zu bewerten. Es stellte sich heraus, dass die banale Monte-Carlo-Methode - die Erzeugung zufĂ€lliger unkorrelierter Kombinationen von Roboterparametern - recht gut funktioniert. Jetzt möchte ich einen beliebten Algorithmus testen, einschließlich eines in der Community der ProgrammierhĂ€ndler: den genetischen Optimierungsalgorithmus .

Genetischer Algorithmus zur Optimierung einer Handelsstrategie


Wir werden diesen Algorithmus als Beispiel fĂŒr die Optimierung von 2 Parametern betrachten. Die optimierten Parameter unseres Roboters sind die Periode des gleitenden Durchschnitts und TakeProfit . Lassen Sie uns fĂŒr ein besseres Eintauchen in die „Genetik“ vereinbaren, die Periode des gleitenden Durchschnitts das fĂŒr „Wachstum“ verantwortliche Gen und TakeProfit - das Gen fĂŒr „Augenfarbe“ - zu nennen.

Im Raum der zulÀssigen Parameterwerte beschreibt jeder Punkt, jedes Koordinatenpaar - "Höhe / Augenfarbe" - theoretisch ein "Individuum". Angenommen, wir haben zufÀllig 10 Personen erstellt. Dies war der erste Schritt des genetischen Optimierungsalgorithmus - um die erste Generation zu erstellen:



Im Koordinatenraum M - T werden Punkte zufĂ€llig ausgewĂ€hlt. Zum Beispiel sind zwei mit einem roten Rahmen markierte Punkte „Individuen“ mit geschlechtsneutralen Namen (dies ist ein wichtiger Punkt!) Zhenya und Sasha. Sashas "Wachstum" (in der anfĂ€nglichen Formulierung des Problems ist der Zeitraum des gleitenden Durchschnitts) betrĂ€gt 11 Einheiten, "Augenfarbe" ist 0,6 (grĂŒn-blaue Augen). Zhenya unterscheidet sich geringfĂŒgig in den Parametern. Die gleichen Merkmale beschreiben die 8 verbleibenden Personen.

Der zweite Schritt ist die Reproduktion


Aus der gesamten ersten Generation bestimmen wir eine bestimmte Anzahl der „erfolgreichsten“ Personen. Das Kriterium ist offensichtlich der Wert von CF. Diese Individuen zĂŒchten zufĂ€llig gebildete Paare (aus diesem Grund erhielten sie geschlechtsneutrale Namen). Im Allgemeinen kann eine Reihe von Regeln fĂŒr ĂŒbereinstimmende Paare festgelegt werden. Zum Beispiel, um Individuen auszuwĂ€hlen, deren Eigenschaften den Individuen nahe kommen (d. H. Im Koordinatenraum buchstĂ€blich am nĂ€chsten liegen) - Inzucht. Sie können im Gegenteil nach GegensĂ€tzen suchen (Auszucht). Ich konnte keine Argumente fĂŒr eine dieser Optionen finden - in meiner Implementierung werden die Paare rein zufĂ€llig gebildet ... Zum Beispiel haben Zhenya und Sasha die Qualifikation bestanden und beschlossen, einen Nachkommen zur Welt zu bringen. Was bedeutet das in unserem Kontext:



Von zwei "elterlichen" Individuen erhalten wir das dritte Individuum, das einen Teil der Merkmale eines Elternteils, einen Teil des anderen, erbt. Zum Beispiel haben Zhenya und Sasha einen einzelnen Nikita geboren (Nikita, Nikita?):

  • Nikita erbte das Zeichen „Augenfarbe“ (TakeProfit-Parameter des Roboters) von einem seiner Eltern - „Zhenya“,
  • "Wachstum" (die Periode des Roboters mit gleitendem Durchschnitt) Nikita erbte von "Sasha" ... aber leicht angepasst in Richtung eines anderen Elternteils, Zhenya.

Tatsache ist, dass die Nachkommen umso „nĂ€her“ sind, je kleiner die Dimension des Optimierungsraums ist (in unserem Fall gleich 2). Der genetische Optimierungsalgorithmus legt die Regeln fĂŒr die „Vererbung“ von Genen fĂŒr eine Tochter nicht streng fest. Daher lieh sich Nikita zufĂ€llig die Farbe seiner Augen ohne Änderungen aus, aber es stellte sich heraus, dass er sich in der Mitte zwischen beiden Elternteilen befand, nĂ€her an einem von ihnen. In meiner Implementierung konnte Nikita mit dem gleichen Erfolg die ursprĂŒnglichen Parameter von beiden Elternteilen ausleihen.

Der dritte Schritt ist die Zucht


Beweger des Evolutionsprozesses, natĂŒrliche Auslese. 4 der 10 besten Personen gaben 10 weitere Nachkommen. Jetzt haben wir 20 Personen. Der genetische Optimierungsalgorithmus beinhaltet die Aufrechterhaltung einer konstanten PopulationsgrĂ¶ĂŸe. 10 Personen mĂŒssen „sterben“. Bei dieser Implementierung „sterben“ die meisten Personen der ersten Generation von 80% bis 100%.
Dementsprechend wird in unserem Beispiel die neue Generation aus 0 ... 2 Eltern und 8 - 10 ihrer Nachkommen bestehen. Mit anderen Worten, wenn Sie den Text weglassen, werden die neuen Vektoren der Parameter des Handelsroboters aus den Vektoren berechnet, die im vorherigen Schritt "Ausbreitung" (Kombination) der 4 besten besten Tests erhalten wurden. Die meisten „alten Leute“ akzeptieren keine Teilnahme an der neuen Iteration der Auswahl (andere Optionen zur Implementierung der Auswahl sind möglich).

VervollstÀndigung des Algorithmus


Reproduktion und Auswahl werden N-mal wiederholt. In unserem Beispiel werden zum Vergleich mit drei zuvor getesteten Algorithmen 4 Generationen von 10 Personen getestet, insgesamt 40 Tests.
Es kann jedoch vorkommen, dass eine andere Bevölkerung zusammenbricht. Mit anderen Worten, alle Tests befinden sich in der NÀhe mehrerer Punkte. Um diese Situation zu vermeiden, werden verschiedene Mechanismen verwendet, insbesondere:

  • Infusion von „frischem Blut“ in die Bevölkerung. Zu den Nachkommen der gegenwĂ€rtigen Bevölkerung kommen mehrere neue Individuen hinzu, die zufĂ€llig erhalten wurden, genauso wie die ursprĂŒngliche Bevölkerung gebildet wurde.
  • Mutationsmechanismus: Ein Nachwuchs kann einige der Merkmale (Koordinaten) aufweisen, die sich geringfĂŒgig von den Merkmalen seiner Eltern unterscheiden:



in diesem Beispiel

  • Die Eigenschaften der Nachkommen Jane und Joss - "Wachstum" und "Augenfarbe" - sind von jedem Elternteil entlehnt.
  • Die Merkmale der Nachkommen von Sam und Siri unterscheiden sich etwas von den entsprechenden Merkmalen beider Eltern.

In meiner Implementierung musste die Bevölkerung trotz Mutationen und „frischen Individuen“ regelmĂ€ĂŸig aktualisiert werden, um eine vorzeitige Konvergenz und Lokalisierung der gesamten Bevölkerung auf engstem Raum zu vermeiden.

Wenn wir zu den ursprĂŒnglichen Daten zurĂŒckkehren, an denen wir die Monte-Carlo-Algorithmen, den Gradientenabstieg und den Algorithmus mit dem Arbeitsnamen „Seeschlacht“ getestet haben, kann der Optimierungsprozess durch die folgende Animation veranschaulicht werden:



Wie Sie der Animation entnehmen können, ist die Anordnung der Punkte zunÀchst chaotisch, tendiert jedoch bei nachfolgenden Generationen zu Bereichen mit höheren DF-Werten.

Vergleichen Sie nun die Algorithmen auf derselben OberflÀche: P = f ( M , T ):



Monte CarloGefÀlle Abstieg"Seeschlacht"genetischer Algorithmus
95,7%92,1%97,0%96,8%

Der Durchschnittswert des gefundenen Extremums der CF als Prozentsatz des globalen Werts.

NatĂŒrlich ist es zu frĂŒh, um anhand eines Satzes von Eingabedaten zu beurteilen, aber bisher ist die GA in Bezug auf unseren Handelsroboter dem Algorithmus „Seeschlacht“ unterlegen:

  • ganz unbedeutend - nach dem Durchschnitt des gefundenen quasi-optimalen Wertes der CF,
  • liefert die schlechteste SchĂ€tzung der parametrischen StabilitĂ€t des Handelsalgorithmus, da er die Umgebung der quasi-optimalen Parametertupel, die zu wenig detailliert gefunden wurden, nicht „untersucht“.

Abschließender Test von 4 Optimierungsalgorithmen


Der abschließende Test wurde an 4 SĂ€tzen von Eingabedaten durchgefĂŒhrt - den Ergebnissen des Backtests der Handelsstrategie fĂŒr 4 verschiedene Segmente der Preisentwicklung ( EURUSD : 2016, EURUSD: 2017, XAUUSD : 2016, XAUUSD: 2017).



(Beispiele fĂŒr digitale Filter als Funktionen von zwei Parametern fĂŒr 4 Zeitreihen von Preisen)

Diesmal wurde die Optimierung anhand von 3 Parametern durchgefĂŒhrt:

  1. Zeitraum des „schnellen“ gleitenden Durchschnitts
  2. Zeitraum des „langsamen“ gleitenden Durchschnitts
  3. TakeProfit (Gewinn aus der Transaktion in Prozent, nach Erreichen der Transaktion).

Jeder der Parameter nahm 20 verschiedene Werte an. Insgesamt, um die Tabelle zu erstellen
P = F (Mf, Ms, T)
wobei P der Gewinn ist, Mf die Periode des "schnellen" gleitenden Durchschnitts ist, Ms die Periode des "langsamen" gleitenden Durchschnitts ist, T TakeProfit ist,
20 * 20 * 20 = 8.000 Testiterationen wurden durchgefĂŒhrt.

Die Optimierung wurde mit einer EinschrĂ€nkung von 160, 400 und 800 Tests durchgefĂŒhrt (DF-Berechnungen in ausgewĂ€hlten Koordinaten). Jedes Mal wurden die Ergebnisse fĂŒr 1.000 Optimierungsiterationen gemittelt. Der durchschnittliche DF-Wert fĂŒr den gefundenen quasi-optimalen Parametervektor war:
Monte CarloGefÀlle Abstieg"Seeschlacht"genetischer Algorithmus
84,1%83,9%77,0%92,6%

UnabhÀngig davon ist anzumerken, dass GA auch bei einem kleinen Prozentsatz der Tests der insgesamt möglichen Anzahl von Optionen ein gutes Ergebnis zeigt:
TestsMonte CarloGefÀlle Abstieg"Seeschlacht"genetischer Algorithmus
160 von 8.00079,1%76,7%73,1%87,7%
400 von 8.00084,7%85,0%77,4%93,7%
800 von 8.00088,6%90,1%80,4%96,3%

Anstelle einer Schlussfolgerung


Ich war etwas ĂŒberrascht von dem Ergebnis, das einen genetischen Optimierungsalgorithmus zeigte. Ich glaube nicht, dass ihm das „genetische Paradigma“ der Methode den ersten Platz in der Liste verschafft hat. In gewisser Weise Ă€hnelte es gemĂ€ĂŸ der Logik der Wahl der Koordinaten den Methoden der Dichotomie / des Goldenen Schnitts. Es lohnt sich wahrscheinlich, einen dieser Algorithmen auszuprobieren und die GA damit zu vergleichen.

ZurĂŒck zum Handelsroboter: Es ist erwĂ€hnenswert, wie sich das durch das CF (Gewinn) gebildete „Relief“ der OberflĂ€che von Jahr zu Jahr Ă€ndert. Das heißt, nachdem der Roboter in der Geschichte von 2017 „optimiert“ wurde, ist es nicht sinnvoll, diese Einstellungen im Jahr 2018 (erstes Quartal, Monat, Woche ... 2018) anzuwenden .

KĂŒnstliche, dogmatische und hilflose Handelsstrategien wie unsere (Kauf an der Schnittstelle des gleitenden Durchschnitts) werden wahrscheinlich nicht bald aus der Mode kommen. Leider hatte ich keine anderen Strategien. Dementsprechend schreibe ich den Gewinn oder Verlust von Handelsrobotern eher dem GlĂŒck als den Vor- / Nachteilen des Algorithmus zu. Daher ist die Aufgabe der parametrischen Optimierung eines Handelsroboters fĂŒr mich persönlich ausschließlich von akademischem Interesse.

Source: https://habr.com/ru/post/de430138/


All Articles