Einsatz und Entwicklung von Handelssystemen

Ein kurzer Abriss über die wichtigsten Punkte der Entwicklung und des Einsatzes von mechanischen Handelssystemen, verbunden mit einer kurzen Einführung in die Programmiersprache Equilla.

Was sind mechanische Handelssysteme

Mechanische Handelssysteme, in der hier vorgestellten Ausprägung, sind Programme, welche basierend auf den Konzepten der technischen Chartanalyse, Kauf und Verkaufsentscheidungen an der Börse vornehmen. Dazu bedienen sie sich technischer Indikatoren, der Erkennung von wiederkehrenden Kursmustern und statistischen Besonderheiten der Märkte.

Diese Dinge werden in ein Regelwerk gegossen welches es ermöglicht dass die Performance der Systeme getestet werden kann. Dies hat insbesondere den Vorteil dass sich anhand dieser Tests relativ einfach feststellen lässt ob sich der weitere Einsatz eines solchen Systems lohnt. Durch ihr fixes Regelwerk ermöglichen sie es an der Börse kontrolliert und nachhaltig zu arbeiten.

Der Händler ist somit nicht mehr auf sein tägliches Bauchgefühl und die Verfassung des Tages angewiesen sondern kann sich in aller Ruhe der Umsetzung und Weiterentwicklung des Systems widmen. Durch die Kombination verschiedener Systeme wie Trendfolgesystemen, Counter-trendsystemen und Mustererkennungen sowie einer Diversifikation auf verschiedene Märkte und Zeitebenen kann so ein hochgradig stabiles Portfolio zusammengestellt werden welches beinahe unabhängig von der vorherrschenden Marktphase eine konstante Performance ermöglicht.

Dies ist sowohl unter Risiko- als auch unter Performancegesichtspunkten ein gewaltiger Vorschritt gegenüber dem diskretionären Handel und wird aus dieses Grunde von immer mehr Banken und Fonds eingesetzt.

Beispiele für die Performance von Handelssystemen

Um zu verdeutlichen welche Performance erreicht werden kann hier ein Beispiel eines Systembaskets bestehend aus 3 mechanischen Handelssystemen.

Der Chart zeigt die historische Performance von 3 verschiedenen Modellen. Es ist leicht zu erkennen dass jedes der Systeme seine Schwächephasen hat. Idealerweise performt jedoch genau zu diesen Zeiten ein anders System hervorragend, so dass sich bei einer Kombination dieser Systeme mit ihren 3 verschiedenen Tradingansätzen eine sehr gleichmäßige Performance ergibt.

Basketperformance

Anforderungen an Handelssysteme und deren Einsatz

Welche Anforderungen muss ein Handelssystem erfüllen damit der reale Einsatz erwägt werden kann? In erster Linie sind dies Anforderungen an die Stabilität der Performance.

Das System muss in der Lage sein mit zukünftigen Daten reale Gewinne zu erbringen.

Dabei darf die Performance des Systems nicht zu stark von der mit historischen Daten ermittelten Performance abweichen. Dies gilt sowohl unter Risiko als auch unter Ertragsgesichtspunkten. Um dies zu beurteilen haben sich einige statistische Kenngrößen etabliert mit deren Hilfe man das System beurteilen kann und die eine genaue Beschreibung des zu erwartenden Systemverhaltens geben.

Neben der statistischen Beurteilung ist auch eine visuelle Beurteilung der Equityentwicklung möglich. Dies ermöglicht eine schnelle Analyse des Systemverhaltens in bestimmten Börsenphasen, hat jedoch den Nachteil dass das Verfahren schwerer objektivierbar ist.

Die Anforderungen an den Händler von Handelssystemen ergeben sich in erster Linie aus der gewollten 1:1 Umsetzung der theoretischen Performance des Systems. Es muss gewährleistet sein dass alle Signale so im realen Markt umgesetzt werden können wie dies die theoretische Signalgebung des Systems vorgibt. Dafür ist es unerlässlich dass alle Signale des Systems gehandelt werden und nicht auf Grund der eigenen Marktmeinung einzelne Signale ausgelassen werden. Auch muss das auftretende Slippage beim Entry und Exit der Position möglichst gegen Null tendieren. Ansonsten ist es nicht gewährleistet dass die berechneten Gewinn- und Risikoerwartungen des Systems in der Praxis verwirklicht werden können.

