Wednesday 8 November 2017

D & M System Handel


November 30, 2016, 12:34 pm Vor ein paar Monaten ein Leser zeigen mich, 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 verwendet, um anzuzeigen und zu formatieren Ergebnisse in Excel, VBA amp XML gehalten halten. 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 zu kombinieren, um Ihre eigene benutzerdefinierte Anwendung zu bauen. Aus meiner Sicht ist das Interesse eines solchen Ansatzes die Möglichkeit, R und Excel offensichtlich zusammenzukleben, aber auch über XML - (und Batch-) Stücke von Code aus Python, SQL und mehr einzubinden. 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 folgenden beiden 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 Eine quantitative Forschung bedeutet, dass viele Daten knacken und man braucht sauber und zuverlässig Daten zu 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). Dadurch wird das Öffnen von R / RStudio vermieden und der Code wird von dort aus ausgeführt. Der unten stehende Code wird auf einer. bat-Datei platziert (der Pfad muss mit dem reader8217s-Setup 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 fortgeschrittene Daten und / oder höhere Frequenzen kann es viel schwieriger werden. Wie üblich alle Kommentare begrüßen 15. August 2015, 21:03 Die Asset Management-Branche ist am Rande einer großen Veränderung. In den letzten Jahren sind Robots Advisors (RA) als neue Spieler entstanden. Der Begriff selbst ist schwer zu definieren, da er eine breite Palette von Dienstleistungen umfasst. Einige sind entworfen, um traditionelle Berater zu helfen, ihre Klienten Geld zuzuteilen und einige sind reales 8220black box8221. Der Benutzer gibt ein paar Kriterien ein (Alter, Einkommen, Kinder etc.8230) und der Roboter schlägt eine maßgeschneiderte Zuordnung vor. Zwischen diesen beiden Extremen steht eine breite Palette von Angeboten zur Verfügung. Ich fand die Wikipedia-Definition ziemlich gut. 8220Die sind eine Klasse von Finanzberater, die Portfolio-Management online mit minimalem menschlichen Eingriff8221 bietet. Genauer gesagt nutzen sie das Algorithmus-basierte Portfolio-Management, um das gesamte Leistungsspektrum eines traditionellen Beraters anzubieten: Dividenden-Reinvestition, Compliance-Berichte, Portfolio-Rebalancing, Steuererleichterungen etc8230 (das ist es, was die quantitative Investitionsgemeinschaft seit Jahrzehnten tut). Die Industrie ist noch in den Kinderschuhen mit den meisten Spielern noch verwalten eine kleine Menge an Geld, aber ich nur realisiert, wie tief die Veränderung war, wenn ich in New York vor ein paar Tagen war. Wenn RA ihre Namen auf TV-Hinzufügungen oder auf dem Dach der NYC-Kabine bekommt, weiß man, dass etwas Großes passiert8230 es wird immer mehr Aufmerksamkeit von den Medien und vor allem macht es viel Sinn aus der Perspektive eines Investors. Es gibt tatsächlich zwei Hauptvorteile bei der Verwendung von RA: Deutlich niedrigere Gebühren gegenüber traditionellen Berater Investition wird transparenter und einfacher, die attraktiver für Menschen mit begrenzten finanziellen Kenntnisse ist In diesem Beitrag R ist nur eine Entschuldigung, schön zu präsentieren, was ist ein wichtiger Trend in Die Asset-Management-Branche. Die Grafik unten zeigt die Marktanteile der beliebtesten RA am Ende des Jahres 2014. Der Code verwendet, um das Diagramm unten zu erstellen finden Sie am Ende dieser Stelle zu finden und die Daten sind hier. Diese Zahlen sind ein wenig datiert gegeben, wie schnell diese Branche entwickelt, sind aber immer noch sehr informativ. Es überrascht nicht, dass der Markt von US-Anbietern wie Wealthfront und Betterment dominiert wird, aber RA auf der ganzen Welt auftauchen: Asien (8Now), Schweiz (InvestGlass), Frankreich (Marie Quantier) 8230. Es fängt an, wesentlich zu beeinflussen, wie traditionelle Vermögensverwalter Geschäfte machen. Ein herausragendes Beispiel ist die Partnerschaft zwischen Fidelity und Betterment. Seit Dezember 2014 Betterment an der 2-Milliarden-Marke AUM. Trotz alledem denke ich, dass die wirkliche Veränderung vor uns liegt. Weil sie weniger Vermittler und niedrige Provisionsprodukte (wie ETFs) verwenden, verlangen sie viel niedrigere Gebühren als traditionelle Berater. RA wird sicherlich gewinnen erhebliche Marktanteile, aber sie werden auch senkt Gebühren von der Industrie als Ganzes berechnet. Letztendlich wird es die Art und Weise beeinflussen, wie traditionelle Wertpapierfirmen Geschäfte tätigen. Ein aktives Portfoliomanagement, das seit einigen Jahren eine harte Zeit hat, wird noch mehr leiden. Die hohen Gebühren wird es noch schwerer zu rechtfertigen, es sei denn, es neu erfindet. Eine weitere potenzielle Auswirkung ist der Anstieg der ETFs und der niedrigen Provisions-Finanzprodukte im Allgemeinen. Offensichtlich hat dies vor einer Weile begonnen, aber ich denke, der Effekt wird noch mehr ausgeprägt sein in den kommenden Jahren. Neue Generationen von ETFs verfolgen komplexere Indizes und maßgeschneiderte Strategien. Dieser Trend wird unweigerlich stärker. Wie üblich alle Kommentare willkommen Juli 7, 2015, 8:04 Uhr Es gibt viele R-Zeitreihen Tutorials schwimmenden auf dem Internet dieser Beitrag ist nicht entworfen, um einer von ihnen sein. Stattdessen möchte ich eine Liste der nützlichsten Tricks vorstellen, die ich im Umgang mit finanziellen Zeitreihen in R. stieß. Einige der hier präsentierten Funktionen sind unglaublich mächtig, aber leider in der Dokumentation begraben daher mein Wunsch, einen dedizierten Beitrag zu schaffen. Ich habe nur Adresse täglich oder niedrigere Frequenz mal Serie. Der Umgang mit höherfrequenten Daten erfordert spezielle Werkzeuge: data. table oder Hochfrequenzpakete sind einige davon. Xts. Das xts-Paket ist das Muss, wenn es um Zeitreihen in R geht. Das Beispiel unten lädt das Paket und schafft eine tägliche Zeitreihe von 400 Tagen normal verteilten Renditen merge. xts (Paket xts): Das ist unglaublich mächtig, wenn es dazu kommt Binden zwei oder mehrmals zusammen, ob sie die gleiche Länge haben oder nicht. Das Join-Argument tut die Magie, die es bestimmt, wie die Bindung getan wird apply. yearly / apply. monthly (Paket xts): Wenden Sie eine bestimmte Funktion auf jede einzelne Periode in einem gegebenen Zeitreihenobjekt an. Im folgenden Beispiel werden die monatlichen und jährlichen Ergebnisse der zweiten Serie im tsInter-Objekt berechnet. Beachten Sie, dass ich die Summe der Renditen (keine Compoundierung) Endpunkte (Paket xts) verwenden: Extrahieren Sie Indexwerte eines gegebenen xts-Objekts entsprechend den letzten Beobachtungen, Das Beispiel gibt den letzten Tag der Monatsrenditen für jede Serie im tsInter-Objekt mit Endpunkt an, um das Datum auszuwählen. Na. locf (package zoo): Generische Funktion zum Ersetzen jedes NA mit dem letzten Nicht-NA vor ihm. Extrem nützlich beim Umgang mit einer Zeitreihe mit ein paar 8220holes8221 und wenn diese Zeitreihe wird anschließend als Eingabe für eine R-Funktionen, die nicht akzeptiert, Argumente mit NAs verwendet. Im Beispiel erstelle ich eine Zeitreihe von zufälligen Preisen, dann künstlich ein paar NAs in sie und ersetzen sie mit dem jüngsten Wert. Charts. PerformanceSummary (Paket PerformanceAnalytics): Für eine Reihe von Renditen erstellen Sie ein Reichtum-Index-Diagramm, Balken für Per-Periode Leistung und Unterwasser-Diagramm für Drawdown. Dies ist unglaublich nützlich, da es in einem einzigen Fenster alle relevanten Informationen für eine schnelle Sichtprüfung einer Handelsstrategie anzeigt. Im folgenden Beispiel wird die Preisreihe in ein xts-Objekt umgewandelt und dann ein Fenster mit den oben beschriebenen 3 Diagrammen angezeigt. Die Liste oben ist nicht erschöpfend, aber sobald Sie beherrschen die Funktionen beschreiben in diesem Post macht es die Manipulation von finanziellen Zeitreihen viel einfacher, der Code kürzer und die Lesbarkeit des Codes besser. 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 ist das Problem sehr unterschiedlich von der 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 welcomeNovember 30, 2016, 12:34 pm Vor ein paar Monaten ein Leser zeigen mich, 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 an 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 sammelt, um mein Portfolio zu verwalten: Datenbank-Update, Signalerzeugung, Auftragserteilung 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 verwendet, um anzuzeigen und zu formatieren Ergebnisse in Excel, VBA amp XML gehalten halten. 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 zu kombinieren, um Ihre eigene benutzerdefinierte Anwendung zu bauen. Aus meiner Sicht ist das Interesse eines solchen Ansatzes die Möglichkeit, R und Excel offensichtlich zusammenzukleben, aber auch über XML - (und Batch-) Stücke von Code aus Python, SQL und mehr einzubinden. 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. This post is inspired by the following two papers: Vigier Alexandre, Chmil Swann (2007), Effects of Various Optimization Functions on the Out of Sample Performance of Genetically Evolved Trading Strategies, Forecasting Financial Markets Conference Vigier Alexandre, Chmil Swann (2010), An optimization process to improve in/out of sample consistency, a Stock Market case, JP Morgan Cazenove Equity Quantitative Conference, London October 2010 December 13, 2015, 2:03 pm Doing quantitative research implies a lot of data crunching and one needs clean and reliable data to achieve this. What is really needed is clean data that is easily accessible (even without an internet connection). The most efficient way to do this for me has been to maintain a set of csv files. Obviously this process can be handled in many ways but I found very efficient and simple overtime to maintain a directory where I store and update csv files. I have one csv file per instrument and each file is named after the instrument it contains. The reason I do so is twofold: First, I don8217t want to download (price) data from Yahoo, Google etc8230 every time I want to test a new idea but more importantly once I identified and fixed a problem, I don8217t want to have to do it again the next time I need the same instrument. Simple yet very efficient so far. The process is summarized in the chart below. In everything that follows, I assume that data is coming from Yahoo. The code will have to be amended for data from Google, Quandl etc8230 In addition I present the process of updating daily price data. The setup will be different for higher frequency data and other type of dataset (i. e. different from prices). 1 8211 Initial data downloading (listOfInstruments. R amp historicalData. R) The file listOfInstruments. R is a file containing only the list of all instruments. If an instrument isn8217t part of my list (i. e. no csv file in my data folder) or if you do it for the very first time you have to download the initial historical data set. The example below downloads a set of ETFs daily prices from Yahoo Finance back to January 2000 and store the data in a csv file. 2 8211 Update existing data (updateData. R) The below code starts from existing files in the dedicated folder and updates all of them one after the other. I usually run this process everyday except when I8217m on holiday. To add a new instrument, simply run step 1 above for this instrument alone. 3 8211 Create a batch file (updateDailyPrices. bat) Another important part of the job is creating a batch file that automates the updating process above (I8217m a Windows user). This avoids opening R/RStudio and run the code from there. The code below is placed on a. bat file (the path has to be amended with the reader8217s setup). Note that I added an output file (updateLog. txt) to track the execution. The process above is extremely simple because it only describes how to update daily price data. I8217ve been using this for a while and it has been working very smoothly for me so far. For more advanced data and/or higher frequencies, things can get much trickier. As usual any comments welcome August 15, 2015, 9:03 pm The Asset Management industry is on the verge of a major change. Over the last couple of years Robots Advisors (RA) have emerged as new players. The term itself is hard to define as it encompasses a large variety of services. Some are designed to help traditional advisers to better allocate their clients money and some are real 8220black box8221. The user enter a few criteria (age. income, children etc8230) and the robot proposes a tailor-made allocation. Between those two extremes a full range of offers is available. I found the Wikipedia definition pretty good. 8220They are a class of financial adviser that provides portfolio management online with minimal human intervention8221. More precisely they use algorithm-based portfolio management to offer the full spectrum of services a traditional adviser would offer: dividend reinvesting, compliance reports, portfolio rebalancing, tax loss harvesting etc8230 (well this is what the quantitative investment community is doing for decades). The industry is still in its infancy with most players still managing a small amount of money but I only realised how profound the change was when I was in NYC a few days ago. When RA get their names on TV adds or on the roof of NYC cab you know something big is happening8230 it is getting more and more attention from the media and above all it makes a lot of sense from an investor perspective. There are actually two main advantages in using RA: Significantly lower fees over traditional advisers Investment is made more transparent and simpler which is more appealing to people with limited financial knowledge In this post R is just an excuse to present nicely what is a major trend in the asset management industry. The chart below shows the market shares of most popular RA as of the end of 2014. The code used to generate the chart below can be found at the end of this post and the data is here . Those figures are a bit dated given how fast this industry evolves but are still very informative. Not surprisingly the market is dominated by US providers like Wealthfront and Betterment but RA do emerge all over the world: Asia (8Now ), Switzerland (InvestGlass ), France (Marie Quantier )8230. It is starting to significantly affect the way traditional asset managers are doing business. A prominent example is the partnership between Fidelity and Betterment. Since December 2014 Betterment past the 2 billion AUM mark. Despite all the above, I think the real change is ahead of us. Because they use less intermediaries and low commission products (like ETFs) they charge much lower fees than traditional advisers. RA will certainly gain significant market shares but they will also lowers fees charged by the industry as a whole. Ultimately it will affect the way traditional investment firms do business. Active portfolio management which is having a tough time for some years now will suffer even more. The high fees it charges will be even harder to justify unless it reinvents itself. Another potential impact is the rise of ETFs and low commission financial products in general. Obviously this has started a while ago but I do think the effect will be even more pronounced in the coming years. New generations of ETFs track more complex indices and custom made strategies. This trend will get stronger inevitably. As usual any comments welcome July 7, 2015, 8:04 am There are many R time series tutorials floating around on the web this post is not designed to be one of them. Instead I want to introduce a list of the most useful tricks I came across when dealing with financial time series in R. Some of the functions presented here are incredibly powerful but unfortunately buried in the documentation hence my desire to create a dedicated post. I only address daily or lower frequency times series. Dealing with higher frequency data requires specific tools: data. table or highfrequency packages are some of them. xts . The xts package is the must have when it comes to times series in R. The example below loads the package and creates a daily time series of 400 days normaly distributed returns merge. xts (package xts): This is incredibly powerful when it comes to binding two or more times series together whether they have the same length or not. The join argument does the magic it determines how the binding is done apply. yearly/apply. monthly (package xts): Apply a specified function to each distinct period in a given time series object. The example below calculates monthly and yearly returns of the second series in the tsInter object. Note that I use the sum of returns (no compounding) endpoints (package xts): Extract index values of a given xts object corresponding to the last observations given a period specified by on. The example gives the last day of the month returns for each series in the tsInter object using endpoint to select the date. na. locf (package zoo): Generic function for replacing each NA with the most recent non-NA prior to it. Extremely useful when dealing with a time series with a few 8220holes8221 and when this time series is subsequently used as input for an R functions that does not accept arguments with NAs. In the example I create a time series of random prices then artificially includes a few NAs in it and replace them with the most recent value. charts. PerformanceSummary (package PerformanceAnalytics): For a set of returns, create a wealth index chart, bars for per-period performance, and underwater chart for drawdown. This is incredibly useful as it displays on a single window all the relevant information for a quick visual inspection of a trading strategy. The example below turns the prices series into an xts object then displays a window with the 3 charts described above. The list above is by no means exhaustive but once you master the functions describe in this post it makes the manipulation of financial time series a lot easier, the code shorter and the readability of the code better. As usual any comments welcome March 23, 2015, 8:55 pm When it comes to managing a portfolio of stocks versus a benchmark the problem is very different from defining an absolute return strategy. In the former one has to hold more stocks than in the later where no stocks at all can be held if there is not good enough opportunity. The reason for that is the tracking error . This is defined as the standard deviation of the portfolio return minus the benchmark return. The less stocks is held vs. a benchmark the higher the tracking error (e. g higher risk). The analysis that follows is largely inspired by the book 8220Active Portfolio Management8221 by Grinold amp Kahn. This is the bible for anyone interested in running a portfolio against a benchmark. I strongly encourage anyone with an interest in the topic to read the book from the beginning to the end. It8217s very well written and lays the foundations of systematic active portfolio management (I have no affiliation to the editor or the authors). 1 8211 Factor Analysis Here we8217re trying to rank as accurately as possible the stocks in the investment universe on a forward return basis. Many people came up with many tools and countless variant of those tools have been developed to achieve this. In this post I focus on two simple and widely used metrics: Information Coefficient (IC) and Quantiles Return (QR). 1.1 8211 Information Coefficient The horizon for the forward return has to be defined by the analyst and it8217s a function of the strategy8217s turnover and the alpha decay (this has been the subject of extensive research). Obviously ICs must be as high as possible in absolute terms. For the keen reader, in the book by Grinold amp Kahn a formula linking Information Ratio (IR) and IC is given: with breadth being the number of independent bets (trades). This formula is known as the fundamental law of active management . The problem is that often, defining breadth accurately is not as easy as it sounds. 1.2 8211 Quantiles Return In order to have a more accurate estimate of the factor predictive power it8217s necessary to go a step further and group stocks by quantile of factor values then analyse the average forward return (or any other central tendency metric) of each of those quantiles. The usefulness of this tool is straightforward. A factor can have a good IC but its predictive power might be limited to a small number of stocks. This is not good as a portfolio manager will have to pick stocks within the entire universe in order to meet its tracking error constraint. Good quantiles return are characterised by a monotonous relationship between the individual quantiles and forward returns. All the stocks in the SampP500 index (at the time of writing). Obviously there is a survival ship bias: the list of stocks in the index has changed significantly between the start and the end of the sample period, however it8217s good enough for illustration purposes only. The code below downloads individual stock prices in the SampP500 between Jan 2005 and today (it takes a while) and turns the raw prices into return over the last 12 months and the last month. The former is our factor, the latter will be used as the forward return measure. Below is the code to compute Information Coefficient and Quantiles Return. Note that I used quintiles in this example but any other grouping method (terciles, deciles etc8230) can be used. it really depends on the sample size, what you want to capture and wether you want to have a broad overview or focus on distribution tails. For estimating returns within each quintile, median has been used as the central tendency estimator. This measure is much less sensitive to outliers than arithmetic mean. And finally the code to produce the Quantiles Return chart. 3 8211 How to exploit the information above In the chart above Q1 is lowest past 12 months return and Q5 highest. There is an almost monotonic increase in the quantiles return between Q1 and Q5 which clearly indicates that stocks falling into Q5 outperform those falling into Q1 by about 1 per month. This is very significant and powerful for such a simple factor (not really a surprise though8230). Therefore there are greater chances to beat the index by overweighting the stocks falling into Q5 and underweighting those falling into Q1 relative to the benchmark. An IC of 0.0206 might not mean a great deal in itself but it8217s significantly different from 0 and indicates a good predictive power of the past 12 months return overall. Formal significance tests can be evaluated but this is beyond the scope of this article. 4 8211 Practical limitations The above framework is excellent for evaluating investments factor8217s quality however there are a number of practical limitations that have to be addressed for real life implementation: Rebalancing . In the description above, it8217s assumed that at the end of each month the portfolio is fully rebalanced. This means all stocks falling in Q1 are underweight and all stocks falling in Q5 are overweight relative to the benchmark. This is not always possible for practical reasons: some stocks might be excluded from the investment universe, there are constraints on industry or sector weight, there are constraints on turnover etc8230 Transaction Costs . This has not be taken into account in the analysis above and this is a serious brake to real life implementation. Turnover considerations are usually implemented in real life in a form of penalty on factor quality. Transfer coefficient . This is an extension of the fundamental law of active management and it relaxes the assumption of Grinold8217s model that managers face no constraints which preclude them from translating their investments insights directly into portfolio bets. And finally, I8217m amazed by what can be achieved in less than 80 lines of code with R8230 As usual any comments welcome

No comments:

Post a Comment