Backtesting von Handelssystemen

cello

New member
26. Dez. 2011
6.233
177
0
Svizzera
Das Backtesten von Handelssystemen ist eine wichtige Sache. Ob das System danach manuell gehandelt wird oder automatisch laufen gelassen wird - Jedes System sollte zuerst ausführlichen Tests unterzogen werden bevor es live geht. Das Testen eines Systems lässt sich in zwei Phasen unterteilen:

Backtesten mit historischen Daten

Beim backtesten mit historischen Daten lässt man das Handelssystem einfach mal über eine ausgewählte vergangene Zeitperiode durchlaufen. Danach gibt es eine Auswertung in welcher man sehen kann wie das System performt hätte in der entsprechenden Zeitperiode mit den entsprechenden Einstellungen.

Dabei ist es wichtig, dass man verlässliche historische Daten verwendet. Am besten auch die Daten des Brokers über welchen man das System dann später laufen lassen will. Denn nur so kommt man am ehesten an die Resultate ran welche dann auch effektiv erzielt werden könnten mit dem System.

Desweiteren ist es wichtig, dass man das System über eine möglichst lange Zeitperiode backtestet. Hierbei kommt es natürlich drauf an, in welchem Timeframe das System laufen soll. Bei einem System welches für den 5 Minuten Timeframe ausgerichtet ist, ist ein Backtest über die letzten 3 Monate schon eine eher lange Periode. Ein System welches für den 1 Stunden Timeframe ausgerichtet ist, sollte mindestens über eine Zeitperiode von 1 Jahr backgetestet werden. Bei einem System welches für den 1 Tageschart ausgerichtet ist, sollten der Backtest demnach mind. 5 Jahre umfassen usw. Grundsätzlich gilt: Je länger die Zeitperiode des Backtests, desto verlässlicher die Resultate.

Aus den den Backtests können wir jetzt wertvolle Daten rausziehen. Dabei sind die wichtigsten Kriterien:

-Max. Drawdown!!!

-Profit

-Profit Factor

-Konstanz des Graphen

Das absolute Killer Kriterium ist der Maximale Drawdown. Denn ein System kann noch so erfolgreich sein, wenn irgendwann ein zu grosser Drawdown kommt, dann sind die ganzen Gewinne wieder weg. Und vor allem birgt ein solches System grosse Risiken und diese gilt es zu vermeiden.

Falls die Resulate des Backtests nicht zufriedenstellend sind, können die Einstellungen des Systems angepasst werden. Dazu lässt man am besten mal den Computer mit dem Optimizer drüber und probiert die verschiedenen Variablen aus. Das Optimieren eines Handelssystems sollte man aber mit Vorsicht geniessen. Ich habe dazu einen separaten Thread "Optimieren von Handelssystemen" gemacht. Wenn dabei immer noch kein zufriedenstellendes Resultet erreicht werden kann, dann scheint die Strategie wohl einfach nicht aufzugehen. Es ist sehr wichtig, dass man das auch einsehen kann. Es kommt oft vor, dass man sich irgendwelche Strategien ausdenkt und wenn man diese dann in ein HS umwandelt und testet merkt man, dass die Performance einfach nicht stimmt oder aber zwischen durch zu grosse Drawdowns entstehen, was das HS zu risikoreich macht. In diesem Fall sollte man dies abzeptieren und sich einem neuen Projekt widmen.

Forward testen auf einem Demokonto

Nachdem die Backtests abgeschlossen sind, sollte das System zuerst für eine gewisse Zeitperiode auf einem Demokonto unter "Live Bedingungen" getestet werden. Auch hier sollte die Zeitdauer des Tests dem entsprechenden Timeframe des Systems angepasst werden. Und auch hier gilt wieder: Je länger der Test durchgeführt wurde, desto verlässlicher die Daten.

Wie seht ihr das? Mich nehmen folgende Dinge wunder:

- Über was für eine Zeiperiode lässt ihr die Backtests im Normalfall laufen?

- Was für Werte (Drawdown, Profit Factor, ...) erachtet ihr als gut?

 
Zeitperiode: absolutes minimum sind bei mir 100 Trades, egal wie lange das dauert.DD: Ist teilweise diversifizierbar und abhängig vom Moneymanagement. Profit: Abhängig vom LeverageProfit Factor (jetzt so über den Daumen gepeilt): alles ab 1.5 bis 2 ist gut bis sehr gut handelbar. Robust über 2 sollte dringenst skaliert werden. Alles ab 3 sollte auf fehler überprüft werden und dann all-in :cheers: VanTarph meint folgendes zum (EV/SD):poor but tradeblae 0.16-0.19Average 0.20-0.24Good 0.25-0.29Excellent 0.30-0.50Superb 0.50-0.69Holy Grail 0.70 +

 
Die Aussage von nixx wegen den 100 Trades minimal scheint mir logisch und nachvollziehbar.Sicher sinnvoller als das, was ich bislang gemacht habe (ein fixer Zeitbereich zurück). Ich hatte meine Timeframes etwa so gewählt:- Daily: 3-5 Jahre (falls Daten verfügbar waren auch mal 10 Jahre)- 4h: 1-3 Jahre- 1h: dito--> in allen Timeframes unter 1h war ich bislang kaum erfolgreich, die Systeme haben meist schon im Backtest versagt (sicherlich vor allem deshalb, weil in der Tendenz Trend-folgende Systeme getestet wurden).Idealerweise werden ja Backtests mit historischen Daten mit kleinem Timeframe verwendet; also am Besten Tickdaten (auch wenn die Strategie in einem grösseren TF läuft). Leider skaliert hier Ninjatrader nicht wirklich gut, so dass zumindest bei mir die Maschine bei einem Backtest mit Tickdaten auf einen etwas grösseren Zeitbereich hängenbleibt. Backtests mit grösserer Periode führen IMHO zunehmend zu schlechteren Backtest-Ergebnissen. Generell kann ich aber sagen, dass ich mit der Güte von Ninjatrader im Bereich des Backtestings nicht so richtig warm werde.

 
Zeitperiode: absolutes minimum sind bei mir 100 Trades, egal wie lange das dauert.
Stimmt eigentlich. Macht mehr Sinn das ganze auf die Menge der Trades anzuschauen anstatt nur auf die Zeitperiode. Wichtig ist natürlich auch das Zeitabschnitte mit Extremsituationen auch mitgetestet werden. Man weiss ja nie was kommt.
Idealerweise werden ja Backtests mit historischen Daten mit kleinem Timeframe verwendet; also am Besten Tickdaten (auch wenn die Strategie in einem grösseren TF läuft).
Das ist sowieso Pflicht. Braucht halt ne viel grössere Menge an Daten aber ist auf jeden Fall verlässlicher wenn man mit Tickdaten testet. Zum Beispiel im Bezug auf GAPs ...
 