Um diese Anforderungen zu erfüllen haben sich ebenfalls standardisierte Vorgehensweisen etabliert. Auf der Entwicklungsseite muss zum Beispiel sichergestellt sein dass das System nicht mit dem gesamten zur Verfügung stehenden Datenmaterial entwickelt wird um so einen Teil der Daten für Testzwecke verwenden zu können. (in sample, out of sample test)

Des weiteren sollte das System in mehreren Märkten mit den selben Einstellungen eine ähnlich gute Performance aufweisen. Dies stellt sicher dass es nicht zu stak an ein historisches Marktverhalten angepasst wurde und erhöht damit die Wahrscheinlichkeit einer guten Performance in zukünftigen Zeiten.

Auf der Umsetzungsseite sollte täglich die theoretische und reale Systemperformance aufgezeichnet werden. Dies ermöglicht es schnell Rückschlüsse darüber zu ziehen ob es ein Problem bei der Umsetzung des Systems am Markt gibt. Des weiteren muss das Risiko des Systems tagtäglich mit dem historischen Risiko verglichen werden um so ein Abweichen des Systems vom Erwartungswert zeitnah und ohne große vorherige Verluste feststellen zu können.

Ein zu starkes Abweichen der Systemperformance vom historischen Erwartungswert muss zu einer konsequenten Abschaltung des Systems führen, idealerweise wird diese Überwachung direkt in den Systemcode übernommen so dass das System selbst erkennt wann es mit dem Markt nicht mehr zurechtkommt. Nur bei Beachtung all dieser Punkte ist ein nachhaltiger Erfolg beim Einsatz von Handelssystemen möglich.

Visuelle Entwicklung einer Systemidee

Nach diesen theoretischen Betrachtungen über die Entwicklung und den Einsatz von Handelssystemen möchte ich nun zur realen Umsetzung derselben kommen.

Es soll ein einfaches Trendfolgemodell für den Dax Future exemplarisch entwickelt werden, um so den geneigten Leser selbst in die Lage zu versetzen eigene Ideen in Form eines Handelssystems zu verwirklichen. Für die Entwicklung wird die Software Tradesignal enterprise und die dazugehörige Programmiersprache Equilla verwendet.

Es wurden nicht-adjustierte Futuresdaten verwendet. Vor einem realen Einsatz des Systems muss es somit noch mit adjustierten Daten verifiziert werden, für die exemplarische Entwicklung und die Einführung in die Programmiersprache macht dies jedoch keinen Unterschied.

Das exemplarische Trendfolgemodell soll auf zwei gleitenden Durchschnitten unterschiedlicher Länge basieren und, um den Artikel kurz zu halten, nur Long Positionen eingehen. Anhand eines visuell basierten Entwicklungsansatzes soll zunächst herausgefunden werden wie sich mit Hilfe der beiden Durchschnitte jene Martphasen definieren lassen in welchen ein Einstieg in eine Long Position Erfolg viel versprechend scheint. Dabei sollen nicht die genauen Einstiegspunkte gefunden werden, diese sind auch noch von dem verwendeten Exit abhängig, sondern jene Marktphasen, in welchen sich theoretisch mit einer kurz oder langfristigen Longposition Geld verdienen lassen müsste.

Eine Standartinterpretation der gleitenden Durchschnitte besagt dass sich der Markt in einem Aufwärtstrend befindet wenn der kürzere gleitende Durchschnitt sich über dem Längeren befindet. In Tradesignal enterprise können solche Zusammenhänge sehr einfach grafisch dargestellt werden und man sieht auf den ersten Blick ob diese Interpretation der Durchschnitte Erfolg versprechend ist und somit als Trendfilter für ein Handelssystem herangezogen werden kann.

Mit der Abfrage in Zeile 9 des Programmcodes wird die Lage der gleitenden Durchschnitte zueinander realisiert und, falls der Kurze über dem Langen liegt, der Chart gefärbt. Man sieht dass man damit die langen Trends gut erkennt, jedoch im Falle eines Trendwechsels wie z.B. Ende Juli 1998 viel zu lange an einen steigenden Markt glaubt.

