Backtest
Last updated
Last updated
Das backtesting einer Strategie wurde als Schlüsselfunktion implementiert um die Performance einer Strategie auf historischer Basis zu überprüfen. Es ist möglich einen Backtest für ein einzelnes Instrument zu starten oder für eine ganze Instrumentliste (Portfolio).
Der Backtest benötigt folgendes:
Historische Daten eines Datenfeeds (das File mit Bars / das File mit Ticks)
Strategie von AgenaSkript oder
Importierte Strategie
Ab AgenaTrader Discovery oder höher: AgenaTrader++ (plusplus) Strategie.
Das Backtest Setup finden Sie in der Hauptmenüleiste in den Kategorien: Haupt -> Neu -> Backtest.
Workflow:
Wählen Sie im SetupBuilder eine Analyzer Session aus.
Legen Sie im SetupBuilder Ihre Einstiegs-, Stopp- und Target-Parameter fest
Wählen Sie unter Haupt -> Neu -> Backtest
Wählen Sie unter „Allgemeine Optionen“ Ihre Strategie (z.B. AT++)
Wählen Sie die gewünschte Datenquelle: z.B. „Datenfeed“ oder „File with Ticks“ (diese müssen Sie downloaden und/oder aus Ihrem File auswählen)
Legen Sie die Zeiteinheit fest
Wählen Sie die gewünschte Instrumentenliste (optional: wählen Sie zusätzlich per Mausklick ein bestimmtes Instrument an)
Definieren Sie Start und Ende mit Datum und Uhrzeit
Wählen Sie aus den Tabs den Reiter „Einstellungen“ an
Stellen Sie unter „Backtest Parameters“ Ihr Entry-Signal ein und überprüfen Sie, dass Stopps und Targets mit Ihrem Setup übereinstimmen, Sie haben jedoch die Möglichkeit, auch hier noch etwas zu ändern. Bestätigen Sie mit dem „Save Setup“-Button.
Wählen Sie unter „Parameters“ Ihre Analyzer Session (z.B. „Standard“)
Definieren Sie die Zahl der gewünschten Bars, Kaufkraft usw.
Bestätigen Sie mit „Save Setup“. Bitte beachten Sie: Wenn Sie unter „Backtest Parameters“ das Setup verändert haben, überschreiben Sie mit „Save Setup“ Ihre Einstellungen im SetupBuilder.
Starten Sie mit „Laufen lassen“ den Backtest, wobei Sie hier nun festlegen können, ob Sie die gesamte Instrumentenliste oder nur ein ausgewähltes Instrument backtesten möchten
Im Bereich unter der Instrumentenliste können Sie den Fortschritt der Berechnungen beobachten bzw. diese stoppen.
Input (Eingabe) Reiter ermöglichst die folgenden Einstellungen:
Parameter
Bedeutung
Start Date&Time
Ein Datum und eine Uhrzeit für den Backtest Start wählen
End Date&Time
Ein Datum und eine Uhrzeit für das Backtest Ende wählen
Instrument Lists
Auswahl einer Instrumentlsite
Time-Frame
Das Zeitintervall für den Daten am Chart e.g. 1Min, 1Stunde, 1Tag (Time-Frame = Ticks ist nicht möglich)
Strategy
Run
Hier kann zwischen "run on selected (einzelnes) instrument" oder "run on instrument list" (Portfolio) gewält werden damit wird der Backtest gestartet.
Open
Öffnet einen bereits berechneten Backtest der in der Vergangenheit gespeichert wurde
Data Source
Hier kann ausgewählt werden ob die Daten zur Kalkulation des Backtests von einem DatenFeed kommen oder von einer Datei. Datei: mit Bars oder mit Ticks. Die Datei sollte keine Kopfzeile beinhalten.
Result (Ergebnis) Reiter bietet die folgenden Möglichkeiten an:
Parameter
Bedeutung
View Type
Das Ergebnis wird entweder in Amount (Betrag), Percent (Prozent) oder Ticks ausgegeben.
Save Result
Ermöglicht das Speichern von Backtest Ergebnissen.
Dieser Reiter zeigt zwei Typen von Strategien:
1. Selbstprogrammierte Strategien oder importierte Strategien
Die Parametereinstellungen können bearbeitet werden.
Zusätzliche Parameter:
Buying Power (Kaufkraft)
Cash Value (Kontobetrag)
Commission (Kommission)
Order Handling Mode: tbd (Standard/Advanced: Uni Achen)
Slippage (Schlupfverluste)
2. AgenaTrader++ Strategien Die AT++ Paramenter sind hauptsächliche dieselben wie bereits oben angezeigt, weisen jedoch kleine Unterschiede auf:
Die Backtest Parameters Kategorie enthält die Einstellungen aus dem Setup Builder
Die Parameters Kategorie erlaubt es eine Analyzer Spalte session aus dem Setup Builder zu wählen
Es ist mögliche die bearbeiteten Einstellungen mit dem Save Setup Button zu speichern
Das speichern überschreibt die Einstellungen im Setup Builder.
Unter Kategorie "Trading" stehen die folgenden Funktionen zur Verfügung:
Funktion
Beschreibung
Enable Trading Breaks
Im Marktplatz-Escort eingestellte Handelspausen können berücksichtigt oder nicht berücksichtig werden. Ist dieser Parameter als „true“ gesetzt, errechnet der Backtest seine Ergebnisse nur innerhalb der in AgenaTrader eingestellten Handelszeiten. Pre- oder Postmarket-Bewegungen werden nicht berücksichtigt.
Last Opended Trade Handle Mode
Sollte während des Backtest der letzte Trade nicht abgeschlossen werden können, dann kann ausgewählt werden, ob dieser Trade dennoch geschlossen werden soll (Option: Close) oder offen bleibt (LeaveOpen). Bei „LeaveOpen“ fehlt für den letzten Trade die Gewinn&Verlust Berechnung.
Orders Handling Mode
Mögliche Optionen: - Datenfeed (Bsp. YFeed, usw. oder ein Datenfeed von einem Broker) - File with Bars: Daten aus einer Datei mit Bars - File with Ticks: Daten aus einer Datei mit Ticks.
Dateiformat und Formatierung für Daten aus einer Datei:
File with Bars: .csv und .txt
File with Ticks: .csv und .txt
Der Charts Reiter wird aufgeteilt zwischen Equity Kurve und Chart Historie. Die Equity Kurve enthält informatione entweder über ein Instrument oder über eine gesamte Instrument Liste (Portfolio) während die Chart Historie immer nur ein Instrument anzeigt.
Die Funktionen Show, Equity und X Axis stehen erst zu Verfügung, nachdem ein Backtest errechnet wurde.
Repräsentation der Equity Kurve
Wenn die Option Show All (alles anzeigen) aktiv ist, zeigt die Equity Kurve alle Trades des backtesting Ergebnisses.
Wenn die Option Show Chart (Chart anzeigen) aktiv ist, zeigt die Equity Kurve all jene Trades die von der aktuellen Chart Historie angezeigt werden (Zoom).
Diese beiden Optionen haben auch Auswirkungen auf andere Reiter:
Show All Auswirkugen auf folgend Reiter: Summary, Trades, Orders, Executions und Periods. Die Ergebnisse dieser Reiter werden für alle Trades ausgegeben.
Show Chart Auswirkungen auf folgende Reiter: Summary, Trades, Orders, Executions und Periods. Die Ergebnisse dieser Reiter werden nur für jene Trades ausgegeben, welche von der Chart Historie angezeigt werden (Zoom).
Equity Single (einzeln): zeigt nur das ausgewählte Instrument an während
Equity All (alle): Instrumete der Instrumente Liste (Portfoliio) anzeigt und für jedes Instrument eine eigene Kurve zeichnet
Equity Account (Konto): alle Instrumente der Instrument Liste (Portfolio) in einer gemeinsamen Kurve anzeigt
Wichtige Information! Die Optionen Show All oder Show Chart haben keine Auswirkungen wenn die Equity Optionen auf All oder Account gesetzt wurden. Die Resultate der oben angeführten Reiter werden in diesem Fall immer auf Basis der gesamten Trades berechnet.
Die X Axis Optionen erlauben es die Equity Kurve entweder mit Datum & Gewinn/Verlust oder mit Trades & Gewinn/Verlust anzuzeigen.
Navigation Zur Analyse der Ergebnisse gibt es zwei Zoom Möglichkeiten:
Mausrad
Halten der rechten Maustaste und einen Bereich in der Chart Historie oder Equity Kurve auswählen.
Wie bereits erwähnt haben die Show All oder Show Chart Optionen eine Auswirkung an der Ausgabe der Equity Kurve sowie den Ergebnissen in den anderen Reitern. Wenn Show Chart aktiv ist, zeigt der Zoom in der Chart Historie die selben Ergebnisse in der Equity Kurve an. Wenn Show All aktiv ist, hat der Zoom in der Chart Historie keine Auswirkungen auf die Equity Kurve.
Das zoomen in der Equtiy Kurve, auf der anderen Hand, hat immer Auswirkungen auf die Chart Historie und es werden die selben Informationen ausgegeben.
Kontext Menü Optionen:
Copy (kopieren)
Save Image As... (Bild speichern als...)
Page Setup... (Seiteneisntellungen für den Druck)
Print... (Drucken)
Show Point Values (Punktwerte anzeigen)
Set Scale to Default (Scalierung auf Default zurücksetzen)
Kontext Menü Graph:
Cumulative Profit (kummulierter Gewinn)
Daily Net Profit (netto Gewinn pro Tag)
Entry Efficiency (Effizienz Einstieg)
Exit Efficiency (Effizienz Ausstieg)
MAE
MFE
Monthly Net Profit (netto Profit pro Monat)
Weekly Net Profit (netto Profit pro Woche)
Total Efficiency (Effektivität Total)
Trade Profit/Loss (Gewinn/Verlust pro Trade)
Kontext Menü Trades:
All (alle)
Long (nur Long Positionen)
Short (nur Short Positionen)
Kontext Menü Winning/Losing:
All (alle)
Winning (nur Trades mit Gewinn)
Losing (nur Trades mit Verlust)
Wie der Name bereits impliziert ist der Summary Reiter eine Zussammenfassung aller Trading Ergebnisse.
Indikator Erklärungen: Die Indikatoren Ergebnisse sind in drei Spalten aufgeteilt: Alle Long und Short Trades gemeinsam sowie Long Trades alleinstehend und Short Trades alleinstehend.
Parameter
Bedeutung
Total Net Profit
Gesamter Gewinn netto (Gross Profit minus Gross Loss)
Gross Profit
Gewinn generiert von allen Trades innerhalb der angegeben Zeitspanne
Gross Loss
Verlust generiert von allen Trades innerhalb der angegeben Zeitspanne.
Profit Factor
Gross Gewinn dividiert durch Gross Verlust (Bsp. 1 = Gewinn und Verlust sind gleich hoch)
Cumulative Profit
Kumulierter Gewinn
Maximum Drawdown
Maximaler Verlust in einer einzigen Trading Serie
Commission
Kommission generiert für den Broker
Total Number of Trades
Eine monetäre Zahl aller Trades
Winning Trades
Eine monetäre Zahl aller Trades mit Gewinn
Losing Trades
Eine monetäre Zahl aller Trades mit Verlust
Average Trade
Durchschnittlicher Gewinn oder Verlust pro Trade
Average Winning Trade
Durchschnittlicher Gewinn der profitable Trades
Average Losing Trade
Durchschnittlicher Verlust der nicht profitablen Trades
Ration (Win/loss)
Verhältnis zwischen Gewinn/Verlust
Maximum Consequence Winners
Höchstzahl an Trades einer Gewinnserie
Maximum Consequence Losers
Hochstzahl an Trades einer Verlustserie
Largest Winning Trade
Höchster Gewinn eines Trades
Largest Losing Trade
Höchster Verlust eines Trades
Number of Trades per Day
Gesamtzahlt an Trades pro Tag
Average Time in Market (Min)
Durchschnittliche Zeit (in Minuten) der Trades im Markt
Average Bars in Trade
Durchschnittliche Anzahl der Bars (Bsp. Kerzen) der Trades im Markt
Profit per Month
Gewinn aller Trades der in einem Monat generiert wurde
Average MAE(maximum adverse excursion)
Durchnittswert der maximalen negativ Kursbewegung die diese Strategie durchläuft gegen des initialen Einstiegs. Diese Kalkulation überprüft die Effektivität der gewählten Strategie und Ihre Chance Preisbewegungen vorherzusagen. Eine niedrige Zahl verweist auf eine effektive Strategie.
Average MFE (maximum favorable excursion)
Durchnittswert der maximalen positiv Kursbewegung die diese Strategie durchläuft zugunsten des initialen Einstiegs. Diese Kalkulation überprüft die Effektivität der gewählten Strategie und Ihre Chance Preisbewegungen vorherzusagen. Eine hohe Zahl verweist auf eine effektive Strategie.
Average ETD
Durchschnittswert über die Effektivität der Exit Condition, wie gut diese in der Lage ist, die gewünschten Preisbewegungen einzufangen. Dieser Wert zeigt die Differenz zwischen dem best möglichen Preis (MFE) und dem eigentlichen Ausstiegspreis. Eine niedrige Zahl verweist auf eine effektive Exit Condition.
Der Trades reiter enthält alle Trades aus der Backtest Zusammenfassung. Mit einem Rechtklick auf die Spaltennamen öffnet sich das Kontextmenü. Die Choose columns Option ermöglicht ein hinzufügen oder entfernen von Spalten. Mit einem Rechtsklick in die Liste öffnet sich ein anderes Kontextmenü mit der Option die Liste als MS Excel zu exportieren.
Tipp: Der G&V zeigt den Gewinn und Verlust des aktuellen Trades an. Der Kumulierte G&V zeigt immer den aktuellen Gesamt-G&V an. Im Bild kann man sehr schön erkennen, wie von oben nach unten - ausgehend vom ersten G&Vder jeweils nächste G&V abgezogen bzw. hinzugerechnet wird. Das Ergebnis steht dann in der "Kom. G&V"-Spalte, diesem Ergebnis wird dann wiederum der nächste G&V hinzugerechnet oder abgezogen. So geht das im "Zickzack" immer weiter bis zum letzten Trade. Dabei ist zu berücksichtigen, dass es im Cent-Bereich zu minimalsten Abweichungen kommen kann, da der G&V auf zwei Stellen hinter dem Komma gerundet wird, der Preis jedoch manchmal auf drei Stellen und mehr.
Der Orders Reiter enthält alle Orders aus der Backtest Zusammenfassung. Mit einem Rechtklick auf die Spaltennamen öffnet sich das Kontextmenü. Die Choose columns Option ermöglicht ein hinzufügen oder entfernen von Spalten. Mit einem Rechtsklick in die Liste öffnet sich ein anderes Kontextmenü mit der Option die Liste als MS Excel zu exportieren.
Der Backtest simuliert ein Echt-Zeit Verhalten in zwei verschieden Modi.: Modus Nr. 1 - Tick basierend (hat dasselbe Verhalten wie das Simulationskonto). Wenn der aktuelle Tick eine offene order berührt, dann wird dieser Tick Preis als "fill" Preis verwendet. Modus Nr. 2 - Kerzen basierend (simuliert den Tick basierenden Modus).
Jede Kerze wird in vier Teile aufgeteilt:
wachsende Kerze: Open; High; Low; Close.
fallende Kerze: Open; Low; High; Close.
Wenn z.B. der High Preis eine offene Order berührt, dann wird dieser Preis als "fill" Preis verwendet. Dasselbe ist gültig, wenn eine offene Order den Open, Low oder Close Preis berührt.
Unterschiede zwischen Market, Stop und StopLimit Order: Eine Market und Stop Order wird mit derselben Kerze ausgeführt. Eine StopLimit Order wird mit der nächsten Kerze ausgeführt. Beispiel. Wenn z.B. Zeiteinheit = 1 Tag, dann wird eine StopLimit Order erst am darauf folgenden Tag ausgeführt, während eine Market und Stop Order am selben Tag ausgeführt wird.
Der Executions Reiter enthält alle Order Ausführungen aus der Backtest Zusammenfassung. Mit einem Rechtklick auf die Spaltennamen öffnet sich das Kontextmenü. Die Choose columns Option ermöglicht ein hinzufügen oder entfernen von Spalten. Mit einem Rechtsklick in die Liste öffnet sich ein anderes Kontextmenü mit der Option die Liste als MS Excel zu exportieren.
Der Periods Reiter enthält Backtest Ergebnisse in einer Zusammenfassung basierend auf verschiedenen Kalender Einstellungen. Mit einem Rechtklick auf die Spaltennamen öffnet sich das Kontextmenü. Die Choose columns Option ermöglicht ein hinzufügen oder entfernen von Spalten. Mit einem Rechtsklick in die Liste öffnet sich ein anderes Kontextmenü mit den Optionen die Liste als MS Excel zu exportieren sowie verschiede Ergebnisausgaben.
Ausgabemöglichkeiten (types):
Annual (Jahr)
Monthly (Monat)
Weekly (Woche)
Day of Week (Wochentage)
Daily (Tag)
Hour of Day (Tageszeit)
Der Trading Info Reiter enthalt alle Trade Informationen dargestellt als Baum. Es sind Trading relevante Informationen wie Partial Trade (Teiltrade), Order und Execution (Ausführung) angeführt. Mit einem Rechtklick auf die Spaltennamen öffnet sich das Kontextmenü. Die Choose columns Option ermöglicht ein hinzufügen oder entfernen von Spalten.
Damit der Backtest Signale für den Einstieg generieren kann, muss definiert werden wieviel Historie dieses Signal benötigt. Dazu muss die Einstellung "Bars benötigt" angepasst werden. In der Regel ist die Standard Einstellung mit 20 Bars völlig ausreichend. Sollte das Signal, welches über den Signal Builder erstellt oder selbst programmiert wurde, jedoch mehr Historie benötigen, dann muss diese Einstellung darauf angepasst werden. Dabei ist zu beachten, dass die angegeben Historie zur Berechnung benötigt wird und einer Einstellung von 20 Bars wird erst ab dem 21. Bar ein Signal angezeigt werden.
Hinweis für Markttechnik Signale: Signale die mit Markttechnik Indikatoren wie dem P123 erstellt wurden, benötigen eine sehr lange Historie um Signale richtig anzuzeigen. Hier sollten mindestens 500 oder mehr Bars einstellt werden. Zu beachten ist, dass genügend Historie vom Datenfeed oder einer Datei geliefert werden. Die ersten z.B. 500 Bars zeigen keine Signale an, sondern erst die darauf folgenden Bars.
In Zusammenarbeit mit der Universität Aachen (Institut für Mathematik), wurde die Funktion Backtest des AgenaTrader weiterentwickelt und der Advanced Modus geschaffen. Das Foschungspaper von Dr. Stanislaus Maier-Paape und Dr. Andreas Platen weist darauf hin, dass eine Strategie im Backtest lediglich Ergebnisse für historische Daten liefert und keine Grundlage sein darf für den Live Handel, da die zukünftigen Ergebnisse sehr stark davon abweichen können. Die Funktion Backtest, die von allen führenden Softwareherstellern angeboten wird, spielt dennoch eine wesentliche Rolle für die Qualität der Software. Ein gut funktionierender Backtest Algorithmus ist förderlich um ein gut funktionierenden Handelssystem zu entwickeln. Je genauer die Ergebnisse im Backtest kalkuliert werden, desto zuverlässiger ist das Handelssystem im Live-Trading.
Die Forschung zeigt im Weiteren auf, dass trotz sehr fortschrittlich entwickelter Algorithmen und Tests am Markt, die Berechnungen in einigen Fällen nicht korrekt ausgegeben werden. In einem dieser Fälle spricht man von Situationen die nicht eindeutig feststellbar sind, kurz SNU (situation which is not unique). Um es zu ermöglichen auch auf SNUs zu reagieren, wurde die Funktion „Decision Mode“ entwickelt, welche dem Anwender der Software eine Entscheidungsmöglichkeit gibt. Folgende drei Einstellungen können getroffen werden:
Worst case: Der SNU wird anhand des schlecht möglichsten Ergebnisses evaluiert.
Best case: Der SNU wird anhand des best möglichen Ergebnisses evaluiert.
Ignore: Das Einstiegssignal oder der ganze Trade wird ignoriert.
SNUs treten nur in Verbindung mit Stop, Limit und StopLimit Orders auf. Market Orders können immer eindeutig festgestellt werden.
Eine Strategie wählen (Bsp. selbstprogrammiert oder AT++).Eine AT++ Strategie muss mit dem erstellt werden, und im Einstellungen-(Settings-)Reiter ausgewählt werden.
Standard oder Advanced. Weitere Funktionen für Advanced: Orders settings Calcualte Entry Market Orders onclose: Optionen „true“ (wahr) oder „false“ (falsch). Calcualte Exit Market Orders onclose: Optionen „true“ (wahr) oder „false“ (falsch). Die Standard Einstellung basiert auf dem Backtest Standard Modus. Dort werden Market Orders immer mit dem nächsten Open der Kerze berechnet. Die Funktion kann bei Advanced verändert werden, infolgedessen auch das Close der Kerze verwendet wird. Decision Mode: - BestCase: Nicht eindeutige Orders werden mit dem Best möglichen Ergebnis kalkuliert. - WorstCase: Nicht eindeutige Orders werden mit dem schlechtesten Ergebnis kalkuliert, dass eintreffen kann. - Ignore: Nicht eindeutige Orders werden ignoriert.