Zeitperiode: absolutes minimum sind bei mir 100 Trades, egal wie lange das dauert.
Stimmt eigentlich. Macht mehr Sinn das ganze auf die Menge der Trades anzuschauen anstatt nur auf die Zeitperiode. Wichtig ist natürlich auch das Zeitabschnitte mit Extremsituationen auch mitgetestet werden. Man weiss ja nie was kommt.Genau, man sollte nicht vergessen möglichst alle Marktsituationen im Sample zu haben. Die Menge an Trades hat einfach einen statistischen Grund, je mehr desto besser bzw näher an der wirklichen Verteilung (grössere Konfidenz).
 
Idealerweise werden ja Backtests mit historischen Daten mit kleinem Timeframe verwendet; also am Besten Tickdaten (auch wenn die Strategie in einem grösseren TF läuft).
Das ist sowieso Pflicht. Braucht halt ne viel grössere Menge an Daten aber ist auf jeden Fall verlässlicher wenn man mit Tickdaten testet. Zum Beispiel im Bezug auf GAPs ...
Das doofe an Ninjatrader ist eben, dass bei längeren Backtesting-Perioden mit Tickdaten sich das Ding recht regelmässig in die ewigen Jagdgründe befördert. Jedenfalls bei mir. Na ja, immerhin haben sie mit Ninjatrader 7 wenigstens die JET-Engine (welche ja unter anderem auch in Access drin steckt) durch so ne Embedded Version des SQL Servers ersetzt.Wie schaut es da bei MT aus? Sind da Backtests über 2-3 Jahre mit Tickdaten kein Problem?
 
Die einteilung der Zeit - wann die Strategie laufen sollte - finde ich ein wichtiges Kriterium.
Sehe ich auch so. Habe in MT4 dann einfach einen Zeitfilter eingebaut da ich ein HS testete, welches Vola brauchte. Funktioniert recht gut, sofern man weiss welche Zeitzone auf dem Server eingestellt ist. Jedenfalls zu empfehlen :spitze:
Doch auch das beste automatische Handelssystem kann nicht alle Marktlagen berücksichtigen. Eine harmonisches Zusammenspiel zwischen Strategie A, B und C wäre ein möglicher Ausweg.
Absolut! Aber wie bestimmst du wann du in welcher Phase bist? Hast du soetwas mal gelöst? (erinnert mich irgendwie Regime-Switching Modelle) Ist aber noch mehr wie bei einem Trend...ab einem bestimmten Punkt wirst du immer sicherer und am sichersten, dass es einer war, ist man wenn er vorbei ist. :?
 
Ja hatte diese "Studie" gelesen. War interessant.ATR gefällt mir nicht.Genau starke Vola muss ja nicht zwingend schlecht sein...gute Trends haben dies nämlich auch. Vola ist einfach ein zu oberflächliches Mass. Mit einem HS macht es evtl mehr sinn, wenn man weiss wie lange zb Trends sein müssen um profitabel zu sein. Denn Trends gibt es immer, die Frage ist wiel ange sind diese? Sinds sie zu kurz für das jeweilige HS kommen sie einem Oscillierenden Markt gleich und zur gleichen Zeit funktieneren kurzfristige Trendies wunderbar.RegimeSwitchingModelle sind ein Konzept bei dem du mathematisch aufgrund bestimmter Triggers deinen Approach änderst. Eigentlich die wissenschaftliche Herangehensweise eines ATR's :D

 
Oh hatte was falsch gelesen...irgendwie hatte ich ADX gelesen. :roll: ATR ist mein Favorit für "Vola". Jedenfalls zur messung des lokalen Noise.

 
Ich glaube auch nicht, dass es ein System gibt, welches in allen Marktlagen funktioniert. Ich beziehe mich jetzt mehr auf Perioden von mehreren Wochen und Monaten, weniger auf Handelszeiten und Saisonalität.Daher ist es einfach gesagt sicher gut, wenn man einerseits Trendfolger am Start hat, andererseits aber auch in etwa gleich viel durch Mean Reversion abdeckt. Ich glaube bislang auch nicht wirklich daran, dass man die Perioden dann wirklich erkennen kann und selektiv entweder das eine oder andere laufen lässt. Solange jedes System für sich gesehen über eine längere Periode profitabel arbeitet, sollte das auch kein Problem sein.