Betrachtet man den Verlauf der beiden Indikatoren und ihren Verlauf gegenüber dem Markt genauer drängt sich der Vorschlag auf, dass die beiden gleitenden Durchschnitte zusätzlich zu ihrer relativen Lage auch steigen müssen um einen Aufwärtstrend zu erkennen. Damit hätte man das Färben des Charts z.B. im März-April 2000 vermieden. Diese Forderung ist im nächsten Chart realisiert. Durch den Vergleich des Durchschnitts mit seinem Wert von vor 3 Bars (Zeile 10-11) erhält man eine einfache Bestimmung seiner Richtung.

Dennoch sind noch eine Schwächen der Trenderkennung sichtbar. Bei sehr schnellen Umschwüngen wie Ende Juli dreht der gleitende Durchschnitt nicht schnell genug und wir glauben weiterhin uns in einem Aufwärtstrend zu befinden.

Verlangt man zusätzlich zur Lage und zum Steigen der Indikatoren dass sich der Close Kurs über dem kürzeren gleitenden Durchschnitt befindet erhalten wir eine, verglichen mit der Einfachheit der Indikatoren und der simplen Programmierung, gut verwendbare Trenderkennung:

Betrachtet man das Ergebnis dieser Trenderkennung in einem anderen Markt so erkennt man auch hier eine Identifikation von Börsenphasen in welchen Long Positionen Gewinne bringen könnten. Somit vermeiden wir von Anfang an eine zu starke Spezialisierung des Systems auf einen Markt.

Sind jene Phasen, in welchen wir eine Longposition eingehen wollen, identifiziert können wir zum nächsten Punkt bei der Entwicklung des Handelssystems kommen.

Programmierung des Einstieges in die Position

Noch ist nicht bekannt mit welchen Längen der Averages das System letztendlich arbeiten soll, die Verwendung eines 20 und 100 Tage Durchschnitts stand bisher nur stellvertretend für einen kurzen und langen gleitenden Durchschnitt. Bei der Programmierung des Handelssystems werden die Längen der gleitenden Durchschnitte deshalb als Inputvariablen definiert. So kann in einem späteren Schritt der Entwicklungsarbeit mit Hilfe des Optimierer noch die ideale Längeneinstellung gefunden werden und diese auf Stabilität überprüft werden.

Anstatt den Chart farbig zur gestalten, was nur der visuellen Analyse des Zusammenspiels der Indikatoren galt, wollen wir nun eine Variable definieren welche den Wert 1 erhält sobald das System in Kaufbereitschaft versetzt werden soll. Auch soll ein möglicher Einstieg in eine Position nur erfolgen wenn noch keine Position vorliegt. Durch die Vermeidung von multiplen Positionen vereinfacht sich die exemplarische Programmierung. Die nächste Überlegung welche wir anstellen müssen ist zu welchem Preis wir eine Position eingehen wollen. Soll dies am Ende des Handelstages erfolgen oder gleich zur Eröffnung des nächsten Tages? Was passiert wenn der Markt mit einem Gap nach oben oder unten eröffnet, sollen wir auf jeden Fall eine Position eingehen oder lieber noch warten? Die Praxis der Systementwicklung hat bei Trendfolgesystemen gezeigt dass es vorteilhaft ist mit tagesgültigen Limitordern zu arbeiten. Als Wunschpreis versuchen wir den Close des Tages der Ordereingabe zu erreichen, bei einer günstigeren Markteröffnung handeln wir gleich zur Eröffnung, von Eröffnungsgaps nach oben sind wir durch die Limitorder geschützt. Auf die weitergehenden Möglichkeiten zum Auffinden eines günstigen Einstiegszeitpunkts wird hier verzichtet. Denkbar ist z.B. das Aufspüren von kurzfristigen Korrekturen um so einen Einstieg mit minimalem Risiko zu ermöglichen.

image022

Erweitert man den Programmcode noch um einen Input für die Anzahl der zu handelnden Kontrakte ergibt sich folgendes Teilprogramm zum Einstieg in die Position:

Programmierung des Ausstiegs aus der Position

