Gleitender Mittelwert Quantmod
Moving Averages in R Nach meinem besten Wissen hat R keine integrierte Funktion zur Berechnung der gleitenden Mittelwerte. Mit der Filterfunktion können wir jedoch eine kurze Funktion für gleitende Mittelwerte schreiben: Wir können die Funktion auf beliebigen Daten verwenden: mav (data) oder mav (data, 11), wenn wir eine andere Anzahl von Datenpunkten angeben wollen Als die Standard-5-Plotterarbeiten wie erwartet: plot (mav (data)). Zusätzlich zu der Anzahl der Datenpunkte, über die gemittelt wird, können wir auch das Seitenargument der Filterfunktionen ändern: sides2 verwendet beide Seiten, Seiten1 verwendet nur vergangene Werte. Share this: Post navigation Kommentar-Navigation Comment navigationWant, um einige schnelle, detaillierte technische Analyse der Apple-Aktienkurs mit R Theres ein Paket für die Das Quantmod-Paket können Sie entwickeln, testen und Bereitstellung von statistisch basierten Handelsmodellen zu tun. Es stellt die Infrastruktur zum Herunterladen / Importieren von Daten aus einer Vielzahl von Standorten bereit, analysiert diese Daten und erzeugt Diagramme, die die statistischen Trends bestimmen. Ich schätze Digital Dude ruft dieses Paket zu meiner Aufmerksamkeit in einem aktuellen Kommentar. Ich bemerkte auch, dass Revolution Analytics das Paket auf seiner Finanzseite hervorgehoben hatte. Eigentlich war ich vor einigen Monaten auf quantmod gestoßen - und es hat mich sofort über die Macht von R. aufgeregt. Um Ihnen eine Vorstellung von der typischen Nutzung zu vermitteln, erstellt das Folgende ein Aktiendiagramm der letzten drei Monate von Apple-Aktiendaten. GetSymbols (quotAAPLquot) chartSeries (AAPL, subset39last 3 months39) addBBands () Die Funktion getSymbols wird verwendet, um Bestandsdaten abzurufen. Die Daten können an mehreren Stellen entstehen. In dem obigen Beispiel erhalten wir eine einzelne Aktie, Apple. Wenn Sie mehrere verschiedene Aktienkurse herunterladen möchten, können Sie dies in einem einzigen Befehl tun. Sobald Sie die Bestandsdaten abgerufen haben, können Sie sich schnell auf Teilmengen von Daten konzentrieren. Sie können auch Daten zusammenführen, um Vergleiche anzuzeigen. Der Befehl chartSeries erzeugt die oben abgebildete Darstellung. Es erfasst eine große Menge an Informationen, das Datum, öffnen und schließen Preis und Volumen des Handels für jeden Tag. Schließlich fügt der addBBands () - Aufruf Bollinger Bands dem Diagramm hinzu. Informell entspricht dies einer Linie, die einen gleitenden Durchschnitt und zwei Zeilen eine Standardabweichung oberhalb und unterhalb dieses gleitenden Durchschnitts angibt. Für die Nichtinitiierten können technische Indikatoren (und Overlays) in vier Kategorien aufgeteilt werden: Trend, Volatilität, Momentum und Volumen. Die in Quantmod verfügbaren sind unten aufgelistet. R-ChartA-Leitfaden für R quantmod Paket: Erste Schritte Das quantmod-Paket für R wurde entwickelt, um den quantitativen Trader bei der Entwicklung, dem Testen und dem Einsatz statistisch basierter Handelsmodelle zu unterstützen. Es ist ein Rapid Prototyping-Umfeld, wo Enthusiasten können verschiedene technische Indikatoren mit minimalem Aufwand erkunden. Es bietet Charting-Einrichtungen, die nicht verfügbar ist an anderer Stelle in R. Quantmod Paket macht Modellierung einfacher und Analyse einfach. Dieser Artikel soll einige Funktionen von quantmod unter Verwendung von Beispielmarktdaten darstellen. Die Eigenschaften von quantmod werden in drei Abschnitten, Herunterladen von Daten, Charting, technischen Indikatoren und anderen Funktionen dargestellt. Ohne viel Aufwand, sehen wir die Verwendung von quantmod Paket. Herunterladen von Daten Sobald das Quantmod-Paket installiert ist und die Bibliothek geladen ist, führen Sie den folgenden Befehl aus, um die Daten des Apfelstocks in die R-Konsole zu laden. Verschieben von Durchschnitten mit weniger Whipsaws Das bewegte Durchschnittssystem ist bei weitem besser. Erstens können wir es 2: 1 (so dass CAGR bis zu etwa 13 bringen) und immer noch, unsere maximale Abnahme wird mit dem Kauf und halten vergleichbar sein. Darüber hinaus it8217s auf dem Markt nur 70 8211 weniger Risiko und vermutlich die Renditen können weiter gesteigert werden, indem man das Geld in alternative Anlagen zu arbeiten. Ein Problem bei diesen Systemen sind Whipsaws. Das System funktioniert gut, wenn der Preis weg von dem gleitenden Durchschnitt bleibt. Allerdings, in der Nähe, muss man in / Ausfahrt in Folge verlieren Geld auf dem Weg. Eine Möglichkeit, dieses Problem anzugehen, besteht darin, eine Alternative 8220line8221 zum Auslösen der Exits (oder der Einträge für diese Angelegenheit) zu verwenden. Es könnte ein Prozentsatz Band, aber that8217s kaum universal. Bessere Volatilität in Bild bringen. Let8217s tun etwas robuster als Abbildung. Zuerst wenden wir den gleitenden Durchschnitt nicht auf die Preise an, sondern auf die Renditen (eine Interpretation von David Varadi8217s Error Adjusted Momentum). Die 8220cushioned8221 System geht lange, wenn der Durchschnitt wird positiv, aber zum Austritt, lässt es einige Kissen unter dem gleitenden Durchschnitt. Was können wir erzielen Avg Annual Drawdown Um Äpfel mit Äpfeln vergleichen, haben wir zwei Systeme hinzugefügt. Die erste (synchronisierte EA) verwendet fehlerangepasste Rückkehr zum Berechnen des SMA, tritt jedoch ein und verlässt, wenn der SMA die 0-Linie kreuzt. Die 8220cushioned8221 Version ist das System, das durch den obigen Code implementiert wird. Auch wenn man bedenkt, dass die neuen Strategien länger im Markt bleiben, scheint es eine leichte Verbesserung zu geben. Aber das ist nicht der Punkt. Die 8220cushioned8221 Ansatz hat 4 Trades insgesamt 8211 es für die beiden Bärenmärkte verlassen. That8217s über 4 Trades. Der nicht gepolsterte Ansatz hatte 80 Trades. Mission erfüllt mit anderen Worten. Comments Hi, Können Sie bitte erklären, die Logik hinter der angepassten returns Formel adj. rets sqrt (runSum (retsrets, 10) / 9). Auch woher kommt das 10/9 Gewicht aus warum nicht 10/10 Vielen Dank Ich muss etwas in Ihrem Code fehlen: Rets sind Positives und Negative, aber adj. rets sind alle positiv (Sie quadriert die rets), daher ist sma immer positiv Und daher gibt es nie ein Verkaufssignal. Ihre adj. rets geht höher, da die Renditen kleiner werden (dh, peak adj. rets gegen Ende der Bärenmärkte). Habe ich nur ein Zeichen verloren irgendwo Nicht ausgeführt R, sondern Umsetzung dieses als Test in meinem eigenen System und nicht immer, was ich erwartet hatte. Ps. I8217d nie gehört, mit einem einfachen SMA 200 wie diese (wahrscheinlich wegen all der whipsaws), so hätte erwartet, dass Sie ein Todeskreuz / goldenes Kreuz (SMA 50/200) statt zu testen. Gold / Tod Kreuz ist sehr nahe vergleichbar mit Ihren berichteten EA-Ergebnisse (für beide CAGR und max Drawdown) von meinem testing8230 aber I8217d gerne Ihre EA arbeiten, um für mich zu sehen. Ah. Ich glaube, Sie sollten 8220rets8221 in der sma-Berechnung anstelle von 8220adj. rets8221 setzen. It8217s nicht klar aus diesem R-Code, was der Zeitraum für Ihre rets ist (dh, eine 1-tägige Rückkehr 1-Monats-Rendite), aber wenn ich eine 21-Bar-Rückkehr mit täglichen Daten verwenden, bekomme ich eine EA, die vergleichbar mit Ihnen ist (CAGR 9,5, Exposition 75, max DD 19,3). Aber so weit kann nicht Cushioned EA über 10 CAGR, so wird weiter arbeiten, um zu sehen, wenn I8217m richtig Duplizieren Sie Ihren Algorithmus. Nun, ich hatte einen Fehler im Code 8211 sehen die Kommentare und den Code. Entschuldigen Sie. Ja, man kann die Rückkehr direkt verwenden, aber aus meiner Erfahrung ist es besser, sie für Volatilität zu normalisieren. Eine Möglichkeit, dies zu tun, ist es, eine kurze SD (oder SD mit 0 für den Mittelwert, wie ich) zu nehmen und teilen Sie die Rendite durch diesen Wert. Lets Get Rich sehen, wie und R kann Ihr Wissen über die Finanzmärkte bereichern Check out Meine neue Klasse auf quantativer und technischer Analyse mit quantmod und finanziellen Daten: 25 Coupon zu meinem neuen Udemy-Kurs - Praktische Datenwissenschaft: Analysieren von Aktienmarktdaten mit R-Paketen, die in diesem Walkthrough verwendet werden - Finanzdaten - und Modellierungswerkzeuge - Umgang mit zeitbasierten Daten Klassen - Schnelle Modellierung Algorithmus - Bereich Unter der Kurve (AUC) - Funktionen Diese exemplarische Vorgehensweise besteht aus zwei Teilen: Der erste Teil ist eine sehr grundlegende Einführung in quantmod und, wenn Sie havent es vorher verwendet und benötigen grundlegenden Zugang zu täglichen Börsen-und Charting, Dann sind Sie in für eine große Leckerei. Der zweite Teil geht tiefer in quantitative Finanzen durch die Nutzung quantmod für den Zugriff auf alle Aktien des NASDAQ 100 Index, um ein Vokabular von Marktbewegungen und versuchen zu prognostizieren, ob die folgenden Handelstage volumne höher oder niedriger sein wird. Quantmod steht für Quantitative Financial Modeling und Trading Framework für R Es hat viele Funktionen, so check out die Hilfedatei für eine vollständige Abdeckung oder die Quantmods offizielle Website. Lets sehen, wie Amazon in letzter Zeit getan hat: Die Funktion getSymbols hat die täglichen Daten bis Januar 2007 heruntergeladen. Die Funktion barChart zeigt die Daten nach einem themenbasierten Parameter (siehe Hilfedatei) an. Nicht schlecht für 2 Zeilen Code. Es wird besser - sehen, wie einfach es ist, ein volles Aktiendiagramm mit Indikatoren in nur 3 Zeilen Code anzeigen: Quantmod nutzt Yahoo, um seine Finanzdaten zu erhalten. Im obigen Beispiel repräsentiert GSPC den SampP 500 Index. Die meisten finanziellen Produktsymbole sind einfach wie MSFT für Microsoft. Für Indizes und andere esoterische Symbole siehe finance. yahoo/lookup, um zu sehen, wie sie es abgekürzt haben. ChartSeries ist einfach und zeichnet, was Symbol in den Speicher mit getSymbols heruntergeladen wurde. AddBBands Funktion wird Bollinger Bands um Ihre Preisreihe. Es gibt viele Möglichkeiten, das Display anzupassen, für einige Beispiele schauen Sie sich die Quantmod Gallery an. Wenn man tiefer in quantitative Finanzen übergeht, kann ein Muster-basiertes System entworfen werden, um vorherzusagen, ob ein bestimmtes Finanzprodukt eine Erhöhung oder einen Rückgang des Volumens am folgenden Handelstag sehen wird. Nun verwenden Sie quantmod, um alle Aktien herunterzuladen, die den NASDAQ 100 Index zusammensetzen. Dann gut zusammen verschmelzen alle unsere Zeitreihen, um sie zu synchronisieren. Dies wird die Daten nach Zeit zusammenfassen und füllen Sie alle fehlenden Daten mit NA s: Seien Sie gewarnt, dass dies ein wenig Zeit dauert, wie quantmod drosselt den Download. Jedes Symbol wird im Speicher unter dem Symbolnamen geladen, daher haben wir über 100 neue Objekte im Speicher geladen, mit jeweils jahrelanger Marktdaten. Da es sich um unabhängige Zeitreihen handelt, müssen wir alles zusammenfassen und fehlende Daten füllen, damit alles in einem Datenrahmen gut passt. Nutzen Sie die Funktion merge. xts, um alle diese Objekte zeitlich zu einem Datenrahmen zusammenzufassen: Jetzt haben wir eine Handvoll jahrelanger Marktdaten für jeden Bestand im NASDAQ 100 Index. Wir müssen etwas mit ihm tun. Wurde eine Vielzahl von Maßnahmen zwischen Preis-und Volumenpunkte zu schaffen. Die Idee ist es, Lagerbewegungen als Muster zu quantifizieren, indem man einen Tag gegenüber einem vorherigen abzieht. Nun erstellen Sie eine Reihe von Unterschiede: 1 Tag versus 2 Tage vor 1 Tag versus 3 Tagen vor 1 Tag versus 5 Tagen vor 1 Tag versus vor 20 Tagen (ähnlich einem 20 Tage gleitenden Durchschnitt) Erstellen der Ergebnis-Variable Dies ist das Herz des Systems Und seine ein bisschen langweilig so festhalten. Was wir versuchen, vorherzusagen, ob das nächste Börsentagesvolumen für ein gewähltes Symbol höher oder niedriger als der aktuelle Handelstag sein wird (dies muss nicht das Volumenfeld von FISV sein, es könnte das Hoch oder Schließen eines anderen Symbols sein Die wir haben Daten): Verschieben Sie das Ergebnis versuchten zu prognostizieren, ein Handelstag mit der Lag-Funktion. Dieses fügt das Volumenfeld unseres Resultatsymbols mit einer Verzögerung von 1 Handelstag hinzu, also sein auf der gleichen Linie wie die Prädiktoren. Wir werden uns auf diesen Wert zu Trainings - und Testzwecken verlassen. Ein Wert von 1 bedeutet, dass die Lautstärke steigt, und eine 0., dass es nach unten ging: Geben Sie das Datumsfeld ein, um das Datum einzugeben, wie es aktuell vom Typzeichen ist, und sortieren Sie nach der Reihenfolge: Hier ist die Mustermacherfunktion. Dies wird unsere Rohdaten Markt und skalieren, so dass wir jedes Symbol mit jedem anderen Symbol zu vergleichen. Es subtrahiert dann die verschiedenen Tagesbereiche, die von dem Tage-Parameter angefordert werden, unter Verwendung der diff - und lag-Aufrufe und legt sie alle auf die gleiche Zeile zusammen mit dem Ergebnis. Um die Dinge noch kompatibler zu machen, kann der roundByScaler Parameter Ergebnisse abrunden. Rufen Sie die Funktion mit den folgenden Unterschieden an und skalieren Sie sie auf 2 Dezimalstellen (dies dauert eine Weile, bis sie ausgeführt wird): Wir löschen die letzte Zeile aus unserem Datenrahmen, da es keine Ergebnisvariable (die in der Zukunft ist):
Comments
Post a Comment