Thursday, 9 February 2017

Backtesting Trading Strategien Matlab

Während ich mag, wo diese Frage geht, würde ich vorschlagen, um es ein wenig konkreter. Welche Teile des Backtesting-Prozesses möchten Sie lernen, Dies kann überall reichen von nur Schätzung einer normalen Rendite, wo das Portfolio zurück aus Ihrer Strategie bereits gegeben werden, um die Umsetzung einer vollständigen Portfolio-Formulierung algorithmisch gegeben. Ndash Constantin Um ehrlich zu sein, weiß ich nicht viel über Backtesting. Mir wurde gesagt, dass ich während meines Praktikums neue Strategien unterstützen oder den aktuellen Kurs verbessern muss. So möchte ich 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 Aktienwerte wird ein einfacher Backtest typischerweise aus zwei Schritten bestehen: Berechnung der Portfolio-Rendite, die aus Ihrer Portfolio-Formationsregel (oder Handelsstrategie) resultiert 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 werden, und es gibt verschiedene Möglichkeiten, dies zu tun. Wenn Sie wissen, wie eine OLS-Regression in Matlab zu tun ist, sollten Sie sich auf alle Arten von Matrixmanipulationen konzentrieren. Implementierung in Matlab Portfolio-Formulierung und Renditeberechnung Um Ihnen ein Beispiel dafür zu geben, wie eine primitive Handelsstrategie in Matlab implementiert werden könnte, können wir monatliche Rendite-Daten und eine einheitliche Haltedauer von einem Monat auf n Vermögenswerte über k Perioden annehmen, wobei i in und k im . Angenommen, keine Änderungen in der Zusammensetzung Ihres Stock Universums, Ihre returns 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 amp dots amp amp dots amp x end Wo zurückkehrt Werden als x frac-1 berechnet. Unter der Annahme, dass Ihr Selektionskriterium eine Art von Lagercharakteristik ist, die in monatlicher Häufigkeit zur Verfügung steht, haben Sie auch eine Merkmalsmatrix C. Dann können Sie einen Algorithmus schreiben, der diejenigen Einträge in C identifiziert, die Ihr Selektionskriterium erfüllen (zB einen bestimmten Schwellwert überschreiten) ) Und ersetzen die entsprechenden Einträge (wobei i und t gleich sind) einer Indikatormatrix I (die als Nullmatrix unter Verwendung der Nullenfunktion initialisiert wurde) mit Einsen. Sie können dann die Einträge von I mit denen der Rendite-Matrix 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 von Portfolio-Renditen zu erhalten. Risikoanpassung und Identifikation von anormalen Renditen In Schritt 2 vergleichen Sie diesen Vektor mit den normalen Renditen aus der Regressionsschätzung eines Asset-Pricing-Modells wie dem Fama-French-Modell. Indem Sie den normalen Rückgabewektor aus Ihrem Portfolio-Rückgabewert subtrahieren, bestimmen Sie, ob Ihre Handelsstrategie zu einer positiven anomalen Rendite geführt hat. Empfehlungen Wenn Sie neu in Matlab sind, schlage ich Ihnen persönlich vor, dass Sie sich ausreichend mit dieser vereinfachten Strategie vertraut machen, bevor Sie einige der vereinfachenden Annahmen (wie einheitliche Haltedauer und Periodizität) und fortgeschrittene Implementierungen vornehmen. Auch hier möchte ich betonen, dass dies erfordert, dass Sie sehr komfortabel mit Matlab und vor allem die verschiedenen Möglichkeiten, um Matrizen zu manipulieren, die einige Zeit dauern kann. Wenn Sie nicht benötigen, um Matlab für Ihr Praktikum zu verwenden und Ergebnisse schnell erhalten möchten, könnten Sie Schritt 1 in Excel stattdessen tun, die langweilig ist, aber nicht die (lohnende) erste Investition, die Sie für Matlab machen müssen. Um sich mit Matlab vertraut zu machen, bin ich sicher, dass Sie bereits die extrem gute Dokumentation, die mit ihm kommt, entdeckt haben. Das ist für mich die einzige wertvollste Ressource und wahrscheinlich nützlicher als irgendwelche finanzspezifischen Ressourcen (mit denen ich warten würde, bis Sie mit Matlab selbst vertraut sind). Alles, was erforderlich ist, um die normale Rendite zu bestimmen, ist eine OLS-Regression und ein rudimentäres Verständnis von Asset-Pricing-Modellen. Antwort # 2 am 22: 20MatlabTrading Dieser Beitrag ist, wie wichtig es ist, verschiedene Arten von Optimierungsmethoden wie genetische Algorithmen und Parallelisierung verwenden, um Ergebnisse schneller zu erhalten. Genetische Algorithmen Optimierung Trotz der Tatsache, dass das genetische (evolutionäre) Algorithmusprinzip in den MathWorks-Webinars sehr gut erklärt ist, 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 erheblichen Intervallen für eine Strategie, die Sie nicht durch mit einer Iteration und die Parallelisierung von Prozessen 8211 Berechnungen kann mehrere Tage dauern . Sicherlich gibt es Strategien in der letzten Phase der Optimierung. Wenn wir fast sicher wissen, dass die Trading-Strategie erfolgreich ist, können wir für mehrere Tage warten oder mieten Sie den gesamten Cluster - das Ergebnis könnte sich lohnen. Allerdings, wenn wir die Ergebnisse einer sperrigen Strategie abschätzen und entscheiden müssen, 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: Lineare Methode 8211 Es ist eine übliche Art der Sortierung, in der Sie alle Zwischenergebnisse (suboptimal) sehen werden. Es gibt maximale Genauigkeit. Parallel-Methode 8211 werden alle Kernel Ihrer CPU verwendet. Es ist nicht erlaubt, Zwischenergebnisse zu sehen, aber erheblich beschleunigt den Betrieb. Es gibt maximale Genauigkeit während Erhöhung der Berechnungsgeschwindigkeit. Genetische Methode 8211 verwendet es den evolutionären Optimierungsalgorithmus. Es erlaubt, suboptimale Werte zu sehen, gibt aber das Ergebnis nahe am besten. Seine nicht eine sehr genaue Methode, aber seine genaue genug für den ersten Lauf der Strategie. Sehr schnell. Wir werden oft gefragt, ob 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 der einzelnen Strategien für Grafikkerne testen. Leider, aufgrund dieser Nicht-Universalität der Methode kann man nicht verwenden GPU in WFAToolbox. Weiterführend Teil 2 der Diskussion von Problemen und Lösungen bei der Prüfung und Analyse der algorithmischen Handelsstrategie in MATLAB, lade ich Sie zu diesem Beitrag über das Problem der Nichtverfügbarkeit der Visualisierung der Prozesse in modernen Software-Lösungen für das Testen von Handelssystemen zu lesen. Visualisierung des Testprozesses In meiner Arbeitserfahrung analysierte ich häufig andere populäre Plattformen für das Trading-Strategie-Testen. Wie zum Beispiel TradeStation. MetaStock. Multicharts etc. und ich war immer überrascht, wie wenig Aufmerksamkeit für die Visualisierung des Testprozesses bezahlt wurde. Die Sache ist, dass, wenn wir nicht sehen, die Ergebnisse der Zwischen-, suboptimale Werte der optimierten Parameter, wir oft wegwerfen Gold zusammen mit dem Schmutz. Die Sache ist, weil eine übermäßig breite Stichprobe, die Strategie passt die Parameter, wie wir entweder sehen, eine perfekte Strategie, die im wirklichen Leben scheitert oder sehen Sie ein oder zwei Angebote, die angeblich die besten sind, weil es solche Zeitintervalldaten, wo die gewählt wurde Beste Handelsstrategie wäre Buy-and-Hold, aber warum sind dann andere Strategien notwendig für die Visualisierung des Trading-Strategie-Testprozess in MATLAB (im Webinar vorgeschlagen) Als Ergebnis, ohne zu sehen, Zwischenergebnisse, müssen wir 171blindly187 ändern Sie die Parameter zu versuchen Um die besseren Daten zu erhalten oder sehen Sie sie in einigen 3D oder 4D (Farbe ist die 4. Dimension), wie in Webinaren vorgeschlagen. Die Analyse der Werte in den N-dimensionalen Räumen kann auf jeden Fall eine Alternative sein, hat aber mehrere Einschränkungen: Was passiert, wenn es mehr als 4 Dimensionen Wenn Sie sehen, welche Signale und mit welcher Frequenz sie in der Preisklasse erscheinen, haben Sie fast alle Notwendige visuelle Darstellung Ihrer Strategie: die Häufigkeit der Transaktionen, ihre Rentabilität (Einkommenskurve), die Genauigkeit der Ö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 Ist in der Tat, dass der optimale Wert nicht nur eine ist, sondern es gibt einen ganzen Bereich von suboptimalen Werten in einem oder mehreren Bereichen. Während Optimierung einer Strategie in WFAToolbox 8211 Walk-Forward Analysis Toolbox für MATLAB174. Wenn ein neuer optimaler Wert gefunden wird, werden die Trading-Strategiesignale in der Periode in-sample und out-of-sample sofort auf dem Chart angezeigt, so dass Sie immer kontrollieren können, welchen Bereich von Optionen Sie zuweisen sollten und auch die Optimierung pausieren können Ohne auf das Ende des Tests warten, wie es klar wird, dass etwas schief ging oder alles in Ordnung ist. Hallo, mein Name ist Igor Volkov. Ich entwickle seit 2006 algorithmische Handelsstrategien und habe in mehreren Hedgefonds gearbeitet. In diesem Artikel möchte ich über Schwierigkeiten auf dem Weg der MATLAB Trading Strategies Entwickler während der Prüfung und Analyse zu diskutieren, sowie mögliche Lösungen zu diskutieren. Seit 2007 nutze ich MATLAB zum Testen von Algorithmusstrategien, und ich bin zu dem Schluss gekommen, dass es sich dabei nicht nur um das geeignetste Forschungswerkzeug handelt, sondern auch um das mächtigste, weil es die Verwendung von komplexen statistischen und ökonometrischen Modellen, Maschine-Lernen, digitale Filter, Fuzzy-Logik, etc, indem Toolbox. Die MATLAB-Sprache ist recht einfach und gut dokumentiert, so dass selbst ein Nichtprogrammierer (wie ich) es beherrschen kann. Wie alles begann. Es war 2008 (wenn ich mich nicht irre), als das erste Webinar über den algorithmischen Handel in MATLAB mit Ali Kazaam veröffentlicht wurde, das das Thema der Optimierung einfacher Strategien basierend auf technischen Indikatoren, etc. trotz eines ziemlich 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 ganze Kraft der Werkzeugkästen und die Freiheit der MATLAB-Aktionen während der Schaffung eigener Handelsstrategien zu nutzen und gleichzeitig den Prozess zu kontrollieren Der Tests und die erhaltenen Daten und ihre anschließende Analyse würde ein wirksames Portfolio von robusten Handelssystemen wählen. Anschließend wurden die Mathworks-Webinare jedes Jahr aktualisiert und allmählich mehr und mehr interessante Elemente eingeführt. So wurde im Jahr 2010 das erste Webinar zum Paarenhandel (statistisches Arbitrage) unter Verwendung der Econometric Toolbox abgehalten, obwohl die Toolbox für Testen und Analysen gleich geblieben ist. Im Jahr 2013 erschien Trading Toolbox von Mathworks, die erlaubt, MATLAB an verschiedene Broker für die Ausführung ihrer Anwendungen zu verbinden. Obwohl es automatische Lösungen für die Durchführung der Transaktionen gab, könnte MATLAB von diesem Punkt an ein System für die Entwicklung von Handelsstrategien mit einem vollen Zyklus betrachtet werden: von der Datenverladung bis zur Ausführung automatisierter Handelsstrategien. Warum sollte jeder Algotrader Reinly the Wheel Allerdings hat Mathworks nicht eine komplette Lösung für das Testen und Analysieren der Strategien 8211 angeboten, die Codes, die Sie aus Webinaren erhalten konnten, waren die einzigen Elemente eines vollständigen Systemtests, und es war notwendig, sie zu modifizieren , Passen Sie sie an und fügen Sie sie zur GUI für Benutzerfreundlichkeit hinzu. Es war sehr zeitaufwendig und stellte so eine Frage: Was auch immer die Strategie war, es muss durch denselben Test - und Analyseprozess gehen, der es erlauben würde, als stabil und nutzbar zu klassifizieren, also warum sollte jeder Algotrader das Rad neu erfinden und schreiben Seinen eigenen Code für die richtigen Test-Strategien in MATLAB Also die Entscheidung wurde getroffen, um ein Produkt, das ermöglichen würde, um den gesamten Prozess im Zusammenhang mit der Prüfung und Analyse von algorithmischen Handelsstrategien mit einer einfachen und benutzerfreundlichen Schnittstelle. Zuerst möchte ich die folgenden Fragen beantworten: Was mit dem Blog passiert ist 1. Jev Kuznetsov ist nicht der Eigentümer mehr Der Blog wurde von unserem Freund, Jev Kuznetsov, der zu seinem anderen Blog tradingwithpython. blogspot verschoben hat gekauft. Er kam zu dem Schluss, dass Python besser ist als MATLAB für den Handel, den ich für falsch halte. MATLAB bleibt eine der besten Software der Welt für algorithmische Handelszwecke IMHO (Ich habe einige Tatsachen über dieses zwar für zukünftige Diskussion). 2. Wir haben die Marke verändert Von diesem Moment wird der Blog MatlabTrading genannt werden, was viel verständlicher ist in Bezug auf die Themen, die es enthalten wird. Außerdem wurde der Domänenname in matlabtrading anstelle des ursprünglichen matlab-trading. blogspot geändert. Obwohl die alte Domäne immer noch von dem primären Domänennamen weiterleitet. Was passiert mit dem Blog 1. Mehr Beiträge und Artikel Wir hoffen, das Leben in diesem Blog zu bringen, indem wir relevante Inhalte ein - oder zweimal pro Woche posten. In den ersten Monaten werden wir vor allem die Artikel und Videos posten, die wir bereits haben, um es unseren Lesern einfacher zu machen, nach Informationen über eine Ressource zu suchen und Querverweise zu haben. Dann haben wir Pläne, Beiträge über praktische Aspekte des algorithmischen Handels in MATLAB zu schreiben. Wie schafft man moderne automatische Handelsstrategien wie: Statistische Arbitrage Paare Handel bedeuten Reversion marktneutrale Trading-Strategien auf Cointegration bollinger Bands kalman Filter etc für Rohstoffe, Aktien und Forex. Trend nach Strategien mit Jurik Moving Average und anderen anspruchsvollen digitalen Filtern Vorhersage Strategien mit maschinellem Lernen (Support Vector Machines) und andere Methoden Erstellen Sie robuste Trading-Strategien mit visuellen Walk-forward-Tests Geld-Management für die Reinvestition Ihres Kapitals (Wissenschaft, wie man 1M von 10K zu bekommen In einem Jahr mit maximaler, aber geschätzter Risiko - und Schweißbelastung). Vielleicht nach der Lektüre dieses youve dachte, das wird ein weiterer dummer Artikel für die armen Jungs suchen, wie man reich durch den Handel auf Forex und all das werden. Nun, das ist völlig falsch Wir arbeiten in MATLAB, und die Mehrheit von uns sind Wissenschaftler und Experten in diesem Aspekt, so dass alles ernst ist. 2. Mehr Interaktivität Ich werde glücklich sein, wenn wir 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. Dont miss it, klicken Sie auf Follow-Button an der oberen rechten Ecke zu unserer Community beitreten. Was möchten Sie in unseren Blogbeiträgen lesen? Welche Themen können Sie vorschlagen? Schreiben Sie hier in den Kommentaren. In meinem früheren Post kam ich zu dem Schluss, dass die Nähe zu engen Paaren Handel ist nicht so profitabel, wie es früher vor 2010. Ein Leser wies darauf hin, dass es sein könnte, dass Mittel-wiederkehrende Natur der Spreads nur in Richtung kürzere Zeitskalen verschoben werden . Ich habe zufällig die gleiche Idee zu teilen, so dass 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 Strategie, die ich in der letzten Post getestet: Wenn Bar Rückgabe des Paares 1 auf z-Score übersteigt, den nächsten Balken. Das Ergebnis sieht sehr hübsch aus: Ich halte dies für ausreichend, um zu beweisen, dass es in der 30-Sekunden-Skala noch genügend Mittelwert-Reversion gibt. Wenn Sie denken, dass diese Tabelle zu gut ist, um wahr zu sein, ist das leider tatsächlich der Fall. Es wurden keine Transaktionskosten oder Bid-Ask-Spannen berücksichtigt. In der Tat, ich würde bezweifeln, dass es keinen Gewinn nach der Subtraktion aller Handelskosten übrig. Doch diese Art von Charts ist die Karotte baumelt vor meiner Nase, halten mich gehen. Schlechte Nachrichten alle, nach meinen Berechnungen, (die ich aufrichtig hoffe, sind falsch) ist das klassische Paar Handel ist tot. Manche Leute würden stark widersprechen, aber hier ist, was ich gefunden habe: Lets nehmen eine hypothetische Strategie, die auf einem Korb von etfs funktioniert: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Von diesen etfs 90 einzigartig Paare gebildet werden können. 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 nächsten Tag Wenn z-Score lt-Schwelle gehen lange, schließe nächsten Tag Um es ganz einfach, die Berechnung erfolgt ohne Kapitalmanagement (man kann bis zu 90 Paare im Portfolio haben An jedem Tag). Auch Transaktionskosten werden nicht berücksichtigt. Um es einfach auszudrücken, verfolgt diese Strategie eine eintägige Umkehrung der Marktneutralspreads. Hier werden die Ergebnisse für mehrere Schwellen simuliert: Egal welche Schwelle verwendet wird, die Strategie ist 2008 sehr erfreulich, ziemlich gut von 2009 und völlig wertlos ab Anfang 2010. Dies ist nicht das erste Mal, dass ich auf diese Veränderung im Mittelrückgang gestoßen bin Verhalten in etfs. Egal, was Ive versucht, hatte ich kein Glück bei der Suche nach einem Paar Handelsstrategie, die auf ETFs Vergangenheit 2010 arbeiten würde. Meine Schlussfolgerung ist, dass diese Arten von einfachen stat-arb-Modelle nur schneiden es nicht mehr. Erfolgreiche Backtesting of Algorithmic Trading Strategies - Teil I Dieser Artikel setzt die Reihe auf dem quantitativen Handel fort, der mit dem Anfänger-Führer und der Strategie-Identifikation begann. Beide dieser längeren, mehr beteiligten Artikel wurden sehr beliebt, so Ill weiterhin in dieser Richtung und bieten Detail über das Thema Strategie Backtesting. Algorithmisches Backtesting erfordert Kenntnisse in vielen Bereichen, einschließlich Psychologie, Mathematik, Statistik, Softwareentwicklung und Marketexchange-Mikrostruktur. Ich könnte nicht hoffen, alle diese Themen in einem Artikel zu decken, also Im gehend, sie in zwei oder drei kleinere Stücke zu teilen. 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, die wir im Anfänger-Führer zum quantitativen Handel berührt haben, aufklären. Als nächstes werde ich einen Vergleich der verschiedenen verfügbaren Backtesting-Software-Optionen vorstellen. In den folgenden Artikeln werden wir die Details der Strategie-Implementierungen, die oft kaum erwähnt oder ignoriert werden. Wir werden auch darüber nachdenken, wie man den Backtesting-Prozess realistischer machen kann, indem man die Eigenheiten einer Börse einbezieht. Dann diskutieren wir Transaktionskosten und wie man sie korrekt in einer Backtest-Einstellung modelliert. Wir werden mit einer Diskussion über die Performance unserer Backtests enden und schließlich ein Beispiel für eine gemeinsame Quant-Strategie geben, bekannt als ein durchschnitt-reverting-Paar-Handel. Wir beginnen mit der Diskussion, was Backtesting ist und warum sollten wir es in unserem algorithmischen Handel. Was ist Backtesting Algorithmic Handel steht abgesehen von anderen Arten von Investment-Klassen, weil wir zuverlässiger liefern können Erwartungen über die künftige Performance aus früheren Performance, als Folge der reichlich vorhandenen Datenverfügbarkeit. Das Verfahren, bei dem dies durchgeführt wird, wird als Backtesting bezeichnet. In einfachen Worten, Backtesting durchgeführt wird, indem Sie Ihre besonderen Strategie-Algorithmus zu einem Strom von historischen Finanzdaten, die zu einer Reihe von Trading-Signale führt. Jeder Handel (der hier eine Rundreise von zwei Signalen sein wird) wird mit einem Gewinn oder Verlust verbunden sein. Die Anhäufung dieses Gewinnverlustes über die Dauer Ihres Strategie-Backtests führt zum Gesamtgewinn und - verlust (auch bekannt als PL oder PnL). Das ist das Wesen der Idee, obwohl natürlich der Teufel immer im Detail ist. Was sind die Hauptgründe für das Backtesting einer algorithmischen Strategie Filtration - Wenn Sie sich aus dem Artikel zur Strategieidentifikation erinnern. War es unser Ziel in der anfänglichen Forschungsphase, eine Strategiepipeline aufzustellen und dann jede Strategie herauszufiltern, die bestimmte Kriterien nicht erfüllte. Backtesting liefert uns einen anderen Filtrationsmechanismus, da wir Strategien eliminieren können, die unsere Leistungsanforderungen nicht erfüllen. Modellierung - Backtesting ermöglicht es uns, neue Modelle bestimmter Marktphänomene (Transaktionskosten, Orderrouting, Latenzzeit, Liquidität oder andere marktnahe Mikrostrukturprobleme) sicher zu testen. Optimierung - Obwohl Strategie-Optimierung ist voller Bias, Backtesting ermöglicht es uns, die Performance einer Strategie zu erhöhen, indem die Menge oder die Werte der Parameter in Verbindung mit dieser Strategie und die Neuberechnung seiner Leistung. Verifizierung - Unsere Strategien werden oft extern über unsere Strategiepipeline bezogen. Das Backtesting einer Strategie stellt sicher, dass es nicht falsch implementiert wurde. Obwohl wir selten Zugang zu den Signalen haben, die durch externe Strategien generiert werden, haben wir oft Zugang zu den Leistungsmetriken wie Sharpe Ratio und Drawdown. 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 wird es, wenn die Häufigkeit der Strategie zunimmt, schwieriger, die Mikrostruktureffekte des Marktes und des Austauschs korrekt zu modellieren. Dies führt zu weniger zuverlässigen Backtests und damit zu einer schärferen Bewertung einer gewählten Strategie. Dies ist ein besonderes Problem, bei dem das Ausführungssystem der Schlüssel zur Strategieleistung ist, wie bei Ultrahochfrequenzalgorithmen. Leider ist Backtesting voller Vorurteile aller Art. Wir haben einige dieser Themen in früheren Artikeln berührt, aber wir werden sie nun ausführlich erörtern. Bias, die Strategie-Backtests beeinflussen Es gibt viele Vorurteile, die die Leistung einer zurückgetretenen Strategie beeinflussen können. Leider haben diese Vorbelastungen eine Tendenz, die Leistung aufzublasen, anstatt sie zu beeinträchtigen. Sie sollten also immer einen Backtest als idealisierte Obergrenze für die tatsächliche Performance der Strategie betrachten. Es ist fast unmöglich, Biases aus algorithmischen Handel zu beseitigen, so ist es unsere Aufgabe, sie so gut wie möglich zu minimieren, um fundierte Entscheidungen über unsere algorithmischen Strategien zu treffen. Es gibt vier Hauptverzerrungen, die ich diskutieren möchte: Optimierung Bias. Ausblick-Bias. Überlebensbias und psychologische Toleranz Bias. Optimierung Bias Dies ist wahrscheinlich die heimtückischste aller Backtest-Bias. Es geht um die Anpassung oder Einführung zusätzlicher Handelsparameter, bis die Strategie-Performance auf dem Backtest-Datensatz sehr attraktiv ist. Doch einmal kann die Leistung der Strategie deutlich anders aussehen. Ein anderer Name für diese Vorspannung ist Kurvenanpassung oder Daten-Snooping-Bias. Optimierungsvorspannung ist schwer zu eliminieren, da algorithmische Strategien oft viele Parameter beinhalten. Parameter in diesem Fall können das Einstiegskriterium, die Rückblickperioden, die Mittelungsperioden (d. h. der gleitende mittlere 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 in dem Trainingssatz erhöht wird. Tatsächlich muss man auch darauf achten, dass ältere Ausbildungspunkte einer vorherigen Regelung (zB einem regulatorischen Umfeld) unterliegen können und daher möglicherweise nicht für Ihre aktuelle Strategie relevant sind. Eine Methode zur Minderung dieser Vorspannung ist eine Sensitivitätsanalyse durchzuführen. Das bedeutet, die Parameter schrittweise zu variieren und eine Oberfläche der Leistung zu zeichnen. Die fundamentale Grundlegung der Parameterauswahl sollte bei allen anderen Faktoren zu einer glatteren Parameteroberfläche führen. Wenn Sie eine sehr sprunghafte Performance-Oberfläche haben, bedeutet dies oft, dass ein Parameter nicht reflektiert ein Phänomen und ist ein Artefakt der Testdaten. Es gibt eine umfassende Literatur über mehrdimensionale Optimierungsalgorithmen und es ist ein sehr aktives Forschungsgebiet. Ich werde nicht hier bleiben, aber halten Sie es in den Rücken Ihres Geistes, wenn Sie eine Strategie mit einem fantastischen Backtest finden Look-Ahead Bias Look-Ahead-Bias wird in ein Backtesting-System eingeführt, wenn zukünftige Daten versehentlich in einem Punkt enthalten sind Simulation, wo diese Daten tatsächlich nicht verfügbar gewesen wären. Wenn wir den Rücktest chronologisch ausführen und den Zeitpunkt N erreichen, dann erfolgt eine Vorspannung, wenn Daten für jeden Punkt Nk aufgenommen werden, wobei k0 gilt. Look-Ahead-Bias Fehler können unglaublich subtil. Hier sind drei Beispiele dafür, wie Vorgriffs-Bias eingeführt werden können: Technische Bugs - Arraysvektoren im Code haben oft Iteratoren oder Index-Variablen. Falsche Offsets dieser Indizes können zu einer Vorausschau-Bias führen, indem Daten bei Nk für nicht-null k eingefügt werden. Parameterberechnung - Ein weiteres allgemeines Beispiel für eine Vorgriffsvorspannung tritt auf, wenn optimale Strategieparameter berechnet werden, wie bei linearen Regressionen zwischen zwei Zeitreihen. Wenn der gesamte Datensatz (einschließlich zukünftiger Daten) verwendet wird, um die Regressionskoeffizienten zu berechnen und somit rückwirkend auf eine Handelsstrategie für Optimierungszwecke anzuwenden, dann werden zukünftige Daten inkorporiert und eine Vorausschau-Bias existiert. MaximaMinima - Bestimmte Handelsstrategien nutzen extreme Werte in einem beliebigen Zeitraum, wie die Einbeziehung der hohen oder niedrigen Preise in OHLC-Daten. Da diese Maximalwerte jedoch nur am Ende einer Zeitperiode berechnet werden können, wird eine Vorausschau-Bias eingeführt, wenn diese Werte während der aktuellen Periode verwendet werden. Es ist immer notwendig, Highlow-Werte durch mindestens eine Periode in einer Handelsstrategie, die von ihnen Gebrauch macht, zu verzögern. Wie bei der Optimierung der Bias, muss man sehr vorsichtig sein, um seine Einführung zu vermeiden. Es ist oft der Hauptgrund, warum Trading-Strategien Undertraform ihre Backtests deutlich im Live-Handel. Survivorship Bias Survivorship Bias ist ein besonders gefährliches Phänomen und kann zu einer erheblich überhöhten Performance für bestimmte Strategietypen führen. Es tritt auf, wenn Strategien auf Datasets getestet werden, die nicht das vollständige Universum der vorherigen Vermögenswerte enthalten, die zu einem bestimmten Zeitpunkt gewählt worden sein können, aber nur diejenigen betrachten, die bis zur gegenwärtigen Zeit überlebt haben. Als Beispiel betrachten Prüfung einer Strategie auf eine zufällige Auswahl von Aktien vor und nach dem 2001 Absturz. Einige Technologie-Aktien gingen bankrott, während andere geschafft, über Wasser zu halten und sogar gedeihen. Wenn wir diese Strategie nur auf Aktien beschränkten, die es durch die Marktabschreibungsperiode geschafft hatten, würden wir eine Überlebenschance einführen, weil sie bereits ihren Erfolg gezeigt haben. In der Tat, dies ist nur ein weiterer konkreter Fall von Vorausschau Bias, wie zukünftige Informationen wird in die Vergangenheit Analyse integriert. Es gibt zwei Hauptmöglichkeiten, um die Überlebenschance in Ihren Strategie-Backtests zu verringern: Survivorship Bias Free Datasets - Im Falle von Equity-Daten ist es möglich, Datensätze zu kaufen, die Delisting-Entitäten enthalten, obwohl sie nicht billig sind und nur in der Regel von institutionellen Firmen genutzt werden . Insbesondere ist Yahoo Finanzen Daten NICHT Überleben Bias frei, und dies wird häufig von vielen Einzelhandel Algo-Händler verwendet. Man kann auch auf Assetklassen handeln, die nicht anfällig für Überlebensbias sind, wie bestimmte Rohstoffe (und ihre zukünftigen Derivate). Verwenden Sie neuere Daten - Bei Aktien reduziert die Verwendung eines neueren Datensatzes die Möglichkeit, dass die gewählte Aktienauswahl den Überlebenden gewichtet wird, einfach, da weniger Wahrscheinlichkeit besteht, dass der Gesamtbestand in kürzeren Zeiträumen verzinst wird. Man kann auch beginnen, eine persönliche Überlebens-Bias-freien Datensatz durch das Sammeln von Daten aus dem aktuellen Punkt aufzubauen. Nach 3-4 Jahren haben Sie eine solide Überlebens-Bias-freie Reihe von Aktien-Daten, mit denen Backtest weitere Strategien haben. Wir betrachten nun einige psychologische Phänomene, die Ihre Handelsleistung beeinflussen können. Psychologische Toleranz Bias Diese besonderen Phänomene werden nicht oft im Kontext des quantitativen Handels diskutiert. Es wird jedoch ausführlich in Bezug auf mehr diskretionäre Handelsmethoden diskutiert. Es hat verschiedene Namen, aber Ive beschlossen, es psychologische Toleranz Bias nennen, weil es das Wesen des Problems erfasst. Bei der Erstellung von Backtests über einen Zeitraum von 5 Jahren oder mehr ist es leicht, eine aufwärts tendierende Eigenkapitalkurve zu betrachten, die zusammengesetzte jährliche Rendite, Sharpe Ratio und sogar Drawdown-Eigenschaften 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. Dies wäre nicht atypisch für eine Impulsstrategie. Es ist einfach, sich davon zu überzeugen, dass es leicht ist, solche Perioden von Verlusten zu tolerieren, weil das Gesamtbild rosig ist. Allerdings ist es in der Praxis viel schwieriger Wenn historische Drawdowns von 25 oder mehr auftreten, in den Backtests, dann aller Wahrscheinlichkeit werden Sie sehen, Zeiten ähnlicher Drawdown im Live-Trading. Diese Zeitabschnitte sind psychologisch schwer zu ertragen. Ich habe aus erster Hand gesehen, was ein verlängerter Drawdown sein kann, in einer institutionellen Umgebung, und es ist nicht angenehm - auch wenn die Backtests deuten darauf hin, dass Perioden auftreten. Der Grund, den ich es als Bias bezeichnet habe, ist, dass oft eine Strategie, die sonst erfolgreich sein würde, aus dem Handel in Zeiten verlängerten Drawdown gestoppt wird und somit zu einer signifikanten Underperformance im Vergleich zu einem Backtest führen wird. So, obwohl die Strategie algorithmischen in der Natur ist, können psychologische Faktoren haben noch einen großen Einfluss auf die Rentabilität. Der Takeaway ist, um sicherzustellen, dass, wenn Sie Drawdowns eines bestimmten Prozentsatzes und Dauer in den Backtests sehen, dann sollten Sie erwarten, dass sie in Live-Trading-Umgebungen auftreten und müssen beharren, um die Rentabilität noch einmal zu erreichen. Softwarepakete für Backtesting Die Softwarelandschaft für Strategie Backtesting ist enorm. Die Lösungen reichen von der vollintegrierten, hochqualifizierten Software bis hin zu Programmiersprachen wie C, Python und R, wo fast alles von Grund auf neu geschrieben werden muss (oder entsprechende Plugins). Als quant Trader interessieren wir uns für die Balance, unseren Handelstechnologie-Stack im Vergleich zur Geschwindigkeit und Zuverlässigkeit unserer Entwicklungsmethodik besitzen zu können. Hier sind die wichtigsten Überlegungen für die Software-Auswahl: Programmierung 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 den gesamten Stack wird eine größere Wirkung auf Ihre langfristige PL als Outsourcing so viel wie möglich an Anbieter-Software haben. Dies ist aufgrund der Abwärtsrisiko von externen Bugs oder Idiosynkrasien, die Sie nicht in der Anbieter-Software zu beheben, die sonst leicht behoben werden würde, wenn Sie mehr Kontrolle über Ihre Tech-Stack hatte zu beheben. Sie wollen auch eine Umgebung, die die richtige Balance zwischen Produktivität, Verfügbarkeit der Bibliothek und Geschwindigkeit der Ausführung. Ich mache meine persönliche Empfehlung unten. Execution CapabilityBroker-Interaktion - Bestimmte Backtesting-Software, wie Tradestation, verbindet sich direkt mit einem Brokerage. Ich bin nicht ein Fan von diesem Ansatz als Reduzierung Transaktionskosten sind oft eine große Komponente der immer ein höheres Sharpe-Verhältnis. 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. Klicken Sie unten, um mehr darüber zu erfahren. Die Informationen auf dieser Website ist die Meinung der einzelnen Autoren auf der Grundlage ihrer persönlichen Beobachtung, Forschung und jahrelange Erfahrung. Der Herausgeber und seine Autoren sind nicht registrierte Anlageberater, Rechtsanwälte, CPAs oder andere Finanzdienstleister und machen keine Rechts-, Steuer-, Rechnungswesen, Anlageberatung oder andere professionelle Dienstleistungen. Die Informationen, die von dieser Web site angeboten werden, sind nur allgemeine Ausbildung. Weil jeder Einzelne sachliche Situation anders ist, sollte der Leser seinen persönlichen Berater suchen. Weder der Autor noch der Herausgeber übernehmen jegliche Haftung oder Verantwortung für Fehler oder Unterlassungen und haben weder eine Haftung noch Verantwortung gegenüber Personen oder Körperschaften in Bezug auf Schäden, die direkt oder indirekt durch die auf dieser Website enthaltenen Informationen verursacht oder vermutet werden. Benutzung auf eigene Gefahr. Darüber hinaus kann diese Website erhalten finanzielle Entschädigung von den Unternehmen erwähnt durch Werbung, Affiliate-Programme oder auf andere Weise. Preise und Angebote von Inserenten auf dieser Website ändern sich häufig, manchmal ohne Vorankündigung. Während wir uns bemühen, rechtzeitige und genaue Informationen aufrechtzuerhalten, können Angebot Details veraltet sein. Besucher sollten daher die Bedingungen dieser Angebote vor der Teilnahme an ihnen überprüfen. Der Autor und sein Herausgeber haften nicht für die Aktualisierung der Informationen und haften nicht für die Inhalte, Produkte und Dienstleistungen von Drittanbietern, auch wenn sie über Hyperlinks oder Anzeigen auf dieser Website aufgerufen werden.


No comments:

Post a Comment