Bevor wir daran denken die soeben eingegangene Position mit einem satten Gewinn zu schließen müssen wir sie erst einmal gegen zu starke Verluste absichern. Nur wie erkennt man dass der Markt gegen einen läuft und es sich nur um eine kurzfristige Korrektur handelt? Ein zu eng gesetzter Stopp verhindert dass wir den kommenden Trend mitnehmen, ein zu weiter Stopp beschert uns zu starke Verluste. Ein Weg um einen guten Stopppunkt zu finden ist deshalb diesen den Markt selbst festlegen zu lassen. Dazu bestimmen wir jene Weite um die sich der Markt täglich bewegt. Bewegt er sich mehr als eine durchschnittliche Weite gegen uns hatten wir vermutlich den falschen Einstiegszeitpunkt gewählt. Dies hat auch den Vorteil dass uns der Markt diese Weite vorgibt, wir das System also nicht ständig anzupassen brauchen. Ein fixes Stopp von z.B. 1% oder 100Punkten im Dax bedeutet etwas völlig anderes, je nachdem ob der Dax bei 2000 oder 8000 Punkten steht oder ob wir uns in einem volatilen Abwärtstrend oder in einer langweiligen Seitwärtsphase befinden. Als Maß für die Weite der täglichen Schwankungsbreite kann man die average True Range verwenden. Wie dieser Indikator programmiert ist kann man in jedem Buch über Indikatoren nachlesen, ich will ihn hier nur grafisch vorstellen um ein Verständnis für das gewählte Vorgehen zu ermöglichen.

Am Chart erkennt man dass dieser Indikator die tägliche Schwankungsbreite des Dax im Oktober 1998 mit etwa 200 Punkten beschreibt, im Oktober 1999 dahingegen mit 100 Punkten. Betrachtet man die angesprochen Zeitpunkte im Detail und vergleicht den Indikatorstand mit den täglichen Marktbewegungen erkennt man dass dieser Indikator kein schlechtes initial Stopp abgegeben hätte.

Wenn wir also den maximalen Verlust unserer Position auf jene Anzahl von Punkten begrenzen wollen welche der Indikator als durchschnittliche Marktbewegung ausgibt setzen wir unser Stopp auf jenen Wert. Der dazu notwendige Befehl wurde am Ende des bisherigen Programms angefügt.

„setstoloss“ verlangt als Eingabe jedoch keinen Punktwert sondernd den entsprechenden Geldbetrag den dieser Punktwert repräsentiert. Wir müssen den Indikator deshalb mit der Anzahl der gehandelten Kontrakte (con) und dem Wert für einen Punkt (lotsize) multiplizieren. Wenn wir den richtigen Einstiegszeitpunkt erwischt haben sollte sich der Markt in die von uns gewünschte Richtung bewegen. Aus diesem Grund und um unnötiges Risiko zu vermeiden sollten wir den Stopp sukzessive anheben um so das Risiko für die Position schrittweise zu verkleinern. Damit beginnen wir nach 3 Tagen, indem wir den Stopp auf das Low des Tages des Einstiegs anheben. Spätestens 5 Tage nach dem Einstieg sollte sich der Markt soweit in unsere Richtung bewegt haben dass wir den Stopp auf den Einstiegspreis nachziehen können. Sollte er das nicht getan haben ist irgendetwas mit dem vom Programm erkannten Trend nicht in Ordnung und die Position wird ausgestoppt. Im nächsten Screenshot des Programms sieht man diese zweistufige Anhebung des Stopps.

Zeile 18 des Programmcodes hebt den Stopp 3 Tage nach dem Entry auf das low des Einstiegstages, Zeile 19 setzt den Stopp 5 Tage nach dem Einstieg auf den Einstiegskurs.

Damit ist jedoch noch nichts gewonnen, wir brauchen also noch einen Exit welcher unsere zwischenzeitlich hoffentlich aufgelaufenen Gewinne mitnimmt. Dazu lassen wir dem Markt 2 weitere Tage Zeit sich in unsere Richtung zu bewegen und versuchen anschließend die Position am Hoch des jeweiligen Vortages zu schließen.

