Backtesting Trading Strategien Matlab
Während ich mag, wo diese Frage geht, würde ich vorschlagen, es ein wenig konkreter zu machen. Welche Teile des Backtesting-Prozesses möchten Sie lernen? Das kann überall reichen, indem man nur eine normale Rendite schätzt, bei der das Portfolio aus Ihrer Strategie zurückkehrt, um bereits eine vollständige Portfolio-Formationsregel algorithmisch umzusetzen. Ndash Constantin Dec 30 14 at 21:06 Um ehrlich zu sein, ich weiß nicht viel über Backtesting. Mir wurde gesagt, dass ich während meines Praktikums neue Strategien umsetzen oder die aktuelle Person verbessern muss. So möchte ich noch ein bisschen mehr über das Thema wissen, bevor ich anfange. Was sind die verschiedenen Teile davon. Ndash Maxime Dec 30 14 at 21:31 Die allgemeine Idee Für Aktien-Wertpapiere besteht ein einfacher Backtest in der Regel aus zwei Schritten: Berechnung der Portfolio-Rendite aus Ihrer Portfolio-Formationsregel (oder Trading-Strategie) Risikoanpassung der Portfolio-Renditen mit einem Asset-Pricing-Modell Schritt 2 ist einfach eine Regression und rechnerisch sehr einfach in Matlab. Was ist schwieriger ist die Umsetzung von Schritt 1, die Sie benötigen, um sehr bequem in Matlab, und es gibt verschiedene Möglichkeiten, dies zu tun. Wenn Sie wissen, wie man eine OLS-Regression in Matlab zu tun, was Sie konzentrieren sollten, ist alle Arten von Matrixmanipulationen. Implementierung in Matlab Portfolio-Formation und Retouren-Berechnungen Um Ihnen ein Beispiel zu geben, wie eine primitive Trading-Strategie in Matlab umgesetzt werden könnte, können wir monatliche Rendite-Daten und eine einheitliche Haltedauer von einem Monat auf n Vermögenswerte über K-Perioden übernehmen, wobei i in und k im . Angenommen, keine Änderungen in der Zusammensetzung Ihres Lager-Universums, Ihre Rückkehr Matrix X ist von Dimensionen k mal n. X begin x amp dots amp x amp dots amp x vdots amp ddots amp vdots amp ddots amp vdots x amp dots amp x amp dots amp x vdots amp ddots amp vdots amp ddots amp vdots x amp dots amp x amp dots amp x end Wo gibt es zurück Werden als x frac -1 berechnet. Unter der Annahme, dass Ihr Auswahlkriterium irgendeine Art von Merkmal ist, das bei der Monatsfrequenz verfügbar ist, haben Sie auch eine Merkmalsmatrix C. Sie können dann einen Algorithmus schreiben, der diese Einträge in C identifiziert, die Ihr Auswahlkriterium erfüllen (zB einen bestimmten Schwellenwert überschreiten) ) Und ersetzen die entsprechenden Einträge (wobei i und t gleich sind) einer Indikatormatrix I (die als Nullmatrix mit der Nullenfunktion initialisiert wurde) mit Einsen. Sie können dann die Einträge von I mit denen der Retourenmatrix X multiplizieren, um eine Matrix R zu erhalten, die die aus Ihren Beständen resultierenden Renditen angibt. Sie können dann den Mittelwert der Nicht-Null-Einträge für jede Zeile von R berechnen, um Ihren Vektor der Portfolio-Renditen zu erhalten. Risikoanpassung und Identifikation von anormalen Renditen In Schritt 2 vergleichen Sie diesen Vektor mit den normalen Renditen, die aus der Regressionsschätzung eines Asset-Pricing-Modells wie dem Fama-French-Modell erhalten wurden. Durch die Subtraktion des normalen Rückkehrvektors von Ihrem Portfolio kehrt der Vektor zurück, bestimmen Sie, ob Ihre Trading-Strategie zu einer positiven abnormen Rendite geführt hat, was Sie anstreben. Empfehlungen Wenn Sie neu bei Matlab sind, schlage ich Ihnen persönlich vor, Sie damit einverstanden zu nutzen, um diese vereinfachte Strategie zu implementieren, bevor Sie einige der vereinfachenden Annahmen (wie einheitliche Haltedauer und Periodizität) und eine anspruchsvollere Implementierung vornehmen. Auch hier, was ich betonen möchte, ist, dass dies erfordert, dass Sie sich mit Matlab sehr wohl fühlen und vor allem die verschiedenen Möglichkeiten, Matrizen zu manipulieren, was einige Zeit in Anspruch nehmen kann. Wenn du nicht verpflichtet bist, Matlab für dein Praktikum zu benutzen und gern schnell Ergebnisse zu erzielen, kannst du stattdessen Schritt 1 in Excel machen, was langweilig ist, aber nicht die (lohnende) Anfangsinvestition benötige, die du für Matlab machen musst. Um mit Matlab vertraut zu werden, bin ich mir sicher, dass du schon die sehr gute Dokumentation entdeckt hast. Das ist für mich die einzige wertvollste Ressource und wahrscheinlich nützlicher als irgendwelche finanzspezifischen Ressourcen (mit denen ich warten würde, bis du mit Matlab selbst vertraut bist). Alles, was erforderlich ist, um die normale Rückkehr zu bestimmen, ist eine OLS-Regression und ein rudimentäres Verständnis von Asset-Pricing-Modellen. Beantwortet Dec 30 14 at 22: 20MatlabTrading Dieser Beitrag ist, wie wichtig es ist, verschiedene Arten von Optimierungsmethoden wie genetische Algorithmen und Parallelisierung zu verwenden, um Ergebnisse schneller zu erhalten. Genetische Algorithmen Optimierung Trotz der Tatsache, dass das genetische (evolutionäre) Algorithmusprinzip in den MathWorks-Webinaren sehr gut erklärt wird, wird es in den Beispielen jedoch nur zur Optimierung der Wahl einer Strategiegruppe aus einem Satz verwendet. Dies ist ein gutes Beispiel für die Verwendung dieser Algorithmen, aber es passiert, dass es notwendig ist, viele Variablen mit signifikanten Intervallen für eine Strategie zu setzen, man bekommt nicht mit einer Iteration und die Parallelisierung von Prozessen 8211 Berechnungen können mehrere Tage dauern . Sicherlich gibt es Strategien in der Endphase der Optimierung. Wenn wir fast sicher wissen, dass die Handelsstrategie erfolgreich ist, können wir auch auf mehrere Tage warten oder den ganzen Cluster mieten - das Ergebnis könnte es sich lohnen. Allerdings, wenn wir die Ergebnisse einer sperrigen Strategie abschätzen müssen und entscheiden, ob es sich lohnt, die Zeit zu verbringen, dann können genetische Algorithmen perfekt geeignet sein. Wir bieten die Möglichkeit, drei Methoden zur Optimierung der Strategie in WFAToolbox zu verwenden: Linear Methode 8211 Es ist eine übliche Art der Sortierung, in der Sie alle Zwischenergebnisse (suboptimal) sehen werden. Es gibt maximale Genauigkeit. Parallelmethode 8211 werden alle Kernel deiner CPU verwendet. Es ist nicht möglich, Zwischenergebnisse zu sehen, sondern beschleunigt den Betrieb erheblich. Es gibt maximale Genauigkeit während der Erhöhung der Berechnungsgeschwindigkeit. Genetische Methode 8211 verwendet sie den evolutionären Optimierungsalgorithmus. Es erlaubt, suboptimale Werte zu sehen, gibt aber das Ergebnis nahe am besten. Es ist nicht eine sehr genaue Methode, aber es ist genau genug für den anfänglichen Ablauf der Strategie. Sehr schnell. Wir werden oft gefragt, ob die WFAToolbox - Walk-Forward Analysis Toolbox für MATLAB die Möglichkeit hat, die GPU in Berechnungen zu verwenden. Leider ist GPU nicht für alle Aufgaben geeignet und seine Verwendung ist sehr spezifisch. Um es zu benutzen, müssen Sie die Logik und den Code jeder Strategie für Grafikkerne testen. Leider kann man aufgrund dieser Nicht-Universalität der Methode keine GPU in WFAToolbox verwenden. Fortsetzung Teil 2 der Diskussion über Probleme und Lösungen in der Prüfung und Analyse der algorithmischen Handelsstrategie in MATLAB, lade ich Sie zu diesem Beitrag über Problem der Nichtverfügbarkeit der Visualisierung der Prozesse in modernen Software-Lösungen für die Prüfung Handelssysteme zu lesen. Visualisierung des Testprozesses In meiner Berufserfahrung habe ich oft andere populäre Plattformen für den Handelstrategie-Test analysiert. Wie zB TradeStation. MetaStock Multicharts etc. und ich war immer überrascht, wie wenig Aufmerksamkeit auf die Visualisierung des Testprozesses gelegt wurde. Die Sache ist, dass, wenn wir nicht sehen, die Ergebnisse der Zwischen-, sub-optimale Werte der optimierten Parameter, wir oft wegwerfen Gold zusammen mit dem Schmutz. Die Sache ist wegen einer übermäßig breiten Probenahme, die Strategie passt die Parameter so an, wie wir entweder eine perfekte Strategie sehen, die im wirklichen Leben ausfällt oder ein oder zwei Deals, die angeblich das Beste sind, weil es so Zeitintervalldaten ausgewählt wurde, wo die Best-Trading-Strategie wäre Kauf-und-Hold, aber warum sind dann andere Strategien notwendig für die Visualisierung von Trading-Strategie-Test-Prozess in MATLAB (vorgeschlagen in Webinar) Als Ergebnis, ohne zu sehen Zwischenergebnisse, müssen wir 171blindly187 ändern die Parameter zu versuchen Um die besseren Daten zu bekommen oder in etwas 3D oder 4D zu sehen (Farbe ist die 4. Dimension), wie in Webinaren vorgeschlagen. Die Analyse von Werten in den N-dimensionalen Räumen kann definitiv eine Alternative sein, hat aber mehrere Einschränkungen: Was ist, wenn es mehr als 4 Dimensionen gibt Wenn du siehst, welche Signale und bei welcher Häufigkeit sie im Preisbereich erscheinen, hast du fast alle Notwendige visuelle Darstellung Ihrer Strategie: die Häufigkeit der Transaktionen, ihre Profitabilität (Einkommenskurve), die Genauigkeit der Eröffnung, die Ähnlichkeit mit anderen suboptimalen Werten usw., die nicht über die Leistung im N-dimensionalen Raum gesagt werden können, wo alle nützlichen Informationen sind Ist in der Tat, dass der optimale Wert nicht nur eine ist, sondern es gibt eine ganze Reihe von suboptimalen Werten in einem oder mehreren Bereichen. Bei der Optimierung einer Strategie in WFAToolbox 8211 Walk-Forward Analysis Toolbox für MATLAB174. Als ein neuer optimaler Wert gefunden wird, erscheinen die Trading-Strategie in der Periode in-sample und out-of-sample sofort auf dem Diagramm, so können Sie immer steuern, welche Palette von Optionen, die Sie zuweisen sollten, und auch Sie können die Optimierung pausieren Ohne auf das Ende des Tests zu warten, da es klar wird, dass etwas schief gelaufen ist oder alles in Ordnung ist. Hello, mein Name ist Igor Volkov. Ich entwickle seit 2006 algorithmische Handelsstrategien und habe in mehreren Hedgefonds gearbeitet. In diesem Artikel möchte ich Schwierigkeiten diskutieren, die auf dem Weg von MATLAB Trading Strategies Entwickler während der Prüfung und Analyse, sowie um mögliche Lösungen bieten. Ich habe MATLAB zum Testen von Algorithmusstrategien seit 2007 verwendet und bin zu dem Schluss gekommen, dass dies nicht nur das bequemste Forschungsinstrument ist, sondern auch das mächtigste, weil es möglich ist, komplexe statistische und ökonometrische Modelle, neuronale Netze, Maschinelles Lernen, digitale Filter, Fuzzy-Logik, etc. durch Hinzufügen von Toolbox. Die MATLAB-Sprache ist ganz einfach und gut dokumentiert, so dass auch ein Nicht-Programmierer (wie ich) es beherrschen kann. Wie alles begann. Es war 2008 (wenn ich mich nicht irre), als das erste Webinar zum algorithmischen Handel in MATLAB mit Ali Kazaam veröffentlicht wurde und das Thema der Optimierung einfacher Strategien auf der Grundlage von technischen Indikatoren usw. trotz eines eher 8220chaotic8221-Codes enthielt, waren Werkzeuge interessant Genug zu bedienen. Sie dienten als Ausgangspunkt für die Erforschung und Verbesserung eines Test - und Analysemodells, das es erlaubte, die gesamte Macht der Toolboxen und die Freiheit von MATLAB-Aktionen bei der Erstellung eigener Handelsstrategien zu nutzen, gleichzeitig würde es möglich sein, den Prozess zu kontrollieren Des Tests und der erhaltenen Daten und deren nachfolgende Analyse würde ein effektives Portfolio von robusten Handelssystemen wählen. Anschließend wurden Mathworks Webinare jedes Jahr aktualisiert und allmählich mehr und mehr interessante Elemente eingeführt. So wurde im Jahr 2010 das erste Webinar zum Paarhandel (statistische Arbitrage) mit der Econometric Toolbox abgehalten, obwohl die Toolbox von Test und Analyse gleich geblieben ist. Im Jahr 2013 erschien Trading Toolbox von Mathworks, die MATLAB an verschiedene Broker für die Ausführung ihrer Anwendungen anschließen konnte. Obwohl es für die Durchführung der Transaktionen automatische Lösungen gab, könnte MATLAB ab diesem Zeitpunkt als System zur Entwicklung von Handelsstrategien mit einem vollen Zyklus betrachtet werden: von der Datenbelastung bis zur Ausführung automatisierter Handelsstrategien. Warum sollte jeder Algotrader das Rad neu erfinden Allerdings hat Mathworks keine komplette Lösung für die Prüfung und Analyse der Strategien angeboten 8211 Die Codes, die man aus Webinaren herausholen konnte, waren die einzigen Elemente eines vollständigen Systemtests, und es war notwendig, sie zu modifizieren , Passen sie an und fügen sie der GUI für Benutzerfreundlichkeit hinzu. Es war sehr zeitaufwendig und stellte damit eine Frage: Was auch immer die Strategie war, es muss durch denselben Prozess der Prüfung und Analyse gehen, was es erlauben würde, als stabil und nutzbar zu sein 8211 also warum sollte jeder Algotrader das Rad neu erfinden und schreiben Seine eigenen Code für richtige Teststrategien in MATLAB So wurde die Entscheidung getroffen, um ein Produkt zu schaffen, das es erlauben würde, den gesamten Prozess mit dem Testen und Analysieren von algorithmischen Handelsstrategien mit einer einfachen und benutzerfreundlichen Schnittstelle verbunden zu machen. Zuerst möchte ich die folgenden Fragen beantworten: Was ist mit dem Blog passiert 1. Jev Kuznetsov ist nicht mehr Eigentümer. Der Blog wurde von unserem Freund Jev Kuznetsov gekauft, der zu seinem anderen Blog gezogen hat. Er kam zu dem Schluss, dass Python besser ist als MATLAB für den Handel, was ich für falsch hielt. MATLAB bleibt eine der besten Software in der Welt für algorithmische Handelszwecke IMHO (ich habe einige Fakten darüber aber für zukünftige Diskussion). 2. Wir haben die Marke geändert Von diesem Moment wird das Blog MatlabTrading genannt, was viel besser verständlich ist in Bezug auf die Themen, die es beinhalten wird. Darüber hinaus wurde der Domain-Name in matlabtrading statt der ursprünglichen matlab-trading. blogspot geändert. Obwohl die alte Domain immer noch aus dem primären Domänennamen umgeleitet wird. Was wird mit dem Blog passieren 1. Weitere Beiträge und Artikel Wir hoffen, das Leben in diesem Blog zu bringen, indem wir relevante Inhalte einmal oder zweimal pro Woche veröffentlichen. In den ersten paar Monaten werden wir vor allem jene Artikel und Videos veröffentlichen, die wir bereits für unsere lieben Leser leichter machen müssen, nach Informationen über eine Ressource zu suchen und sie auf sie zu vernetzen. Dann haben wir Pläne, Beiträge über praktische Aspekte des algorithmischen Handels in MATLAB zu schreiben. So erstellen Sie moderne automatische Handelsstrategien wie: Statistische Arbitrage-Paare Handel bedeuten Reversion Markt neutrale Handelsstrategien auf der Grundlage von Kointegration bollinger Bands kalman Filter etc für Rohstoffe, Aktien und Forex. Trend nach Strategien mit Jurik Moving Average und anderen anspruchsvollen digitalen Filtern Prognose Strategien mit maschinellem Lernen (Support Vector Machines) und andere Methoden Erstellen von robusten Trading-Strategien mit visuellen Walk-Forward-Test Geld-Management für die Reinvestition Ihres Kapitals (Wissenschaft auf, wie man 1M von 10K zu bekommen In einem Jahr mit maximalem, aber geschätztem Risiko und Schweiß belohnt). Vielleicht nach dem Lesen dieses youve dachte, das wird ein weiterer dummer Artikel für die armen Jungs suchen, wie man reich wird durch den Handel auf Forex und all das. Nun, das ist total falsch Wir arbeiten in MATLAB, und die Mehrheit von uns sind Wissenschaftler und Experten in diesem Aspekt, so ist alles ernst. 2. Mehr Interaktivität Ich werde mich freuen, wenn wir uns alle durch Kommentare in Beiträgen beziehen können. Abonnieren Sie unsere News, um über die neuesten Beiträge und Veranstaltungen informiert zu werden. Später haben wir Pläne, Google Hangouts Webinare zu machen. Verpassen Sie es nicht, klicken Sie auf Follow-Taste an der oberen rechten Ecke, um unsere Community zu verbinden. Was möchten Sie in unseren Blogposts lesen? Welche Themen können Sie vorschlagen Bitte schreiben Sie hier in Kommentare. In meinem früheren Post kam ich zu dem Schluss, dass der nahezu enge Paarhandel heute nicht so rentabel ist, wie es früher vor 2010 war. Ein Leser wies darauf hin, dass es sein könnte, dass die mittlere, wiederkehrende Art der Spreads nur in kürzere Zeitskalen verschoben wurde . Ich habe zufällig die gleiche Idee zu teilen, also habe ich beschlossen, diese Hypothese zu testen. Dieses Mal wird nur ein Paar getestet: 100 SPY vs -80 IWM. Backtest wird auf 30-Sekunden-Bar-Daten von 11.2011 bis 12.2012 durchgeführt. Die Regeln sind einfach und ähnlich wie die Strategie, die ich in der letzten Post getestet habe: Wenn die Bar-Rückkehr des Paares 1 auf z-Score übersteigt, handeln Sie die nächste Leiste. Das Ergebnis sieht sehr hübsch aus: Ich würde das als genug Beweis dafür betrachten, dass es in der 30-Sekunden-Skala noch viel Mittelwert gibt. Wenn du denkst, dass dieses Diagramm zu gut ist, um wahr zu sein, das ist leider der Fall. Es wurden keine Transaktionskosten oder Bid-Ask-Spread berücksichtigt. Tatsächlich würde ich bezweifeln, dass es je nach dem Abzug aller Handelskosten einen Gewinn geben würde. Dennoch ist diese Art von Charts die Karotte, die vor meiner Nase baumelt und mich dabei hält. Schlechte Nachrichten alle, nach meinen Berechnungen (die ich aufrichtig hoffe, sind falsch) die klassischen Paare Handel ist tot. Manche Leute würden nicht einverstanden sein, aber hier ist was ich gefunden habe: Lass uns eine hypothetische Strategie nehmen, die auf einem Korb von etfs arbeitet: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Von diesen etfs 90 einzigartig Paare können gemacht werden. Jedes Paar ist marktneutral aufgebaut. Strategie Regeln: An jedem Tag, für jedes Paar, berechnen z-Score basierend auf 25-Tage-Standardabweichung. Wenn z-Score gt Schwelle, gehen Sie kurz, schließen Sie den nächsten Tag Wenn z-Score lt-Schwellenwert lange gehen, schließen Sie den nächsten Tag Um es ganz einfach zu halten, wird die Berechnung ohne Kapitalmanagement durchgeführt (man kann bis zu 90 Paare im Portfolio haben An jedem Tag). Transaktionskosten werden auch nicht berücksichtigt. Um es einfach auszudrücken, verfolgt diese Strategie eintägiges Mittel, um die Natur der marktneutralen Spreads zurückzuziehen. Hier sind die Ergebnisse für mehrere Schwellen simuliert: Egal, welche Schwelle verwendet wird, die Strategie ist sehr profitabel im Jahr 2008, ziemlich gut throuh 2009 und völlig wertlos ab Anfang 2010. Dies ist nicht das erste Mal, dass ich über diese Veränderung in Mittelwert zurückkehrte Verhalten in etfs. Egal, was ich versuchte, hatte ich kein Glück bei der Suche nach einer Paar-Handelsstrategie, die auf ETFs nach 2010 arbeiten würde. Meine Schlussfolgerung ist, dass diese Arten von einfachen Stat-Arb-Modellen einfach nicht mehr schneiden. Backtesting Validieren Sie Ihre finanziellen Modelle mit historischen Data Backtesting ist ein Framework, das historische Daten verwendet, um Finanzmodelle zu validieren, einschließlich Handelsstrategien und Risikomanagementmodellen. Abhängig von den Zielen der Validierung, finanzielle professionelle Nutzung mehr als ein Indikator oder Methodik zur Messung der Wirksamkeit der Finanzmodelle. Backtesting wird routinemäßig im Handels - und Risikomanagement durchgeführt. Infolgedessen gibt es eine Reihe von speziellen Backtesting-Techniken, die für diese beiden Bereiche spezifisch sind. Im Handel, gemeinsame Backtesting-Techniken gehören: In-Probe vs Out-of-Probe-Tests Walk-Forward-Analyse oder Walk-Forward-Optimierung Instrument-Level-Analyse vs Portfolio-Ebene Bewertung Im Risikomanagement wird Backtesting in der Regel auf Value-at angewendet - Risk (VaR) und ist auch als VaR Backtesting bekannt. Es gibt verschiedene VaR-Backtesting-Techniken wie: Basels Ampel-Test Binomial-Test Kupie-Anteil der Ausfall-Test Kupiecs Zeit bis zum ersten Versagen Test Christoffersens bedingte Abdeckung gemischte Test Christoffersens bedingte Abdeckung Unabhängigkeit Test Haas Zeit zwischen Ausfällen oder gemischten Kupiec Test Haas Zeit zwischen Ausfällen Unabhängigkeit Test Wählen Sie Ihr Land 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). As quant traders we are interested in the balance of being able to own our trading technology stack versus the speed and reliability of our development methodology. Here are the key considerations for software choice: Programming Skill - The choice of environment will in a large part come down to your ability to program software. I would argue that being in control of the total stack will have a greater effect on your long term PL than outsourcing as much as possible to vendor software. This is due to the downside risk of having external bugs or idiosyncrasies that you are unable to fix in vendor software, which would otherwise be easily remedied if you had more control over your tech stack. You also want an environment that strikes the right balance between productivity, library availability and speed of execution. I make my own personal recommendation below. Execution CapabilityBroker Interaction - Certain backtesting software, such as Tradestation, ties in directly with a brokerage. I am not a fan of this approach as reducing transaction costs are often a big component of getting a higher Sharpe ratio. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFTUHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as CC for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPySciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: FreeOpen Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: CC allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source CC implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Nur mit dem quantitativen Handel begonnen
Comments
Post a Comment