Monday 20 February 2017

Handelsstrategien Mit R

Ich bin sehr neu in R und versucht, eine Strategie Ive programmiert bereits in WealthLab Backtest. Mehrere Dinge, die ich nicht verstehe (und es funktioniert nicht offensichtlich :) Ich bekomme nicht die Close Prices schön in einen Vektor. Oder irgendeine Art von Vektor, aber es beginnt mit Struktur und ich nicht wirklich verstehen, was diese Funktion. Thats, warum meine Serie, 1 Anruf wahrscheinlich nicht funktioniert. N lt-nrow (Serie) funktioniert nicht, aber ich brauche das für die Loop Also ich denke, wenn ich diese 2 Fragen beantwortet meine Strategie funktionieren sollte. Ich bin sehr dankbar für jede Hilfe .. R scheint ziemlich kompliziert auch mit Programmier-Erfahrung in anderen Sprachen ja Ich Art kopiert einige Zeilen Code aus diesem Tutorial und don39t wirklich verstehen, diese Zeile. Ich meine Reihe, 1 Ich dachte, die Funktion f auf quotcolumnquot 1 der Serie anwenden würde. Aber da diese Reihe ist einige compley mit Struktur etc. es doesn39t Arbeit. I39m, die über dieses Tutorium sprechen: r-bloggersbacktesting-a-trading-Strategie ndash MichiZH Jun 6 13 at 14: 22Financial Mathematics and Modeling II (FINC 621) ist eine Absolventenstufe Klasse, die derzeit an der Loyola University in Chicago im Winterquartier angeboten wird . FINC 621 erforscht Themen der quantitativen Finanzierung, Mathematik und Programmierung. Die Klasse ist praktischer Natur und besteht sowohl aus einer Vorlesung als auch aus einer Laborkomponente. Die Labore verwenden die Programmiersprache R und die Studierenden sind verpflichtet, ihre einzelnen Aufgaben am Ende jeder Klasse einzureichen. Das Ziel von FINC 621 ist es, den Studierenden praktische Werkzeuge zur Verfügung zu stellen, mit denen sie einfache Handlungsstrategien erstellen, modellieren und analysieren können. Einige nützliche R-Links Über den Instructor Harry G. ist ein führender quantitativer Trader für ein HFT-Handelsunternehmen in Chicago. Er hält einen master8217s Grad in der Elektrotechnik und ein master8217s Grad in der Finanzmathematik von der Universität von Chicago. In seiner Freizeit unterrichtet Harry einen Graduiertenkurs in Quantitative Finance an der Loyola University in Chicago. Er ist auch der Autor des quantitativen Handels mit R. November 30, 2016, 12:34 pm Vor ein paar Monaten ein Leser zeigen mir diese neue Art der Verbindung R und Excel. Ich don8217t wissen, wie lange das schon um, aber ich kam nie darüber und I8217ve noch nie einen Blog-Post oder einen Artikel darüber gesehen. So entschied ich mich, einen Pfosten zu schreiben, da das Werkzeug es wirklich wert ist und bevor jemand fragt, I8217m nicht mit dem Unternehmen in irgendeiner Weise verwandt. BERT steht für Basic Excel R Toolkit. It8217s kostenlos (lizenziert unter der GPL v2) und wurde von Structured Data LLC entwickelt. Zum Zeitpunkt des Schreibens der aktuellen Version von BERT ist 1.07. Weitere Informationen finden Sie hier. Aus technischer Sicht ist BERT dafür ausgelegt, laufende R-Funktionen aus Excel-Tabellenzellen zu unterstützen. In Excel Begriffe, it8217s für das Schreiben von benutzerdefinierten Funktionen (UDFs) in R. In diesem Beitrag I8217m nicht zeigen, wie R und Excel interagieren über BERT. Es gibt sehr gute Tutorials hier. Hier und hier. Stattdessen möchte ich Ihnen zeigen, wie ich BERT verwendet, um eine 8220control tower8221 für meinen Handel zu bauen. Meine Trading-Signale werden mit einer langen Liste von R-Dateien erzeugt, aber ich brauche die Flexibilität von Excel, um Ergebnisse schnell und effizient anzuzeigen. Wie oben gezeigt, kann BERT dies für mich tun, aber ich möchte auch die Anwendung auf meine Bedürfnisse anpassen. Durch die Kombination der Power von XML, VBA, R und BERT kann ich eine gut aussehende, aber leistungsstarke Anwendung in Form einer Excel-Datei mit minimalem VBA-Code erstellen. Letztendlich habe ich eine einzige Excel-Datei, die alle notwendigen Aufgaben, um mein Portfolio zu verwalten sammeln: Datenbank-Update, Signalerzeugung, Bestellungen Vorlage etc8230 Mein Ansatz könnte in den 3 Schritten unten aufgeteilt werden: Verwenden Sie XML, um benutzerdefinierte Menüs und Schaltflächen in einem Excel zu erstellen Datei. Die obigen Menüs und Schaltflächen sind im Wesentlichen Aufrufe von VBA-Funktionen. Diese VBA-Funktionen sind Wrapup um R-Funktionen definiert mit BERT. Mit diesem Ansatz kann ich eine klare Unterscheidung zwischen dem Kern meines Codes gehalten in R, SQL und Python und alles, was zum Anzeigen und Formatieren von Ergebnissen in Excel, VBA amp XML gehalten gehalten. In den folgenden Abschnitten präsentiere ich die Voraussetzung für einen derartigen Ansatz und eine Schritt-für-Schritt-Anleitung, die erklärt, wie BERT für die einfache Übergabe von Daten von R an Excel mit minimalem VBA-Code verwendet werden könnte. 1 8211 Laden und installieren Sie BERT von diesem Link. Sobald die Installation abgeschlossen ist, sollten Sie ein neues Add-Ins Menü in Excel mit den Schaltflächen wie unten gezeigt haben. Dies ist, wie BERT in Excel materialisiert. 2 8211 Herunterladen und Installieren von benutzerdefiniertem UI-Editor. Mit dem Custom UI Editor können Sie benutzerdefinierte Menüs und Schaltflächen im Excel-Farbband erstellen. Eine Schritt-für-Schritt-Prozedur ist hier erhältlich. Schritt-für-Schritt-Anleitung 1 8211 R Code: Die untenstehende R-Funktion ist ein sehr einfaches Codebeispiel. Sie berechnet und gibt die Residuen aus einer linearen Regression zurück. Dies ist, was wir in Excel abrufen möchten. Speichern Sie diese in einer Datei namens myRCode. R (ein anderer Name ist fein) in einem Verzeichnis Ihrer Wahl. 2 8211 Funktionen. R in BERT. Aus Excel wählen Sie Add-Ins - gt Home Directory und öffnen Sie die Datei mit dem Namen functions. R. Fügen Sie in dieser Datei den folgenden Code ein. Stellen Sie sicher, dass Sie den richtigen Pfad einfügen. Dies ist nur Sourcing in BERT die R-Datei, die Sie oben erstellt. Dann speichern und schließen Sie die Datei functions. R. Wenn Sie die in Schritt 1 erstellte R-Datei ändern möchten, müssen Sie sie mit der BERT-Schaltfläche 8220Reload Startup File8221 aus dem Menü Add-Ins in Excel 3 neu laden. 8211 In Excel: Erstellen und speichern Sie eine Datei namens myFile. xslm (Jeder andere Name ist fein). Dies ist eine Makro-aktivierte Datei, die Sie im Verzeichnis Ihrer Wahl speichern. Sobald die Datei gespeichert ist schließen Sie es. 4 8211 Öffnen Sie die oben im Custom UI-Editor erstellte Datei: Sobald die Datei geöffnet ist, fügen Sie den folgenden Code ein. Sie sollten so etwas im XML-Editor haben: Grundsätzlich erzeugt dieses Stück XML-Code ein zusätzliches Menü (RTrader), eine neue Gruppe (My Group) und eine benutzerdefinierte Schaltfläche (New Button) im Excel-Band. Sobald you8217re getan, öffnen Sie myFile. xslm in Excel und schließen Sie den Benutzerdefinierten Benutzeroberflächen-Editor. Sie sollten so etwas sehen. 5 8211 VBA-Editor öffnen. Fügen Sie in myFile. xlsm ein neues Modul ein. Fügen Sie den Code unten in das neu erstellte Modul ein. Dadurch werden vorherige Ergebnisse im Arbeitsblatt gelöscht, bevor neue verwaltet werden. 6 8211 Klicken Sie auf Neue Schaltfläche. Gehen Sie nun zur Tabellenkalkulation zurück und klicken Sie im RTrader-Menü auf die Schaltfläche 8220New Button8221. Sie sollten etwas wie das unten erscheinende sehen. Der Leitfaden oben ist eine sehr grundlegende Version dessen, was mit BERT erreicht werden kann, aber es zeigt Ihnen, wie die Macht der mehrere spezifische Werkzeuge, um Ihre eigene benutzerdefinierte Anwendung erstellen kombinieren. Aus meiner Sicht ist das Interesse eines solchen Ansatzes die Möglichkeit, R und Excel offensichtlich miteinander zu verkleben, aber auch über XML - (und Batch-) Stücke von Code aus Python, SQL und mehr aufzunehmen. Das ist genau das, was ich brauchte. Schließlich würde ich neugierig sein, um zu wissen, wenn jemand irgendeine Erfahrung mit BERT hat, 19. August 2016, 9:26 am Wenn das Testen der Handelsstrategien ein allgemeiner Ansatz ist, den Anfangsdatensatz in Beispieldaten zu teilen: der Teil der Daten, die entworfen sind, um zu kalibrieren Das Modell und aus den Beispieldaten besteht: der Teil der Daten, der für die Validierung der Kalibrierung verwendet wird, und um sicherzustellen, dass die in der Stichprobe erzeugte Leistung sich in der realen Welt widerspiegelt. Als Faustregel können etwa 70 der Anfangsdaten für die Kalibrierung (d. h. in der Probe) und 30 für die Validierung (d. H. Aus der Probe) verwendet werden. Dann hilft ein Vergleich der In-und Out der Beispieldaten zu entscheiden, ob das Modell robust genug ist. Dieser Beitrag zielt darauf ab, einen Schritt weiter zu gehen und stellt eine statistische Methode zur Verfügung, um zu entscheiden, ob die Out of Sample-Daten mit dem übereinstimmen, was in Sample erstellt wurde. In der Tabelle unten zeigt die blaue Fläche die Out-of-Sample-Performance für eine meiner Strategien. Eine einfache visuelle Inspektion zeigt eine gute Passform zwischen der in und aus der Probe Leistung aber welches Maß an Vertrauen habe ich in diesem In diesem Stadium nicht viel und das ist das Problem. Was wirklich benötigt wird, ist ein Maß für die Ähnlichkeit zwischen dem Ein - und Auslesen von Beispieldatensätzen. In statistischer Hinsicht könnte dies als die Wahrscheinlichkeit, dass die in-und aus der Probe Leistung Zahlen aus der gleichen Verteilung übersetzt werden. Es gibt einen nichtparametrischen statistischen Test, der genau das macht: den Kruskall-Wallis-Test. Eine gute Definition dieses Tests konnte auf R-Tutor 8220A Sammlung von Daten-Proben gefunden werden unabhängig, wenn sie aus unabhängigen Populationen kommen und die Proben nicht aufeinander einwirken. Mit dem Kruskal-Wallis-Test. Können wir entscheiden, ob die Populationsverteilungen identisch sind, ohne sie der Normalverteilung zu folgen.8221 Der zusätzliche Nutzen dieses Tests geht nicht von einer Normalverteilung aus. Es gibt andere Tests der gleichen Art, die in diesem Rahmen passen könnte. Der Mann-Whitney-Wilcoxon-Test oder die Kolmogorov-Smirnov-Tests würde perfekt auf den Rahmen beschreibt hier aber dies ist über den Rahmen dieses Artikels zu diskutieren, die Vor-und Nachteile der einzelnen Tests. Eine gute Beschreibung zusammen mit R Beispielen finden Sie hier. Hier8217s der Code, der verwendet wird, um das Diagramm oben und die Analyse zu generieren: Im obigen Beispiel ist die Abtastperiode länger als die außerhalb der Abtastperiode, daher habe ich zufällig 1000 Teilmengen der In-Abtastdaten erstellt, von denen jeder die gleiche Länge wie das Out hat Von Probendaten. Dann prüfte ich jede im Beispieluntersatz gegen die aus Beispieldaten heraus und ich notierte die p-Werte. Dieser Prozess erzeugt keinen einzigen p-Wert für den Kruskall-Wallis-Test, sondern eine Verteilung, die die Analyse robuster macht. In diesem Beispiel liegt der Mittelwert der p-Werte deutlich über Null (0,478), was darauf hinweist, dass die Nullhypothese akzeptiert werden sollte: Es gibt starke Beweise dafür, dass das Ein - und Auslesen von Probendaten aus derselben Verteilung stammt. Wie üblich, was in diesem Beitrag ist ein Spielzeugbeispiel, dass nur Kratzer auf der Oberfläche des Problems und sollte auf die individuellen Bedürfnisse zugeschnitten werden. Allerdings denke ich, dass es einen interessanten und rationalen statistischen Rahmen vorschlägt, um die Ergebnisse der Ergebnisse zu bewerten. Dieser Beitrag wird von den beiden folgenden Beiträgen inspiriert: Vigier Alexandre, Chmil Swann (2007), Effekte verschiedener Optimierungsfunktionen auf die Out of Sample Performance genetisch entwickelter Handelsstrategien, Forecasting Financial Markets Konferenz Vigier Alexandre, Chmil Swann (2010), An Optimierung Prozess zur Verbesserung der Probenqualität Konsistenz, ein Stock Market Fall, JP Morgan Cazenove Equity Quantitative Konferenz, London Oktober 2010 Dezember 13, 2015, 2:03 pm Doing quantitative Forschung impliziert eine Menge Daten knirscht und man braucht saubere und zuverlässige Daten zu Dies erreichen. Was wirklich benötigt wird, sind saubere Daten, die leicht zugänglich sind (auch ohne Internetverbindung). Der effizienteste Weg, dies zu tun, für mich war es, eine Reihe von CSV-Dateien zu halten. Offensichtlich kann dieser Prozess in vielerlei Hinsicht behandelt werden, aber ich fand sehr effiziente und einfache Überstunden, um ein Verzeichnis, in dem ich speichern und aktualisieren CSV-Dateien zu halten. Ich habe eine CSV-Datei pro Instrument und jede Datei ist nach dem Instrument, das sie enthält benannt. Der Grund, warum ich das tue, ist zweifach: Zuerst möchte ich (Preis-) Daten von Yahoo, Google etc8230 jedes Mal herunterladen, wenn ich eine neue Idee testen möchte, aber noch wichtiger, sobald ich ein Problem identifiziert und behoben habe, möchte ich es haben Tun Sie es wieder das nächste Mal brauche ich das gleiche Instrument. Einfach und dennoch sehr effizient. Der Prozess ist in der folgenden Tabelle zusammengefasst. In alles, was folgt, nehme ich an, dass Daten von Yahoo kommen. Der Code muss für Daten von Google geändert werden, Quandl etc8230 Darüber hinaus präsentiere ich den Prozess der Aktualisierung der täglichen Preisdaten. Das Setup ist für höhere Frequenzdaten und andere Arten von Datensätzen unterschiedlich (d. h. von den Preisen verschieden). 1 8211 Initialdatendownload (listOfInstruments. R amp historicalData. R) Die DateilisteOfInstruments. R ist eine Datei, die nur die Liste aller Instrumente enthält. Wenn ein Instrument isn8217t Teil meiner Liste (d. H. Keine csv-Datei in meinem Datenordner) oder wenn Sie es tun, zum ersten Mal müssen Sie den ursprünglichen historischen Datensatz herunterladen. Das Beispiel unten lädt eine Menge von ETFs Tagespreise von Yahoo Finance zurück bis Januar 2000 und speichern Sie die Daten in einer CSV-Datei. 2 8211 Vorhandene Daten aktualisieren (updateData. R) Der folgende Code startet von vorhandenen Dateien im dedizierten Ordner und aktualisiert alle nacheinander. Ich laufe in der Regel diesen Prozess Alltag außer wenn I8217m im Urlaub. Um ein neues Instrument hinzuzufügen, führen Sie einfach nur den Schritt 1 für dieses Instrument aus. 3 8211 Erstellen einer Batchdatei (updateDailyPrices. bat) Ein weiterer wichtiger Teil des Jobs ist die Erstellung einer Batch-Datei, die den oben beschriebenen Aktualisierungsvorgang automatisiert (I8217m ein Windows-Benutzer). Dies vermeidet das Öffnen von RRStudio und starten Sie den Code von dort aus. Der folgende Code wird auf einer. bat-Datei platziert (der Pfad muss mit dem Setup des Reader8217 geändert werden). Beachten Sie, dass ich eine Ausgabedatei (updateLog. txt) hinzugefügt, um die Ausführung verfolgen. Das oben genannte Verfahren ist extrem einfach, da es nur beschreibt, wie die täglichen Preisdaten aktualisiert werden. I8217ve verwendet diese für eine Weile und es hat funktioniert sehr reibungslos für mich so weit. Für fortgeschrittenere Daten und höhere Frequenzen können die Dinge viel schwieriger werden. Wie üblich alle Kommentare begrüßen 23. März, 2015, 20.55 Uhr Wenn es um die Verwaltung ein Portfolio von Aktien im Vergleich zu einem Benchmark geht, ist das Problem ganz anders als die Definition einer absoluten Rendite Strategie. In der ehemaligen muss man mehr Aktien halten als in den späteren, wo überhaupt keine Aktien gehalten werden können, wenn es nicht genug Gelegenheit gibt. Der Grund dafür ist der Tracking Error. Dies ist definiert als die Standardabweichung der Portfolio-Rendite abzüglich der Benchmark-Rendite. Je weniger Aktien gehalten werden, desto höher der Tracking Error (z. B. höheres Risiko). Die folgende Analyse ist weitgehend vom Buch 8220Active Portfolio Management8221 von Grinold amp Kahn inspiriert. Dies ist die Bibel für alle, die daran interessiert sind, ein Portfolio gegen eine Benchmark auszuführen. Ich ermutige jedermann mit Interesse am Thema, das Buch vom Anfang bis zum Ende zu lesen. It8217s sehr gut geschrieben und legt die Grundlagen des systematischen aktiven Portfoliomanagements (ich habe keine Zugehörigkeit zum Herausgeber oder den Autoren). 1 8211 Factor Analysis Hier versuchen wir, die Bestände des Anlageuniversums so genau wie möglich zu platzieren. Viele Menschen kamen mit vielen Werkzeugen und unzählige Variante dieser Werkzeuge wurden entwickelt, um dies zu erreichen. In diesem Beitrag konzentriere ich mich auf zwei einfache und weit verbreitete Metriken: Informationskoeffizient (IC) und Quantiles Return (QR). 1.1 8211 Informationskoeffizient Der Horizont für die Forward Return muss vom Analysten definiert werden und es ist eine Funktion der Strategie8217s Umsatz und der Alpha-Zerfall (dies war Gegenstand umfangreicher Forschung). Offensichtlich müssen die ICs in absoluten Werten so hoch wie möglich sein. Für den scharfen Leser wird in dem Buch von Grinold amp Kahn eine Formel, die Information Ratio (IR) und IC verbindet, gegeben: wobei die Breite der Anzahl der unabhängigen Wetten (Trades) ist. Diese Formel ist als das Grundgesetz der aktiven Verwaltung bekannt. Das Problem ist, dass oft, definieren Breite genau ist nicht so einfach wie es klingt. 1.2 8211 Quantiles Return Um eine genauere Schätzung der Faktorvorhersagekraft zu haben, ist es notwendig, einen Schritt weiter zu gehen und die Gruppenbestände durch Quantil von Faktorwerten zu analysieren und dann die durchschnittliche Vorwärts-Rückkehr (oder jede andere zentrale Tendenzmetrik) jedes dieser zu analysieren Quantilen. Die Nützlichkeit dieses Tools ist einfach. Ein Faktor kann eine gute IC haben, aber seine prädiktive Macht kann auf eine kleine Anzahl von Aktien beschränkt sein. Dies ist nicht gut, da ein Portfoliomanager Aktien im gesamten Universum auswählen muss, um seinen Tracking-Error-Constraint zu erfüllen. Gute Quantilrücksendungen zeichnen sich durch eine monotone Beziehung zwischen den einzelnen Quantilen und den Forward Returns aus. Alle Bestände im SampP500-Index (zum Zeitpunkt des Schreibens). Offensichtlich gibt es eine Überlebens-Schiff Bias: die Liste der Aktien im Index hat sich zwischen dem Beginn und dem Ende der Stichprobenperiode erheblich geändert, aber es ist gut genug, um nur zu illustrieren. Der unten stehende Code lädt einzelne Aktienkurse im SampP500 zwischen Januar 2005 und heute (es dauert eine Weile) und verwandelt die Rohpreise in die letzten 12 Monate und in den letzten Monat. Ersteres ist unser Faktor, letzterer wird als Vorwärtsbewegungsmaßnahme verwendet. Unten ist der Code zur Berechnung des Informationskoeffizienten und Quantiles Return. Beachten Sie, dass ich in diesem Beispiel Quintile verwendet habe, aber jede andere Gruppierungsmethode (terciles, deciles etc8230) verwendet werden kann. Es hängt wirklich von der Stichprobengröße, was Sie erfassen möchten und ob Sie einen breiten Überblick oder Fokus auf Verteilungsschwänze haben möchten. Für die Schätzung der Retouren innerhalb jedes Quintils wurde der Median als zentraler Tendenzschätzer verwendet. Diese Maßnahme ist weit weniger empfindlich gegenüber Ausreißern als arithmetisches Mittel. Und schließlich der Code, um die Quantiles Return-Diagramm zu produzieren. 3 8211 Ausnutzen der oben genannten Informationen In der obigen Tabelle ist Q1 am niedrigsten nach 12 Monaten und am höchsten in Q5. Es gibt eine fast monotone Zunahme der Quantilrückkehr zwischen Q1 und Q5, die eindeutig anzeigt, daß Aktien, die in Q5 fallen, jene übersteigen, die in Q1 um ungefähr 1 pro Monat fallen. Das ist sehr wichtig und mächtig für so einen einfachen Faktor (nicht wirklich eine Überraschung though8230). Daher gibt es größere Chancen, um den Index durch Übergewichtung der Bestände fallen in Q5 und Untergewichtung diejenigen, die in Q1 relativ zur Benchmark zu schlagen. Ein IC von 0,0206 könnte nicht bedeuten, viel in sich, aber es8217s deutlich anders als 0 und zeigt eine gute Vorhersagekraft der letzten 12 Monate Rückkehr insgesamt. Formale Signifikanztests können ausgewertet werden, aber dies geht über den Rahmen dieses Artikels hinaus. 4 8211 Praktische Einschränkungen Das vorstehende Rahmenprogramm eignet sich hervorragend für die Bewertung der Investitionen, aber es gibt eine Reihe praktischer Einschränkungen, die für die Umsetzung im realen Leben angegangen werden müssen: Rebalancing. In der obigen Beschreibung wurde davon ausgegangen, dass am Ende eines jeden Monats das Portfolio vollständig ausgeglichen ist. Dies bedeutet, dass alle Aktien im Q1 untergewichtet sind und alle Aktien, die in Q5 fallen, im Vergleich zur Benchmark übergewichtet sind. Dies ist aus praktischen Gründen nicht immer möglich: Manche Bestände könnten aus dem Anlageuniversum ausgeschlossen werden, es bestehen Einschränkungen hinsichtlich der Industrie oder des Sektors, es bestehen Einschränkungen für den Umsatz etc8230 Transaktionskosten. Dies ist in der obigen Analyse nicht berücksichtigt worden, und dies ist eine ernsthafte Bremse für die praktische Umsetzung. Umsatzüberlegungen werden in der Regel im realen Leben in Form einer Strafe auf Faktorqualität umgesetzt. Übertragungskoeffizient. Dies ist eine Erweiterung des Grundgesetzes des aktiven Managements und es entspannt die Annahme von Grinold8217s Modell, dass Führungskräfte keine Zwänge, die sie aus der Umsetzung ihrer Investitionen Einblicke direkt in Portfolio-Wetten auszuschließen. Und schließlich, I8217m überrascht, was in weniger als 80 Zeilen Code mit R8230 erreicht werden kann Wie üblich alle Kommentare begrüßen 14. März 2014, 1:07 pm Die Frage, die man immer fragen sollte, wenn er mit technischen Indikatoren ist das, was wäre ein Ziel Kriterien für die Auswahl von Indikatoren (zB, warum mit einem 14 Tage RSI anstatt 15 oder 20 Tage). Genetische Algorithmen (GA) sind gut geeignete Werkzeuge, um diese Frage zu beantworten. In diesem Beitrag I8217ll zeigen Ihnen, wie Sie das Problem in R. einrichten. Bevor ich die übliche Mahnung: Was ich in diesem Beitrag ist nur ein Spielzeug-Beispiel und nicht eine Einladung zu investieren. Es ist nicht eine fertige Strategie, sondern eine Forschungsidee, die weiter erforscht, entwickelt und auf die individuellen Bedürfnisse zugeschnitten werden muss. Was sind genetische Algorithmen Die beste Beschreibung von GA Ich stieß auf stammt aus Cybernatic Trading ein Buch von Murray A. Ruggiero. 8220Genetische Algorithmen wurden von John Holland Mitte 1970 erfunden, um harte Optimierungsprobleme zu lösen. Diese Methode verwendet natürliche Selektion, Überleben der fittest8221. Der allgemeine Prozess folgt den Schritten unten: Kodieren Sie das Problem in Chromosomen Unter Verwendung der Kodierung entwickeln Sie eine Eignungfunktion für Gebrauch, wenn jeder chromosome8217s Wert beim Lösen eines gegebenen Problems initialisiert wird eine Population der Chromosomen initialisieren Jedes Chromosom in der Bevölkerung auswerten Schaffen Sie neue Chromosomen, indem Sie zwei kombinieren Chromosomen. Dies geschieht durch Muting und Rekombination von zwei Eltern zu zwei Kindern (Eltern werden nach dem Zufallsprinzip, aber voreingenommen durch ihre Fitness ausgewählt) Evaluieren Sie das neue Chromosom Löschen Sie ein Mitglied der Bevölkerung, die weniger fit als das neue Chromosom und fügen Sie das neue Chromosom in der Bevölkerung . Wenn das Stoppkriterium erreicht ist (maximale Anzahl von Generationen, Fitness-Kriterien ist gut genug8230), dann geben Sie das beste Chromosom alternativ gehen Sie zu Schritt 4 Aus einer Handelsperspektive GA sind sehr nützlich, weil sie gut im Umgang mit höchst nichtlineare Probleme sind. Allerdings zeigen sie einige böse Features, die erwähnenswert sind: Über Anpassung: Dies ist das Hauptproblem und es ist bis zum Analytiker, um das Problem in einer Weise, die dieses Risiko minimiert. Rechenzeit. Wenn das Problem nicht richtig definiert ist, kann es extrem lang sein, eine anständige Lösung zu erreichen, und die Komplexität steigt exponentiell mit der Anzahl der Variablen. Daher die Notwendigkeit, die Parameter sorgfältig auszuwählen. Es gibt mehrere R-Pakete im Umgang mit GA, entschied ich mich, die am häufigsten verwenden: rgenoud Tägliche Schlusskurse für die meisten flüssigen ETFs von Yahoo Finanzen gehen zurück bis Januar 2000. Die in Probe Zeitraum geht von Januar 2000 bis Dezember 2010. Die Out of Sample-Periode beginnt am Januar 2011. Die Logik ist wie folgt: die Fitness-Funktion ist über die in Stichprobenperiode optimiert, um eine Reihe von optimalen Parameter für die ausgewählten technischen Indikatoren zu erhalten. Die Leistung dieser Indikatoren wird dann in der Probeperiode ausgewertet. Aber vorher müssen die technischen Indikatoren ausgewählt werden. Der Aktienmarkt weist zwei Hauptmerkmale auf, die jedermann mit irgendeiner Handelserfahrung vertraut sind. Langfristige Dynamik und kurzfristige Umkehr. Diese Merkmale können durch technische Indikatoren übersetzt werden durch: Durchschneiden von Durchschnitten und RSI. Dies stellt einen Satz von 4 Parametern dar: Rückblickperioden für lange und kurzfristige bewegte Durchschnitte, Rückblickperiode für RSI - und RSI-Schwelle. Die Sätze der Parameter sind die Chromosomen. Das andere Schlüsselelement ist die Fitnessfunktion. Vielleicht möchten wir so etwas wie: Maximum Return oder Sharpe Ratio oder Minimum Average Drawdown verwenden. Im Folgenden habe ich beschlossen, die Sharpe-Verhältnis zu maximieren. Die R-Implementierung ist ein Satz von 3 Funktionen: fitnessFunction. Definiert die Fitnessfunktion (z. B. maximales Sharpe-Verhältnis), die innerhalb der GA-Motor-TradingStatistics verwendet werden soll. Zusammenfassung der Handelsstatistiken für die in und aus der Stichprobenperioden für Vergleichszwecke genud. Die GA-Engine aus dem Rgenoud-Paket Die Genoud-Funktion ist ziemlich komplex, aber I8217m nicht zu erklären, was jeder Parameter bedeutet, wie ich diesen Beitrag zu halten (und die Dokumentation ist wirklich gut) wollen. In der folgenden Tabelle sind für jedes Instrument die optimalen Parameter (RSI-Rückblickperiode, RSI-Schwellenwert, Short Term Moving Average und Long Term Moving Average) sowie die Ein - und Ausgänge der Musterhandelsstatistiken dargestellt. Bevor ich die obigen Ergebnisse kommentiere, möchte ich einige wichtige Punkte erklären. Um die oben definierte Logik zu erfüllen, beschränkte ich die Parameter, um sicherzustellen, dass die Rückblickperiode für den langfristigen gleitenden Durchschnitt immer länger ist, dass der kürzere gleitende Durchschnitt. Ich beschränkte den Optimierer auch darauf, nur die Lösungen mit mehr als 50 Trades in der Probeperiode zu wählen (z. B. statistische Signifikanz). Insgesamt sind die Ergebnisse der Stichprobe bei weitem nicht beeindruckend. Die Renditen sind niedrig, auch wenn die Anzahl der Trades klein ist, um das Ergebnis wirklich bedeutend zu machen. Allerdings gibt es einen signifikanten Wirkungsgradverlust zwischen der In - und Outperiode der Stichprobenperioden für Japan (EWJ), was sehr wahrscheinlich eine übermäßige Anpassung bedeutet. Dieser Beitrag soll dem Leser die Werkzeuge geben, um GA in einem quantitativen Handelsrahmen richtig zu nutzen. Noch einmal, It8217s nur ein Beispiel, das weiter verfeinert werden muss. Ein paar potenzielle Verbesserung zu erforschen wäre: Fitness-Funktion. Maximierung der Sharpe-Ratio ist sehr einfach. Eine Funktion 8220smarter8221 würde sicherlich das Muster der Musterhandelsstatistiken verbessern. Versuchen wir, ein sehr einfaches Muster zu erfassen. Eine mehr Tiefe Muster Forschung ist definitiv erforderlich. Optimierung. Gibt es viele Möglichkeiten, um die Art und Weise der Optimierung durchgeführt wird. Dies würde sowohl die Berechnungsgeschwindigkeit als auch die Rationalität der Ergebnisse verbessern. Der Code, der in diesem Beitrag verwendet wird, ist auf einem Gist-Repository verfügbar. Wie üblich alle Kommentare willkommen 28. Februar 2014, 15.52 Uhr Es gibt eine enorme Menge an Literatur sowohl akademische und empirische über Markt Prognose. Die meiste Zeit vermischt er zwei Marktmerkmale: Magnitude und Direction. In diesem Artikel möchte ich auf die Ermittlung der Marktrichtung nur konzentrieren. Das Ziel, das ich mir selbst gesetzt habe, ist es, Marktbedingungen zu identifizieren, wenn die Chancen signifikant zu einem Up - oder Down-Markt voreingenommen sind. Dieser Beitrag gibt ein Beispiel dafür, wie CART (Classification and Regression Trees) in diesem Zusammenhang verwendet werden kann. Bevor ich die übliche Mahnung mache: Was ich in diesem Beitrag vorstelle, ist nur ein Spielzeugbeispiel und keine Einladung zu investieren. Es ist nicht eine fertige Strategie, sondern eine Forschungsidee, die weiter erforscht, entwickelt und auf die individuellen Bedürfnisse zugeschnitten werden muss. 1 8211 Was ist CART und warum es verwendet Von Statistiken, CART sind eine Reihe von Techniken für die Klassifizierung und Vorhersage. Die Technik zielt auf die Erzeugung von Regeln ab, die den Wert einer Ausgangs - (Ziel-) Variablen aus bekannten Werten von Prädiktor - (erklärenden) Variablen vorhersagen. Aus Wikipedia, Algorithmen für den Bau Entscheidungsbäume in der Regel arbeiten top-down, indem Sie eine Variable bei jedem Schritt, der am besten die Menge der Elemente spaltet. Verschiedene Algorithmen verwenden verschiedene Metriken für die Messung 8220best8221. Diese messen in der Regel die Homogenität der Zielvariablen innerhalb der Teilmengen. Diese Metriken werden auf jede Kandidat-Teilmenge angewendet, und die resultierenden Werte werden kombiniert (z. B. gemittelt), um ein Maß für die Qualität der Teilung zu liefern. Die CART-Methodik weist einige Eigenschaften auf, die sich sehr gut für die Marktanalyse eignen: Nicht parametrisch. CART kann jede Art von statistischen Verteilungen verarbeiten Nicht linear. CART kann ein großes Spektrum an Abhängigkeiten zwischen Variablen verarbeiten (z. B. nicht auf lineare Beziehungen beschränkt) Robust gegenüber Ausreißern Es gibt verschiedene R-Pakete, die sich mit rekursiver Partitionierung beschäftigen, verwende ich hier rpart für Bäume Schätzung und rpart. plot für Bäume Zeichnung. 2 8211 Daten amp Experiment Design Tägliche OHLC Preise für die meisten flüssigen ETFs von Januar 2000 bis Dezember 2013 extrahiert aus Google Finanzen. Die Stichprobenperiode reicht von Januar 2000 bis Dezember 2010, der Rest des Datensatzes ist die Probezeit. Vor jeder Analyse muss der Datensatz für die Aufgabe vorbereitet werden. Die Zielvariable ist die wöchentliche ETF-Vorwärtsbewegung, die als zwei Zustände des Weltergebnisses (UP oder DOWN) definiert ist. Wenn wöchentliche Vorwärts-Rückkehr gt 0 dann der Markt im UP-Zustand, DOWN-Zustand anders Die erklärenden Variablen sind ein Satz von technischen Indikatoren, die aus dem anfänglichen täglichen OHLC-Datensatz abgeleitet werden. Jeder Indikator repräsentiert ein gut dokumentiertes Marktverhalten. Um das Rauschen in den Daten zu reduzieren und zu versuchen, robuste Beziehungen zu identifizieren, wird jede unabhängige Variable als binäres Ergebnis betrachtet. Volatilität (VAR1). Hohe Volatilität ist in der Regel mit einem Down-Markt und niedrige Volatilität mit einem up-Markt verbunden. Die Volatilität ist definiert als der 20-Tage-Roh-ATR (Average True Range) auf seinen gleitenden Durchschnitt (MA) verteilt. Wenn Roh-ATR gt MA dann VAR1 1, sonst VAR1 -1. Kurzzeitimpuls (VAR2). Der Aktienmarkt weist ein kurzfristiges Impulsverhalten auf, das hier durch einen 5-Tage-Simple Moving Averages (SMA) erfasst wird. Wenn Preis gt SMA dann VAR2 1 sonst VAR2 -1 Langzeitimpuls (VAR3). Der Aktienmarkt weist ein langfristiges Impulsverhalten auf, das hier durch ein 50-Tage-Simple Moving Averages (LMA) erfasst wird. Wenn Preis gt LMA dann VAR3 1 sonst VAR3 -1 Kurzfristige Umkehrung (VAR4). Dies wird von der CRTDR erfasst, die für Close Relative To Daily Range steht und wie folgt berechnet wird:. Wenn CRTDR gt 0,5, dann VAR4 1 sonst VAR4 -1 Autokorrelationsregime (VAR5). Der Aktienmarkt tendiert dazu, Perioden von negativen und positiven Autokorrelationsregimen zu durchlaufen. Bei Rückkehr Autokorrelation über die letzten 5 Tage gt 0 dann VAR5 1 sonst VAR5 -1 Ich unter ein Baumbeispiel mit einigen Erklärungen In den Baum oben ist der Weg zum Knoten 4 zu erreichen: VAR3 gt0 (Langzeit-Momentum gt 0) und VAR4 Gt 0 (CRTDR gt 0). Das rote Rechteck zeigt an, daß es sich um ein DOWN-Blatt (z. B. Endknoten) mit einer Wahrscheinlichkeit von 58 (1 8211 0,42) handelt. Im Markt bedeutet dies, dass, wenn Long Term Momentum ist und CRTDR gt 0,5 ist dann die Wahrscheinlichkeit einer positiven Rückkehr nächste Woche 42 basierend auf der in Probe Beispieldaten. 18 gibt den Anteil des Datensatzes an, der in diesen Endknoten (z. B. Blatt) fällt. Es gibt viele Möglichkeiten, die oben genannten Ansatz zu verwenden, entschied ich mich zu schätzen und kombinieren alle möglichen Bäume. Aus den Beispieldaten sammle ich alle Blätter von allen möglichen Bäumen und sammle sie in eine Matrix. Dies ist die 8220rules matrix8221 geben die Wahrscheinlichkeit der nächsten Woche beeing UP oder DOWN. Ich verwende die Regeln in der oben genannten Matrix auf die von Beispieldaten (Jan 2011 8211 Dez 2013) und ich vergleiche die Ergebnisse mit dem realen Ergebnis. Das Problem bei diesem Ansatz ist, dass ein einzelner Punkt (Woche) in mehrere Regeln fallen kann und sogar zu UP und DOWN Regeln gleichzeitig gehören. Deshalb beantrage ich ein Wahlsystem. Für eine bestimmte Woche fasse ich alle Regeln zusammen, die für diese Woche gelten, die eine 1 für eine UP-Regel und -1 für eine DOWN-Regel gibt. Wenn die Summe größer als 0 ist, wird die Woche als UP klassifiziert, wenn die Summe negativ ist, und wenn die Summe gleich 0 ist, wird es in dieser Woche keine Position geben (Rückkehr 0). Die obige Methode wird auf einen Wert angewendet Satz von sehr flüssigen ETFs. I-Diagramm unter dem aus Probe Eigenkapital Kurven zusammen mit der Kauf-und Hold-Strategie über den gleichen Zeitraum. Erste Ergebnisse scheinen ermutigend, auch wenn die Qualität des Ergebnisses stark variiert durch Instrument. Allerdings gibt es einen riesigen Raum für Verbesserungen. Ich habe unten einige Richtungen für die weitere Analyse Pfad Optimalität. Der hier verwendete Algorithmus zum Definieren der Bäume ist bei jedem Split optimal, aber es garantiert nicht die Optimalität des Pfades. Das Hinzufügen einer Metrik zur Messung der Optimalität des Pfades würde sicherlich die obigen Ergebnisse verbessern. Andere Variablen. Ich wählte die erklärenden Variablen ausschließlich auf Erfahrung basiert. Es ist sehr wahrscheinlich, dass diese Wahl weder gut noch optimal ist. Backtest-Methode. Ich benutzte eine einfache Methode In und Out von Beispiel. In einem formelleren Backtest würde ich lieber ein rollenden oder expandierenden Fenster von In - und Out-Beispiel-Subperioden verwenden (z. B. Walk-Forward-Analyse). Wie üblich, werden alle Kommentare begrüßt


No comments:

Post a Comment