Ist die Position geschlossen und die Indikatoren steigen noch immer wird das System am nächsten Tag eine Position aufzubauen versuchen, da ja nun unsere Einstiegsbedingung wieder erfüllt ist: keine Position vorhanden und die Indikatoren steigen… Für besonders rasante Marktexplosionen empfiehlt es sich zusätzlich zu den bereits programmierten Exits noch ein Profit Target einzuführen. Dies sollte so groß gewählt sein dass es unsere Gewinne nicht zu früh beschneidet und nur in Ausnahmesituationen zum Tragen kommt. Für dieses System habe ich mich für die 3-fache durchschnittliche Tagesbewegung entschieden

Damit ist prinzipiell alles vorhanden was ein einfaches trendfolgendes Handelssystem benötigt. Eine Trenderkennung, ein Verfahren zum Eingehen einer neuen Position, ein Stopp Loss welches nachgezogen wird und einen Exit welcher die aufgelaufenen Gewinne mitnimmt. Der nächste Schritt in der Systementwicklung ist die Kontrolle der Performance des Systems, die Überprüfung auf Stabilität und gegebenenfalls eine Optimierung der vorhandenen Parameter.

Evaluierung des Systems

Bevor wir jetzt beginnen uns reich zu rechnen und mit allen Parametern cuvefitting zu betreiben möchte ich sie an die wichtigste Eigenschaft erinnern welche ein Handelssystem besitzen muss. Es muss in der Lage sein mit in der Entwicklung nicht verwendeten Daten in etwa dieselben Ergebnisse wie im Entwicklungszeitraum zu bringen. Für dieses Beispielsystem stehen mir die Kursdaten von 1997 – 2005 zur Verfügung. Um dem System nicht alle Daten zur Verfügung zu stellen schneidet man bevor man mit der genauen Überprüfung des Systems beginnt einen Teil der Daten ab. Diese Daten sollen dann als Testdaten fungieren, mit welchen man den letzten abschließenden Test des Systems vornimmt. Diese Vorgehensweise ist am folgenden Chart abgebildet:

Der rot markierte Datenbereich soll von nun an zur Evaluierung und zur Optimierung des Systems dienen. Dieser Bereich sollte alle möglichen Börsenphasen umfassen, Auf- und Abwärtstrends, Seitwärtsphasen, Zeiten hoher und niedriger Marktvolatilität. Um zu verhindern dass das System bei den weiteren Tests und Optimierungen die Daten nach dem Juli 2001 verwendet ist es am sichersten dass man dieses Datum direkt im Programm festhält.

Das hier verwendete interne Datumsformat ist etwas kryptisch, 101 bedeutet 2001, 0701 den 1. Juli…

Visuelle Analyse der Equityentwicklung

Untersuchen wir nun die Performance des Systems im Entwicklungszeitraum.

Man erkennt dass die beiden großen Aufwärtstrend gut genutzt werden konnten, in den Abwärtstrends keine Trades ausgelöst wurden und die Seitwärtsphase so leidlich überstanden wurde. Auf den ersten Blick scheint die Trenderkennung und die Logik für die Entrys und Exits wie gewünscht zu funktionieren.

Es wurde bereits erwähnt dass ein System nie nur auf einem Instrument funktionieren sollte sondern zumindest auch bei einem anderen. Ein Blick auf den Bundfuture zeigt dass das System auch mit diesem funktioniert.

Gemessen an den zwischenzeitlichen Rückschlägen ist die Performance nicht ganz so gut wie beim Dax, aber auch hier konnten die Abwärtstrends vermieden und die Aufwärtstrends zumindest teilweise genutzt werden. Dies ist der erste Hinweis dass das System als stabil bezeichnet werden kann…

Statistische Untersuchung des Systems

Die statistischen Kenngrößen des Systems werden im Performance Report wiedergegeben. Hier eine verkürzte Darstellung dieses Reports mit den wichtigsten Kennzahlen. Anhand dieser Zahlen können wir bestimmen was von unserem System in Zukunft zu erwarten ist und ob sich ein Einsatz lohnt.

