Saturday 15 July 2017

C ++ Back Test Trading Strategien


Erfolgreiches Backtesting von algorithmischen Handelsstrategien - Teil I Dieser Artikel setzt die Serie auf den quantitativen Handel fort, der mit dem Anfängerleitfaden und der Strategieidentifikation begann. Beide sind länger, mehr involvierte Artikel sind sehr populär gewesen, so dass Ill in dieser Vene fortfahren und Details zum Thema Strategisches Backtesting geben. Algorithmische Backtesting erfordert Wissen über viele Bereiche, einschließlich Psychologie, Mathematik, Statistik, Software-Entwicklung und Marketexchange Mikrostruktur. Ich kann nicht hoffen, all diese Themen in einem Artikel zu decken, also werde ich sie in zwei oder drei kleinere Stücke aufteilen. Was werden wir in diesem Abschnitt diskutieren Ill beginnen mit der Definition Backtesting und dann werde ich beschreiben die Grundlagen, wie es durchgeführt wird. Dann werde ich auf die Vorurteile aufmerksam machen, die wir im Anfängerleitfaden zum quantitativen Handel berührt haben. Als nächstes werde ich einen Vergleich der verschiedenen verfügbaren Backtesting-Software-Optionen vorstellen. In nachfolgenden Artikeln werden wir uns die Details der Strategieimplementierungen anschauen, die oft kaum erwähnt oder ignoriert werden. Wir werden auch darüber nachdenken, wie man den Backtesting-Prozess realistischer macht, indem er die Eigenheiten eines Handelsaustausches einbezieht. Dann werden wir die Transaktionskosten besprechen und wie man sie korrekt in einer Backtest-Einstellung modellieren kann. Wir werden mit einer Diskussion über die Leistung unserer Backtests enden und schließlich ein Beispiel für eine gemeinsame Quant-Strategie, bekannt als ein Mittel-revertierenden Paar Handel. Lasst uns anfangen, zu diskutieren, was Backtesting ist und warum wir es in unserem algorithmischen Handel durchführen sollten. Was ist Backtesting Algorithmic Trading steht abgesehen von anderen Arten von Investment Klassen, weil wir zuverlässiger liefern können Erwartungen über die zukünftige Leistung aus der Vergangenheit Leistung, als Folge der reichlich Datenverfügbarkeit. Der Prozess, durch den dies durchgeführt wird, wird als Backtesting bezeichnet. In einfachen Worten wird das Backtesting durchgeführt, indem Sie Ihren speziellen Strategiealgorithmus einem Strom von historischen Finanzdaten aussetzen, der zu einem Satz von Handelssignalen führt. Jeder Handel (was wir hier als Rundreise von zwei Signalen bedeuten werden) wird einen Gewinn oder Verlust haben. Die Anhäufung dieses Ergebnisses über die Dauer Ihres Strategie-Backtests führt zum Gesamtergebnis (auch bekannt als PL oder PnL). Das ist das Wesen der Idee, obwohl natürlich der Teufel immer in den Details ist Was sind die Hauptgründe für das Backtesting einer algorithmischen Strategie Filtration - Wenn Sie sich aus dem Artikel über Strategy Identification erinnern. Unser Ziel in der ersten Forschungsphase war es, eine Strategie-Pipeline einzurichten und dann jede Strategie herauszufiltern, die bestimmte Kriterien nicht erfüllt hat. Backtesting bietet uns einen weiteren Filtrationsmechanismus, da wir Strategien eliminieren können, die unseren Leistungsanforderungen nicht entsprechen. Modellierung - Backtesting ermöglicht es uns, neue Modelle bestimmter Marktphänomene (zB Transaktionskosten, Order Routing, Latenz, Liquidität oder andere Marktstrukturen) sicher zu testen. Optimierung - Obwohl die Strategieoptimierung mit Vorurteilen behaftet ist, ermöglicht das Backtesting, die Performance einer Strategie zu erhöhen, indem wir die Menge oder die Werte der mit dieser Strategie verbundenen Parameter ändern und deren Performance neu berechnen. Verifizierung - Unsere Strategien werden oft extern über unsere Strategiepipeline bezogen. Das Backtesting einer Strategie stellt sicher, dass es nicht falsch umgesetzt wurde. Obwohl wir nur selten Zugang zu den Signalen haben, die durch externe Strategien erzeugt werden, haben wir oft Zugriff auf die Performance-Metriken wie die Sharpe Ratio - und Drawdown-Merkmale. So können wir sie mit unserer eigenen Umsetzung vergleichen. Backtesting bietet eine Vielzahl von Vorteilen für den algorithmischen Handel. Es ist jedoch nicht immer möglich, eine Strategie direkt zu testen. Im Allgemeinen, da die Häufigkeit der Strategie zunimmt, wird es schwieriger, die Mikrostruktureffekte des Marktes und des Austauschs korrekt zu modellieren. Dies führt zu weniger zuverlässigen Backtests und damit zu einer schwierigeren Auswertung einer gewählten Strategie. Dies ist ein besonderes Problem, bei dem das Ausführungssystem der Schlüssel zur Strategie-Performance ist, wie bei Ultra-Hochfrequenz-Algorithmen. Leider ist das Backtesting mit Vorurteilen aller Typen behaftet. Wir haben einige dieser Themen in früheren Artikeln berührt, aber wir werden sie jetzt ausführlich besprechen. Biases, die Strategy Backtests beeinflussen Es gibt viele Vorurteile, die die Performance einer Backtested-Strategie beeinflussen können. Leider haben diese Vorurteile die Tendenz, die Leistung aufzublasen, anstatt sie zu beeinträchtigen. So solltest du immer einen Backtest als eine idealisierte Obergrenze für die tatsächliche Performance der Strategie betrachten. Es ist fast unmöglich, Vorurteile aus dem algorithmischen Handel zu beseitigen, so dass es unsere Aufgabe ist, sie so gut wie möglich zu minimieren, um fundierte Entscheidungen über unsere algorithmischen Strategien zu treffen. Es gibt vier große Vorurteile, die ich besprechen möchte: Optimierung Bias. Look-Ahead Bias. Überlebenschaden und psychologische Toleranz Bias. Optimierung Bias Dies ist wahrscheinlich die heimtückischste aller Backtest-Bias. Es geht darum, zusätzliche Handelsparameter anzupassen oder einzuführen, bis die Strategieleistung auf dem Backtest-Datensatz sehr attraktiv ist. Doch einmal leben die Leistung der Strategie kann deutlich anders sein. Ein weiterer Name für diese Vorspannung ist Kurvenanpassung oder Daten-Snooping Bias. Optimierung Bias ist schwer zu beseitigen, da algorithmische Strategien oft viele Parameter beinhalten. Parameter in diesem Fall können die eingangseigenen Kriterien, Rückblickperioden, Mittelungsperioden (d. h. der gleitende durchschnittliche Glättungsparameter) oder die Volatilitätsmessfrequenz sein. Die Optimierungsvorspannung kann minimiert werden, indem die Anzahl der Parameter auf ein Minimum reduziert und die Anzahl der Datenpunkte im Trainingssatz erhöht wird. In der Tat muss man auch darauf achten, dass ältere Ausbildungspunkte einer vorherigen Regelung (wie zB einem regulatorischen Umfeld) unterliegen können und daher für Ihre aktuelle Strategie nicht relevant sein können. Eine Methode, um diese Vorliebe zu mildern, besteht darin, eine Sensitivitätsanalyse durchzuführen. Dies bedeutet, dass die Parameter inkrementell variieren und eine Oberfläche der Leistung plotten. Klang, fundamentale Argumentation für Parameterwahlen sollte mit allen anderen betrachteten Faktoren zu einer glatteren Parameteroberfläche führen. Wenn Sie eine sehr jumpy Performance-Oberfläche haben, bedeutet dies oft, dass ein Parameter nicht ein Phänomen reflektiert und ist ein Artefakt der Testdaten. Es gibt eine umfangreiche Literatur über multidimensionale Optimierungsalgorithmen und ist ein sehr aktives Forschungsgebiet. Ich werde es nicht hier verbringen, aber behalte es in den Hinterkopf, wenn du eine Strategie mit einem fantastischen Backtest findest. Blick auf die Bias Look-ahead Bias wird in ein Backtesting System eingeführt, wenn zukünftige Daten versehentlich in einem Punkt in der Simulation, wo diese Daten eigentlich nicht verfügbar waren. Wenn wir den Backtest chronologisch laufen und den Zeitpunkt N erreichen, dann tritt die Vorspannung vor, wenn Daten für jeden Punkt Nk enthalten sind, wobei k0. Look-Ahead Bias Fehler können unglaublich subtil sein. Hier sind drei Beispiele dafür, wie Look-Ahead Bias eingeführt werden kann: Technische Bugs - Arraysvektoren im Code haben oft Iteratoren oder Indexvariablen. Falsche Offsets dieser Indizes können zu einer Vorausschau-Bias führen, indem sie Daten bei Nk für Nicht-Null-k enthalten. Parameterberechnung - Bei der Berechnung von optimalen Strategieparametern, wie bei linearen Regressionen zwischen zwei Zeitreihen, tritt ein weiteres gemeinsames Beispiel für die Vorausschau auf. Wenn der gesamte Datensatz (einschließlich zukünftiger Daten) verwendet wird, um die Regressionskoeffizienten zu berechnen und damit rückwirkend auf eine Handelsstrategie für Optimierungszwecke anzuwenden, werden zukünftige Daten integriert und es gibt eine Vorausschau. MaximaMinima - Bestimmte Handelsstrategien nutzen in jedem Zeitraum extreme Werte, wie zB die Einbeziehung der hohen oder niedrigen Preise in OHLC-Daten. Da jedoch diese maximalen Minimalwerte nur am Ende eines Zeitraums berechnet werden können, wird eine Vorausschau vorgestellt, wenn diese Werte verwendet werden - in der aktuellen Periode. Es ist immer notwendig, die hohen Werte um mindestens einen Zeitraum in einer Handelsstrategie, die sie nutzen, zu hinterlegen. Wie bei der Optimierung Bias, muss man sehr vorsichtig sein, um seine Einführung zu vermeiden. Es ist oft der Hauptgrund, warum Handelsstrategien ihre Backtests deutlich im Live-Handel unterlegen. Survivorship Bias Survivorship Bias ist ein besonders gefährliches Phänomen und kann zu erheblich aufgeblasenen Performance für bestimmte Strategie-Typen führen. Es tritt auf, wenn Strategien auf Datensätzen getestet werden, die nicht das vollständige Universum von früheren Vermögenswerten enthalten, die zu einem bestimmten Zeitpunkt ausgewählt worden sein können, aber nur diejenigen berücksichtigen, die zur gegenwärtigen Zeit überlebt haben. Als Beispiel betrachten wir die Prüfung einer Strategie für eine zufällige Auswahl von Aktien vor und nach dem Markt-Crash 2001. Einige Technologie-Aktien gingen in Konkurs, während andere es geschafft, über Wasser zu bleiben und sogar gedeihen. Wenn wir diese Strategie nur auf Aktien beschränkt hätten, die es durch den Marktabbau gemacht haben, würden wir eine Überlebenschance vorstellen, weil sie uns bereits ihren Erfolg gezeigt haben. In der Tat ist dies nur ein weiterer konkreter Fall von Look-Ahead-Bias, da zukünftige Informationen in die Vergangenheit integriert werden. Es gibt zwei Möglichkeiten, die Überlebensstörung in Ihre Strategie-Backtests zu lindern: Survivorship Bias Free Datasets - Im Fall von Equity-Daten ist es möglich, Datensätze zu kaufen, die bereits ausgewählte Unternehmen enthalten, obwohl sie nicht billig sind und nur von institutionellen Firmen genutzt werden . Insbesondere Yahoo-Finanzdaten sind NICHT Überlebens-Bias frei, und dies wird häufig von vielen Einzelhandels-Algo-Händlern verwendet. Man kann auch auf Assetklassen handeln, die nicht anfällig für Überlebensvorurteile sind, wie z. B. bestimmte Rohstoffe (und ihre zukünftigen Derivate). Verwenden Sie die meisten jüngsten Daten - Im Falle von Aktien, unter Verwendung eines neueren Datensatzes verringert die Möglichkeit, dass die ausgewählte Aktienauswahl für Überlebende gewichtet wird, so wie es weniger Wahrscheinlichkeit für die gesamte Bestandsverdichtung in kürzeren Zeiträumen gibt. Man kann auch mit dem Aufbau eines persönlichen Überlebens-Bias-freien Datensatzes beginnen, indem er Daten vom aktuellen Punkt an sammelt. Nach 3-4 Jahren haben Sie eine solide Überlebens-Bias freie Menge von Aktien Daten, mit denen weitere Strategien zu backtest. Wir werden nun einige psychologische Phänomene betrachten, die Ihre Handelsleistung beeinflussen können. Psychologische Toleranz Bias Diese besonderen Phänomene werden im Kontext des quantitativen Handels nicht oft diskutiert. Es wird jedoch ausführlich in Bezug auf mehr diskretionäre Handelsmethoden diskutiert. Es hat verschiedene Namen, aber Ive beschlossen, nennen sie psychologische Toleranz Bias, weil es das Wesen des Problems fängt. Bei der Erstellung von Backtests über einen Zeitraum von 5 Jahren oder mehr ist es leicht, eine aufwärts gerichtete Aktienkurve zu betrachten, die zusammengesetzte jährliche Rendite, die Sharpe-Ratio und sogar die Drawdown-Merkmale zu berechnen und mit den Ergebnissen zufrieden zu sein. Als Beispiel könnte die Strategie einen maximalen relativen Drawdown von 25 und eine maximale Drawdown-Dauer von 4 Monaten besitzen. Das wäre für eine Impulsstrategie nicht untypisch. Es ist einfach, sich davon zu überzeugen, dass es leicht ist, solche Perioden von Verlusten zu tolerieren, weil das Gesamtbild rosig ist. Doch in der Praxis ist es viel schwieriger Wenn historische Drawdowns von 25 oder mehr in den Backtests auftreten, dann sind alle Wahrscheinlichkeiten Sie Perioden des ähnlichen Drawdowns im Live-Handel sehen. Diese Perioden des Drawdowns sind psychologisch schwer zu ertragen. Ich habe aus erster Hand beobachtet, was ein verlängerter Drawdown sein kann, in einer institutionellen Einstellung, und es ist nicht angenehm - auch wenn die Backtests darauf hindeuten, dass Perioden auftreten werden. Der Grund, warum ich es als eine Vorliebe bezeichnet habe, ist, dass oft eine Strategie, die sonst erfolgreich wäre, vom Handel in Zeiten des erweiterten Drawdowns gestoppt wird und somit zu einer signifikanten Underperformance im Vergleich zu einem Backtest führen wird. So, obwohl die Strategie algorithmisch ist, können psychologische Faktoren noch einen starken Einfluss auf die Rentabilität haben. Der Takeaway ist, um sicherzustellen, dass, wenn Sie sehen, Drawdowns von einem bestimmten Prozentsatz und Dauer in den Backtests, dann sollten Sie erwarten, dass sie in Live-Trading-Umgebungen auftreten, und müssen zu beharren, um die Rentabilität noch einmal zu erreichen. Softwarepakete für das Backtesting Die Softwarelandschaft für das Strategie-Backtesting ist umfangreich. Die Lösungen reichen von einer vollständig integrierten, anspruchsvollen Software bis hin zu Programmiersprachen wie C, Python und R, wo fast alles von Grund auf neu geschrieben werden muss (oder geeignete Plugins erhalten). Als Quant-Trader interessieren wir uns für die Balance, unseren Handelstechnischen Stack gegenüber der Geschwindigkeit und Zuverlässigkeit unserer Entwicklungsmethodik zu besitzen. Hier sind die wichtigsten Überlegungen für die Software-Auswahl: Programming Skill - Die Wahl der Umgebung wird in einem großen Teil auf Ihre Fähigkeit, Software zu programmieren kommen. Ich würde argumentieren, dass die Kontrolle über die gesamte Stack wird eine größere Wirkung auf Ihre langfristige PL als Outsourcing so viel wie möglich an Anbieter Software. Dies ist aufgrund des Nachteilrisikos von externen Bugs oder Idiosyncrasies, die Sie nicht in der Vendor-Software zu beheben, die sonst leicht behoben werden würde, wenn Sie mehr Kontrolle über Ihren Tech-Stack hatte. Sie wollen auch eine Umgebung, die die richtige Balance zwischen Produktivität, Bibliotheksverfügbarkeit und Geschwindigkeit der Ausführung schlägt. Ich mache meine persönliche Empfehlung unten. Execution CapabilityBroker Interaction - Bestimmte Backtesting-Software, wie Tradestation, verbindet sich direkt mit einem Brokerage. Ich bin nicht ein Fan von diesem Ansatz als Reduzierung Transaktionskosten sind oft ein großer Bestandteil der immer eine höhere Sharpe Ratio. Wenn du in einen bestimmten Makler gebunden bist (und Tradestation zwingt dich dazu), dann wirst du eine härtere Zeit haben, auf neue Software (oder einen neuen Makler) zu wechseln, wenn die Notwendigkeit entsteht. Interaktive Broker bieten eine API, die robust ist, wenn auch mit einer leicht stumpfen Schnittstelle. Anpassung - Eine Umgebung wie MATLAB oder Python gibt Ihnen viel Flexibilität bei der Erstellung von Algo-Strategien, da sie fantastische Bibliotheken für fast jede mathematische Operation vorstellen können, aber auch eine umfangreiche Anpassung, wenn nötig. Strategie-Komplexität - Bestimmte Software ist einfach nicht für schwere Knacken oder mathematische Komplexität ausgeschnitten. Excel ist eine solche Software. Während es für einfachere Strategien gut ist, kann es nicht wirklich mit zahlreichen Vermögenswerten oder komplizierteren Algorithmen umgehen. Bias Minimierung - Ist ein bestimmtes Stück Software oder Daten eignet sich mehr zu Handels-Bias Sie müssen sicherstellen, dass, wenn Sie alle Funktionalität selbst erstellen wollen, dass Sie nicht vorstellen Bugs, die zu Vorspannungen führen können. Geschwindigkeit der Entwicklung - man sollte nicht Monate und Monate damit verbringen, einen Backtest-Motor zu implementieren. Prototyping sollte nur ein paar Wochen dauern. Stellen Sie sicher, dass Ihre Software nicht behindert Ihre Fortschritte in einem großen Ausmaß, nur um ein paar zusätzliche Prozentpunkte der Ausführung Geschwindigkeit zu greifen. C ist der Elefant im Raum hier Geschwindigkeit der Ausführung - Wenn deine Strategie ganz von der Ausführungsfristen abhängig ist (wie bei HFTUHFT), dann ist eine Sprache wie C oder C notwendig. Allerdings werden Sie auf Linux-Kernel-Optimierung und FPGA-Nutzung für diese Domains, die außerhalb des Geltungsbereichs dieses Artikels ist Kosten - Viele der Software-Umgebungen, die Sie programmieren können algorithmische Trading-Strategien mit sind völlig frei und Open Source. In der Tat, viele Hedge-Fonds nutzen Open-Source-Software für ihre gesamte Algo Trading Stacks. Darüber hinaus sind Excel und MATLAB beide relativ günstig und es gibt sogar freie Alternativen zu jedem. Nun, da wir die Kriterien aufgelistet haben, mit denen wir unsere Software-Infrastruktur auswählen müssen, möchte ich einige der populärsten Pakete durchlaufen und wie sie sich vergleichen: Hinweis: Ich werde nur Software beinhalten, die den meisten Einzelhandels-Praktikern zur Verfügung steht Software-Entwickler, da dies die Leserschaft der Website ist. Während andere Software verfügbar ist, wie die mehr institutionellen Grade-Tools, fühle ich, dass diese zu teuer sind, um effektiv in einem Einzelhandel verwendet werden und ich persönlich habe keine Erfahrung mit ihnen. Backtesting Software Vergleich Beschreibung: High-Level-Sprache für Geschwindigkeit der Entwicklung entwickelt. Weites Array von Bibliotheken für fast jede programmatische Aufgabe vorstellbar. Gewinnung einer breiteren Akzeptanz in Hedgefonds und Investment Bank Community. Nicht ganz so schnell wie CC für die Ausführungsgeschwindigkeit. Ausführung: Python Plugins existieren für größere Broker wie Interactive Brokers. Daher können Backtest und Execution System alle Teil des gleichen Tech-Stacks sein. Anpassung: Python hat eine sehr gesunde Entwicklungsgemeinschaft und ist eine reife Sprache. NumPySciPy bietet schnelle wissenschaftliche Rechen - und statistische Analysewerkzeuge, die für den Quellhandel relevant sind. Strategie Komplexität: Viele Plugins existieren für die Hauptalgorithmen, aber nicht ganz so groß eine Quant Community wie für MATLAB existiert. Bias Minimierung: Gleiche Bias-Minimierungsprobleme bestehen wie für jede hochrangige Sprache. Muss sehr vorsichtig sein, um zu testen. Entwicklungsgeschwindigkeit: Pythons Hauptvorteil ist Entwicklungsgeschwindigkeit, mit robusten eingebauten Testfähigkeiten. Ausführungsgeschwindigkeit: Nicht ganz so schnell wie C, aber wissenschaftliche Rechenkomponenten sind optimiert und Python kann mit nativen C-Code mit bestimmten Plugins sprechen. Kosten: FreeOpen Quelle Beschreibung: Reife, hochrangige Sprache für die Geschwindigkeit der Ausführung. Breites Spektrum an quantitativen Finanz - und Zahlenbibliotheken. Härter zu debuggen und dauert oft länger als Python oder MATLAB. Extrem weit verbreitet in der Kauf - und Verkaufsseite. Ausführung: Die meisten Brokerage-APIs sind in C und Java geschrieben. So gibt es viele Plugins. Anpassung: CC ermöglicht den direkten Zugriff auf den zugrunde liegenden Speicher, daher können Ultrahochfrequenzstrategien implementiert werden. Strategie Komplexität: C STL bietet eine breite Palette von optimierten Algorithmen. Fast jeder spezialisierte mathematische Algorithmus besitzt eine freie, Open-Source-CC-Implementierung im Web. Bias Minimierung: Look-ahead Bias kann schwierig zu beseitigen, aber nicht härter als andere High-Level-Sprache. Gute Debugging-Tools, aber man muss vorsichtig sein, wenn man sich mit dem zugrunde liegenden Gedächtnis beschäftigt. Entwicklungsgeschwindigkeit: C ist ziemlich ausführlich im Vergleich zu Python oder MATLAB für den gleichen Algorithmus. Mehr Zeilen-Code (LOC) führt oft zu einer größeren Wahrscheinlichkeit von Fehlern. Ausführungsgeschwindigkeit: CC hat extrem schnelle Ausführungsgeschwindigkeit und kann für spezifische Berechnungsarchitekturen gut optimiert werden. Dies ist der Hauptgrund, es zu nutzen. Kosten: Verschiedene Compiler: LinuxGCC ist kostenlos, MS Visual Studio hat unterschiedliche Lizenzen. Verschiedene Strategien erfordern unterschiedliche Softwarepakete. HFT - und UHFT-Strategien werden in CC geschrieben (in diesen Tagen werden sie häufig auf GPUs und FPGAs durchgeführt), während niederfrequente Richtungs-Equity-Strategien in der TradeStation einfach zu implementieren sind, und zwar aufgrund der alles in einer Art der Software-Brokerage. Meine persönliche Vorliebe ist für Python, da es die richtige Anpassung, Geschwindigkeit der Entwicklung, Testfähigkeit und Ausführungsgeschwindigkeit für meine Bedürfnisse und Strategien bietet. Wenn ich etwas schneller brauche, kann ich direkt aus meinen Python-Programmen in C einsteigen. Eine Methode, die von vielen Quellhändlern bevorzugt wird, besteht darin, ihre Strategien in Python zu prototypieren und dann die langsameren Ausführungsabschnitte in iterative Weise in C umzuwandeln. Schließlich ist der ganze Algo in C geschrieben und kann allein gelassen werden, um zu handeln In den nächsten Artikeln zum Backtesting werden wir uns einige Besonderheiten anschauen, die die Implementierung eines algorithmischen Trading-Backtesting-Systems betreffen, sowie wie man die Effekte von Handelsbörsen. Wir diskutieren die Strategieleistungsmessung und schließen schließlich mit einer Beispielstrategie ab. Just Getting Started mit quantitativen TradingThe Back Testing Library für professionelle Trading-Strategie-Entwickler Back-Test ist der Prozess der Prüfung Trading-Strategien auf historische Marktdaten zu versuchen, zu simulieren, wie ein Trading-System könnte in der Zukunft ausführen. Back-Tests ist für die Handelsstrategie Entwicklung, was Forschung und Qualität Verbesserung sind für die Gesundheits-und Transportindustrie. Wer möchte einen ungetesteten Herzmonitor oder ein Auto ausprobieren. Gleiches gilt für Finanzhandelsstrategien. Alle Handelsstrategien müssen zurück getestet, optimiert und validiert werden, bevor sie mit echtem Geld leben. Fast jede technische Analyse Handelsstrategie kann getestet werden. Während es stimmt, dass viele mittelständische Trading-Anwendungen Skriptsprachen anbieten, die es den Händlern ermöglichen, Testhandelsstrategien zu entwickeln und zurückzuholen, fanden wir keine Back-Test-Bibliotheken für fortgeschrittene Trading-System-Entwickler, die ihre Trading-Strategien in Low-Level-Programmierung vorziehen möchten Sprachen wie C, C und Java. So haben wir eine rückseitige Testmaschine für fortgeschrittene Systementwickler entwickelt. Jetzt können Entwickler Strategien in jeder Programmiersprache erstellen, dann wieder Test und optimieren diese Strategien zur Verbesserung der Leistung. BackTestLib ermöglicht es Entwicklern, ihre Handelssysteme in C, C, VB, F, R, IronPython oder einer anderen Sprache zu testen, indem sie Tick - oder Balken-Daten verwenden. Es ist einfach egal, wie Ihr Trading-System geschrieben wird. Alles, was Sie tun müssen, ist eine Liste der Trades, und die Back-Test-Bibliothek macht den Rest für Sie. BackTestLib kann Ihre Trading-System-Performance mit zwei Dutzend Risiko-Messungen einschließlich Sharpe-Verhältnis, Calmar-Verhältnis, Sortino-Verhältnis, Maximum Draw Down, Monte Carlo Draw Down, Total PL, Risiko für Belohnung Ratio, größter Gewinn, größter Verlust, durchschnittliche Anzahl von Trades berechnen Monat, Handelsprotokolle und vieles mehr. Perfekt für Strategie-Optimierung Professionelle Händler wissen, dass alle guten Dinge zu einem Ende kommen. Sogar die besten Handelssysteme fallen schließlich in Verlierungsperioden, die Optimierung oder Handelssystem Ruhestand erfordern. Gründe variieren, einschließlich Änderungen in der Liquidität, Volatilität und zugrunde liegenden Marktdynamik, sowie andere Faktoren. Die BackTestLib gibt Ergebnisse aus, die eine Reihe von Messungen darstellen, die auf der Rentabilität und dem Risiko Ihres Handelssystems basieren, wenn sie mit den Daten getestet werden, mit denen sie geliefert wurden. Code Beispiel Erstellen Sie einige simulierte Trades Liste lt Handel gt Trades neue Liste lt Trade gt () Trades. Add (neuer Trade (DateTime. Parse (quot112014 9: 30: 45.422 AMquot), SignalType. Buy, 24)) Trades. Add (neu Handel (DateTime. Parse (quot112014 9: 32: 33.891 AMquot), SignalType. ExitLong, 24.09)) Trades. Add (neuer Handel (DateTime. Parse (quot112014 9: 37: 12.839 AMquot), SignalType. Sell, 24.07)) Trades. Add (neuer Handel (DateTime. Parse (quot112014 9: 48: 27.488 AMquot), SignalType. Exit, 24.19)) Trades. Add (neuer Handel (DateTime. Parse (quot112014 9: 49: 16.415 AMquot), SignalType. Buy, 24)) Trades. Add (neuer Handel (DateTime. Parse (quot112014 9: 50: 45.512 AMquot), SignalType. Exit, 24.09)) Trades. Add (neuer Handel (DateTime. Parse (quot112014 9: 51: 14.212 AMquot), SignalType. Buy, 24.01)) Führen Sie den Backtest double lastPrice 24.03 BacktestResults Ergebnisse Backtester. Backtest (Trades, lastPrice) Ausgabe der Ergebnisse Konsole. WriteLine (quotTotal Anzahl der Trades: quot results. TotalNumberOfTrades) Konsole. WriteLine (quotAverage Anzahl der Trades per Monat: Results. AverageTradesPerMonth) Konsole. WriteLine (quotTotal Anzahl der gewinnbringenden Trades: quot results. NumberOfProfitableTrades) Konsole. WriteLine (quotTotal Anzahl der verlierenden Trades: quot results. NumberOfLosingTrades) Konsole. WriteLine (quotTotal Gewinn: quot results. TotalProfit) Konsole. WriteLine (quotTotal Verlust: quot. Ergebnisse. TotalLoss) Konsole. WriteLine (quotPercent Profitable Trades: quot results. PercentProfit) Konsole. WriteLine (quotPercent profitable Trades: quot results. PercentProfit) Konsole. WriteLine (quotParest Gewinn: Ergebnisse. LargestProfit) Konsole. WriteLine (quotLargest Verlust: quot. Ergebnisse. LargestLoss) Konsole. WriteLine ("Maximaler Drawdown: quot. Ergebnisse. MaximumDrawDown) Konsole. WriteLine (" Maximaler Drawdown "Monte Carlo: Ergebnisse. MaximumDrawDownMonteCarlo) Konsole. WriteLine (quotStandard Abweichung : "Ergebnisse".StandardDeviation) Konsole. WriteLine (quotStandardabweichung annualisiert: quot results. StandardDeviationAnnualized) Konsole. WriteLine (quotDownside Abweichung (MAR 10): quot. ResultsDownsideDeviationMar10) Konsole. WriteLine (quotValue Added Monatsindex (VAMI): Ergebnisse. ValueAddedMonthlyIndex) Konsole. WriteLine (quotSharpe Ratio: quot. Results. SharpeRatio) Konsole. WriteLine (quotSortino Ratio: quot. Ergebnisse. SortinoRatioMAR5) Konsole. WriteLine (quotAnnualisiertes Sortino-Verhältnis: Ergebnisse ..AnnualizedSortinoRatioMAR5) Konsole. WriteLine (quotSterling-Verhältnis: quot. Ergebnisse. SterlingRatioMAR5) Konsole. WriteLine (quotCalmar ratio: quot results. CalmarRatio) Konsole. WriteLine (risiko zur Belohnung Ratio: Ergebnis. RiskRewardRatio) Anzeigen des Handelsprotokolls foreach (Trade trade in results. Trades) Konsole. WriteLine (trade. Date quot: trade. Signal. ToString () quot bei Trade. Price. ToString ()) MultiCharts 10 MultiCharts ist eine Auszeichnung - winning Handelsplattform Ob Sie Tages-Handelssoftware benötigen oder Sie für längere Zeit investieren, hat MultiCharts Funktionen, die helfen können, Ihre Handelsziele zu erreichen. High-Definition-Charting, eingebaute Indikatoren und Strategien, One-Click-Trading von Chart und DOM, hochpräzise Backtesting, Brute-Force und genetische Optimierung, automatisierte Ausführung und Unterstützung für EasyLanguage Scripts stehen Ihnen zur Verfügung. Hoice of brokers und data feeds Freiheit der Wahl war die treibende Idee hinter unseren MultiCharts und Sie können es in der großen Auswahl der unterstützten Daten-Feeds und Broker sehen. Wählen Sie Ihre Trading-Methode, testen Sie es, und starten Sie den Handel mit jedem unterstützten Broker Sie mögen, dass der Vorteil von MultiCharts. How to Backtest Ihre Trading-Strategie korrekt Viele erfolgreiche Händler teilen eine Gewohnheit 8211 sie Backtest ihre Trading-Strategien. Backtesting Ihre Trading-Strategie wird nicht allein garantieren, dass Sie profitabel werden, aber es ist ein riesiger Schritt in die richtige Richtung. In diesem Artikel untersuchen wir einige potenzielle Vorurteile, die in Ihr Backtesting kriechen können, und wir werden uns anschauen, wie wir die Auswirkungen dieser Vorurteile minimieren können. Es gibt viele Probleme, die auftreten können, wenn Sie Ihr Trading-System backtest, aber die meisten Probleme fallen in eine von drei Kategorien: postdictive Fehler, zu viele Variablen oder nicht zu antizipieren drastische Veränderungen im Markt. Jeder dieser Fehler wird erklärt, zusammen mit Methoden zur Vermeidung von Fehlern. Klicken Sie hier, um zu erfahren, wie Sie Bollinger Bands mit einem quantifizierten, strukturierten Ansatz nutzen können, um Ihre Handelskanten zu erhöhen und größere Gewinne mit Trading mit Bollinger Bands 8211 A Quantified Guide zu sichern. 1. Postdictive Error Der postdictive Fehler ist nur eine ausgefallene Art zu sagen, dass Sie Informationen nur verfügbar 8220 nach der fact8221 verwendet haben, um Ihr System zu testen. Glaub es oder nicht, das ist ein sehr häufiger Fehler beim Testen von Handelssystemen. Dieser Fehler ist einfach zu machen. Einige Software ermöglicht es Ihnen, today8217s Daten in der Prüfung eines Handelssystems zu verwenden, das ist immer ein postdictive Fehler (wir wissen nicht, ob heute8217s Daten nützlich ist, aber für die Vorhersage der Zukunft, aber wir wissen sicher, ob es nützlich ist, die Vergangenheit vorherzusagen ). Wäre es nicht so, dass du den Schlusskurs des GBPUSD nutzen kannst, um vorherzusagen, was der Markt heute machen wird. Natürlich würdetest du es definitiv, aber leider ist diese Information für uns nicht verfügbar, bis der Tag vorbei ist. Zum Beispiel können Sie ein System haben, das den Schlusskurs einbezieht, dann bedeutet dies offensichtlich, dass der Handel erst nach dem Tag eingeleitet werden kann. Sonst ist dies ein postdictiver fehler Ein anderes Beispiel kann helfen, illustrieren die postdictive Fehler, wenn Sie eine Regel in Ihrem Trading-System über die höchsten Preise haben, dann haben Sie einen postdictive Fehler. Dies ist, weil die höchsten Preise oft durch Daten, die später kommt, in der Zukunft definiert werden. Der Weg, um die postdictive Fehler zu vermeiden ist, um sicherzustellen, dass, wenn Sie backtest ein System, dass nur Informationen, die in der Vergangenheit zu diesem Zeitpunkt verfügbar ist, wird in Backtesting verwendet. Mit manueller Backtesting oder Backtesting mit Forex Tester können Sie dies ganz einfach zu erreichen, aber mit automatisierten Backtesting der postdictive Fehler kann in Ihr Trading-System schleichen. 2. Zu viele Variablen Dies ist auch bekannt als die 8220Degrees of Freedom8221 Bias. Dies bedeutet einfach, dass Sie zu viele Variablen oder Trading Indikatoren in Ihrem Trading-System haben. Es ist sehr möglich, mit einem Handelssystem zu kommen, das das vergangene Preisverhalten eines Währungspaares erklären kann. In der Tat, je mehr Indikatoren Sie hinzufügen, desto einfacher wird es oft. Das Problem kommt, wenn Sie dieses System in die Zukunft anwenden möchten. Oft, wenn ein Handelssystem zu viele Indikatoren hat, kann es das Verhalten des Marktes während eines Zeitraums sehr gut vorhersagen. Aber das ist alles System gut, denn in Zukunft fällt das System auseinander. Die obige Aussage ist oft schwierig für Händler, um in den Griff zu kommen, aber es ist wahr. Überlegen Sie, was William Eckhardt von den New Market Wizards über Trading-Systeme zu sagen hat. Im Allgemeinen sind die heiklen Tests, die die Statistiker nutzen, um die Signifikanz aus marginalen Daten zu quetschen, keinen Platz im Handel. Wir brauchen stumpfe statistische Instrumente, robuste Techniken. Offensichtlich warnt er vor dem Grad der Freiheitsfehler und deutet darauf hin, dass einfache Handelssysteme eher der Test der Zeit stehen. Das ist absolut wahr Einige der leistungsstärksten Handelssysteme sind äußerst einfach. Denken Sie daran, wie Sie handeln, und wie Sie versuchen, ein profitables Handelssystem zu finden. Die meisten Händler werden feststellen, dass mit Erfahrung, werden sie eher zu der Ansicht, dass einfachere Handel ist bevorzugt über einen komplexen Ansatz zu umarmen. 3. Drastische Veränderungen im Markt Viele Händler vergessen, unvorhergesehene Ereignisse vorwegzunehmen, die in der Zukunft auftreten werden. Es ist wirklich egal, dass du nicht weißt, was in der Zukunft passieren wird 8211, weil du das weißt: Es wird mal in der Zukunft sein, wenn sich die Märkte unregelmäßig verhalten werden. Wenn dies geschieht, hättest du dein Trading-System entworfen, um während dieser Zeiten zu funktionieren. Vielleicht können einige Beispiele dazu beitragen: Als Saddam Hussein gefunden wurde (über das Wochenende), reagierten die Devisenmärkte sehr drastisch am Montag8217s Eröffnung. Als die globale Finanzkrise im September 2008 entstand, haben die meisten Währungspaare mit viel mehr Volatilität gehandelt als seit Jahren gesehen. Die Tatsache ist, dass es in der Zukunft unerwartete Ereignisse geben wird, und diese Ereignisse werden die Märkte beeinflussen, so dass das Beste, was Sie tun können, vorbereitet werden soll. Wie bereiten Sie sich auf das Unerwartete Betrachten Sie diese einfachen Lösungen: 1) Übertreiben Sie Ihre erwarteten Verluste. Wenn Ihr Backtesting einen maximalen Verlust von 5000 zeigt, nehmen Sie einen maximalen Verlust von 10.000 an. Sind Ihre Handelssysteme unter diesen Bedingungen noch rentabel 2) Entscheiden Sie sich für ein angemessenes Risiko für jeden Handel. Denken Sie daran, dass auch dieses Risiko nicht überschritten werden soll. Wenn Sie sich entschieden haben, 1 auf jeden Handel zu riskieren, sollten Sie davon ausgehen, dass irgendwann in der Zukunft, können Sie in einem Handel und ein unerwartetes Ereignis auftreten, und Ihr Handel wird nicht verlieren 1, sondern statt 5 wird verloren gehen. 3) Du solltest einen Notfallplan aufstellen. That is, how will you exit a trade if something bad happens and you cannot access your account For instance, what happens if your trading platform is inaccessible and you desperately want out of a trade Most brokers offer a telephone line to traders for these instances. Do you have the phone number 4) Do you have a maximum risk level set This would be applicable if you have several trades open simultaneously. If you decide to risk 1 per trade and you have 7 trades open simultaneously, does this mean that you will be risking 7 of your account Or have you decided on a maximum risk level of say, 3 Keeping in mind that the unexpected will occur, you should probably have a maximum risk level for those times when you have several open trades. 5) What is the maximum drawdown (amount of money your trading system loses over an extended period of time) you are willing to tolerate Keeping in mind that you (and you are not alone) are more likely to overestimate the severity of drawdowns that you can withstand, it is important to be realistic. If you lose 30 of your account will you stop trading What about if you lose 50 Or if you see 70 of your account disappear Again, the best way to plan for drawdowns is to do extensive backtesting to find out what sort of historical drawdowns your trading system experiences and then plan for even worse drawdowns in the future. Anticipating drastic changes in the markets is the single best way to preserve the equity in your account. So, you know that successful traders share this habit 8211 they backtest their trading strategies. You know that backtesting separates the wealthy traders from those who lose money. You also know several ways of incorporating backtesting into your trading regimen. And you know of the pitfalls 8211 what to look out for 8211 when you are backtesting, so that you can get the most out of the process. But, what exactly, will you get out of backtesting your trading system In the next article I will explore the side effects of backtesting. Walter Peters, PhD is a professional forex trader and money manager for a private forex fund. In addition, Walter is the co-founder of Fxjake. a resource for forex traders. Walter loves to hear from other traders, he can be reached by email at walterfxjake .

No comments:

Post a Comment