
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 Carlo | GefÀ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:
- Zeitraum des âschnellenâ gleitenden Durchschnitts
- Zeitraum des âlangsamenâ gleitenden Durchschnitts
- 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 Carlo | GefÀ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:
Tests | Monte Carlo | GefÀlle Abstieg | "Seeschlacht" | genetischer Algorithmus |
---|
160 von 8.000 | 79,1% | 76,7% | 73,1% | 87,7% |
400 von 8.000 | 84,7% | 85,0% | 77,4% | 93,7% |
800 von 8.000 | 88,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.