Die Erklärung der einzelnen Kennzahlen würde diesen Artikel sprengen, deshalb nur ein kurzer Blick auf die wichtigsten Zahlen. Wichtig für die Erwartungen an das System sind die Kennzahlen Total Net Profit und Max Intraday Drawdown. Sie definieren den gewonnen Geldbetrag und den größten zwischenzeitlichen Verlust und sind somit ein gutes Maß für die zu erwartende Performance des Systems. Der Profit Factor definiert welchen Vorteil wir gegenüber dem Markt haben. Er ist das Verhältnis von Gross Profit zu Gross Loss. Gross Profit ist die Summe aller Gewinntrades, Gross Loss die Summe aller Verlusttrades. Bei einer genügend hohen Anzahl von Trades, zumindest mehr als 100 sollten es sein um den statistischen Fehler zu minimieren, ist ein möglichst hoher Profit Factor ein gutes Maß für die Stabilität des Systems. Achten sie anfangs einfach darauf dass er nicht unter 1.4 liegt, dann hat das System in der Regel eine gute Chance zu überleben. Für das oben dargestellte System sind zu wenige Trades vorhanden um die Daten mit zumindest einiger statistischer Sicherheit zu analysieren.

Der Net Profit alleine eignet sich weitaus schlechter als der Profit Factor um die Güte eines Systems zu beurteilen, auch die Anzahl der Winningtrades ist für sich alleine genommen ohne Bedeutung.

Verkürzt dargestellt erwarten wir nun im Testzeitraum 2001 -2005 ähnliche Kennzahlen wie im Entwicklungszeitraum. Ist dies nicht der Fall wurde das System vermutlich zu stark auf die Daten im Entwicklungszeitraum angepasst.

Bevor wir uns den Testdaten zuwenden wollen wir mit Hilfe des Optimierer noch untersuchen ob die gewählten Längen der gleitenden Durchschnitte als stabil bezeichnet werden können.

Optimierung des Systems

Bei der Optimierung eines Systems berechnet man alle möglichen Parameterkombinationen und überprüft ob das System mit vielen Parametern ähnlich Ergebnisse produziert. Das hier vorgestellte System besitzt nur 2 Parameter, die Länge für den kurzfristigen und die Länge für den längerfristigen gleitenden Durchschnitt. Sie wurden anfangs mit 20 bzw. 100 Tagen festgesetzt. Man versucht nun herauszubekommen wie sich das System mit z.B. einem 15 Tage und 150 Tage langem gleitenden Durchschnitt verhalten hätte. Dazu habe ich die Längen der Durchschnitte um 50% nach unten und nach oben variiert, also den kürzeren von 10 bis 40 Tagen und den längeren von 50 bis 200 Tagen. Der Chart stellt nun den Profit Faktor aller möglichen Indikatorkombinationen dar. Dazu ist die Länge des kürzeren Durchschnitts auf der x-Achse aufgetragen, die Länge des längeren Durchschnitts auf der y-Achse. Farblich dargestellt ist der Profit Faktor. Je dunkelgrüner die Farbe umso höher ist der Faktor. Ein hoher Profit Faktor gilt uns als erstrebenswert. Es wird jedoch nicht nach dem höchstmöglichem Faktor gesucht sondern nach einem Bereich in welchem sich der Faktor insgesamt auf einem hohen Niveau bewegt. Dieser Bereich ist durch die rote Ellipse gekennzeichnet. Wählt man nun den Mittelpunkt der Ellipse und liest die dazugehörigen Längen ab sollte das System stabil optimiert sein. Auf dem Chart kann man für dieses System 23 Tage für den kürzeren Durchschnitt und 130 Tage für den längern Durchschnitt ablesen und als neuen Parametersatz übernehmen.

Die Equity des Systems sieht mit diesen Parametern nur wenig verändert aus, da die 20/100er auch einen ähnlich hohen Profitfaktor aufwies, jedoch hoffe ich in Zukunft mit diesen Parametern bessere Ergebnisse zu erhalten.

Da man auf dem Optimierungschart erkennt dass das System weitgehend unabhängig von den gewählten Längen für die Durchschnitte ähnlich gute Ergebnisse bringt ist die Optimierung an diesem Punkt abgeschlossen. Wäre dies nicht so müsste man jetzt noch einmal zur Entwicklung des Trendfilters, der Einstiegslogik und den Exits zurückkehren, bis dieses stabile Verhalten im Entwicklungszeitraum erreicht ist.

Zusammenstellung eines Systembaskets

Die Entwicklung des Systems ist abgeschlossen, doch bevor an einen realen Einsatz des Systems gedacht wird kann man die Stabilität der zu erwartenden Handelsergebnisse weiter verbessern. Wir hatten gesehen, dass das System auch mit dem Bundfuture funktioniert, es liegt also nahe einen Basket aus Bund und Daxfuture zusammenzustellen, ums so auch in Phasen wo im Dax kein Bullenmarkt vorherrscht durch die Performance des Bundfuture Systems zu profitieren.

Überlegt man wie man die beiden Futures untereinander gewichtet kann man dies mit dem im Entwicklungszeitraum erreichten Profit abschätzen. Das Dax System (optimiert) erreichte mit einem Future einen Gewinn von etwa 80.000€, das Bundfuture System mit einem Kontrakt (optimiert) etwa 10.000€. Der Drawdown im Bundfuture ist vergleichsweise etwas höher, so dass man mit einer 1:7 Gewichtung nicht ganz falsch liegen kann.

Das Ergebnis dieses Baskets ist im folgenden Chart abgebildet.

Wie man sieht ergibt dies eine weitaus gleichmäßigere Performance als wenn man sich für nur einen Markt entschieden hätte. Nun weiter den Ergebnissen welche der basket mit den noch nicht verwendeten Testdaten 2001 – 2005 erreicht:

Der nächste Chart zeigt den Verlauf der Gewinnentwicklung für diesen kleinen Basket mit den Daten nach 2001.

Man erkennt dass der Basket ähnlich wie im Entwicklungszeitraum performt. Dies war nach den stabilen Optimierungs- Ergebnissen auch zu erwarten.

Noch einen Blick auf die Performance der Einzelsysteme:

Dax:

image058

Bund:

Basket 1*Dax & 7*Bund:

 

UPDATE 2015

 

Der obige Artikel wurde erstmals 2005 auf meiner webseite quanttrader.at veröffentlicht, seitdem hat sich nicht nur die Welt deutlich verändert, auch ich habe gelernt.

Nie würde ich heute einen Systembasket in nur einer Zeitebene handeln. Was hier am tageschart funktioniert, funktioniert auch am Wochenchart. Das ergibt Diversifikation und glättet das out-of-sample Ergebnis.

Auch würde ich nicht mehr nur den daxfuture gegen den Bundfuture handeln. Anstatt des DAX bietet sich ein Basket aus Sub-Index CFDs oder eines Baskets aus Einzelaktien des Index an.

Aber was wurde aus dem Originalsystem? Wie hat es nach 2005 performt? Hier die Antwort: 187.800€ Gewinn

Einführung in die Systementwicklung - out of sample

Einführung in die Systementwicklung – out of sample

Anscheinend hat es prinzipiell funktioniert, auch wenn die Volatilität der Returns zugenommen hat. Berücksichtigt man jedoch die Einfachheit des Systems und die Länge des out-of-sample Zeitraums, kann man ohne zu übertreiben sagen, dass dieses System ein paar wesentliche Merkmale des Marktes trifft und deshalb diese lange Phase überlebt hat. Mit Gewinn!

In der Praxis wäre dieser Systembasket jedoch spätestens 2009 überarbeitet oder abgestellt worden. Zu diesem Zeitpunkt überschritt Drawdown den max. Drawdown des backtests. Was aber nicht so schlimm gewesen wäre – bis dahin hatte das System seine beste Phase, der out-of-sample bereich 2005-2009 bracht so wie im Backtest vorhergesagte Gewinne.

Hier der Tradesignal Equilla Code des Systems wie 2005 veröffentlicht:

Inputs: sma_period(20), sma_period2(100), con(1);
Variables: sma, sma2, long_ok;

sma=average(close,sma_period);
sma2=average(close,sma_period2);

if sma>sma[3] and
  sma2>sma2[3] and
  close>sma and
  marketposition<=0 then long_ok=1 else long_ok=0;

if long_ok=1 then buy con contracts next bar at close limit;

setstoploss(con*avgtruerange(14)*lotsize);

if barssinceentry>=3 then sell next bar at low[barssinceentry] stop;
if barssinceentry>=5 then sell next bar at entryprice stop;
if barssinceentry>=7 then sell next bar at high limit;

setprofittarget(3*con*avgtruerange(14)*lotsize);