Friday 10 February 2017

Gleitender Mittelwert Algorithmus Python

Zipline Beginner Tutorial Zipline ist ein Open-Source-algorithmischen Handel Simulator in Python geschrieben. Einige Vorteile sind: Realistisch: Schlupf, Transaktionskosten, Auftragsverzögerungen. Stream-based: Prozess jedes Ereignis einzeln, vermeidet Blick-Vorneigung. Batterien enthalten: Gemeinsame Umwandlungen (gleitender Durchschnitt) sowie gemeinsame Risiko-Berechnungen (Sharpe). Entwickelt und kontinuierlich aktualisiert von Quantopian, die eine einfach zu bedienende Web-Schnittstelle zu Zipline, 10 Jahre langer Auflösung historische US-Aktien-Daten und Live-Trading-Funktionen bietet. Dieses Tutorial richtet sich an Benutzer, die Zipline ohne Verwendung von Quantopian verwenden möchten. Wenn Sie stattdessen wollen, um auf Quantopian zu beginnen, sehen Sie hier. Dieses Tutorial geht davon aus, dass Sie Zipline richtig installiert haben, finden Sie in der Installationsanleitung, wenn Sie haven8217t eingerichtet Zipline noch. Jeder Zipline-Algorithmus besteht aus zwei Funktionen, die Sie definieren müssen: initialize (context) handledata (Kontext, Daten) Vor dem Start des Algorithmus ruft Zipline die Funktion initialize () auf und übergibt eine Kontextvariable. Kontext ist ein persistenter Namensraum, in dem Sie Variablen speichern können, auf die Sie von einer Algorithmusiteration zum nächsten zugreifen müssen. Nachdem der Algorithmus initialisiert wurde, ruft zipline die handledata () - Funktion einmal für jedes Ereignis auf. Bei jedem Anruf übergibt es die gleiche Kontextvariable und einen Ereignisrahmen, der Daten mit der aktuellen Handelsbar mit offenen, hohen, niedrigen und geschlossenen Preisen (OHLC) sowie Volumen für jeden Bestand in Ihrem Universum enthält. Weitere Informationen zu diesen Funktionen finden Sie im entsprechenden Teil der Quantopian-Dokumente. Mein erster Algorithmus Lets einen Blick auf einen sehr einfachen Algorithmus aus dem Beispielverzeichnis, buyapple. py: Wie Sie sehen können, müssen wir zunächst einige Funktionen importieren, die wir verwenden möchten. Alle in Ihrem Algorithmus verwendeten Funktionen finden Sie in zipline. api. Hier verwenden wir order (), der zwei Argumente umfasst: ein Sicherheitsobjekt und eine Zahl, die angibt, wie viele Bestände Sie bestellen möchten (falls negativ, order () sellshort Aktien). In diesem Fall möchten wir bei jeder Iteration 10 Aktien von Apple bestellen. Weitere Dokumentation zur Bestellung (). Siehe die Quantopian-Dokumente. Schließlich ermöglicht die Funktion record (), den Wert einer Variablen bei jeder Iteration zu speichern. Sie geben ihr einen Namen für die Variable zusammen mit der Variablen an: varnamevar. Nachdem der Algorithmus fertig ist, haben Sie Zugriff auf jeden Variablenwert, den Sie mit record () unter dem von Ihnen angegebenen Namen verfolgt haben (wir sehen das weiter unten). Sie sehen auch, wie wir auf die aktuellen Preisdaten des AAPL-Bestandes im Datenereignisrahmen zugreifen können (weitere Informationen finden Sie hier) Algorithmus ausführen Um nun diesen Algorithmus auf Finanzdaten zu testen, bietet zipline drei Schnittstellen: Eine Befehlszeilenschnittstelle, IPython Notebook-Magie und runalgorithm () Eingeben von Daten Wenn Sie haven8217t die Daten aufgenommen haben, führen Sie: wo ltbundlegt ist der Name des Bündels zu ingest, standardmäßig auf quantopian-quandl. Sie können die Einnahme Daten Abschnitt für weitere Details (Z. B. cmd. exe unter Windows oder die Terminal-App unter OSX): Wie Sie sehen können, gibt es ein paar Flags, die angeben, wo Sie Ihre finden können Algorithmus (-f) sowie Parameter, die angeben, welche Daten verwendet werden sollen, wobei auf den Quantopian Quandl-WIKI-Mirror zurückgegriffen wird, gibt es auch Argumente für den Zeitraum, in dem der Algorithmus über (--start und --end) ausgeführt werden soll Um die Performance-Metriken Ihres Algorithmus zu speichern, damit Sie analysieren können, wie er durchgeführt wurde. Dies geschieht über das Flag --output und wird die Performance DataFrame im Pickle-Python-Dateiformat schreiben. Beachten Sie, dass Sie auch eine Konfigurationsdatei mit diesen Parametern definieren können, die Sie dann bequem an die Option - c übergeben können, so dass Sie die Befehlszeile args nicht immer zur Verfügung stellen müssen (siehe die. conf-Dateien im Beispielverzeichnis). Um den Algorithmus von oben auszuführen und die Ergebnisse auf buyappleout. pickle zu speichern, wird zipline folgendermaßen aufgerufen: run führt zuerst die initialize () - Funktion auf und strömt dann den historischen Aktienkurs tagesaktuell durch handledata (). Nach jedem Aufruf von handledata () weisen wir Zipline an, 10 Aktien von AAPL zu bestellen. Nach dem Aufruf der Funktion order () gibt die Zipline den bestellten Bestand und den Betrag im Orderbuch ein. Nachdem die Funktion handledata () beendet ist, sucht zipline nach offenen Befehlen und versucht sie zu füllen. Wenn das Handelsvolumen hoch genug für diese Aktie ist, wird die Order nach dem Hinzufügen der Provision ausgeführt und das Slippage-Modell angewendet, das den Einfluss Ihrer Order auf den Aktienkurs modelliert, so dass Ihr Algorithmus mehr als nur den Aktienkurs 10 berechnet wird. (Beachten Sie, dass Sie auch das Provisions - und Slippage-Modell ändern können, das die Zipline verwendet, siehe Quantopian Docs für weitere Informationen). Werfen wir einen Blick auf die Performance DataFrame. Dazu verwenden wir Pandas aus dem IPython Notebook und drucken die ersten zehn Zeilen aus. Beachten Sie, dass Zipline starken Gebrauch von Pandas macht. Vor allem für die Dateneingabe und Ausgabe so lohnt es sich, einige Zeit zu verbringen, um es zu lernen. 5 Zeilen 39 Spalten Wie Sie sehen können, gibt es eine Zeile für jeden Handelstag ab dem ersten Geschäftstag 2000. In den Spalten finden Sie verschiedene Informationen über den Zustand Ihres Algorithmus. Die erste Spalte AAPL wurde dort durch die oben genannte Funktion record () platziert und erlaubt uns, den Preis von Apfel zu plotten. So konnten wir z. B. leicht untersuchen, wie sich unser Portfoliowert im Laufe der Zeit gegenüber dem AAPL-Aktienkurs veränderte. Wie Sie sehen können, entspricht unsere Algorithmenleistung, wie sie vom portfoliovalue bewertet wird, eng mit dem des AAPL-Aktienkurses. Dieses ist nicht überraschend, da unser Algorithmus nur AAPL jede mögliche Chance kaufte, die es bekam. IPython Notebook Das IPython Notebook ist eine sehr leistungsfähige browserbasierte Schnittstelle zu einem Python-Interpreter (dieses Tutorial wurde darin geschrieben). Da es bereits die De-facto-Schnittstelle für die meisten quantitativen Forscher zipline bietet eine einfache Möglichkeit, Ihren Algorithmus in das Notebook laufen, ohne dass Sie die CLI verwenden müssen. Um es zu verwenden, müssen Sie Ihren Algorithmus in eine Zelle schreiben und lassen Sie zipline wissen, dass es diesen Algorithmus laufen soll. Dies geschieht über die Zipline IPython Magic-Befehl, die verfügbar ist, nachdem Sie importieren Zipline aus dem IPython Notebook. Diese Magie nimmt dieselben Argumente wie die oben beschriebene Befehlszeilenschnittstelle. Um also den Algorithmus von oben mit den gleichen Parametern auszuführen, müssen wir nur die folgende Zelle ausführen, nachdem wir Zipline importiert haben, um die Magie zu registrieren. Beachten Sie, dass wir keine Eingabedatei wie oben angeben müssen, da die Magie den Inhalt der Zelle verwendet und dort nach Ihren Algorithmusfunktionen sucht. Anstatt eine Ausgabedatei zu definieren, geben wir einen Variablennamen mit - o an, der im Namensraum erstellt wird und die Performance DataFrame enthält, die wir oben betrachtet haben. Zugang zu vorherigen Preisen mit Hilfe der Historie Arbeitsbeispiel: Dual Moving Average Cross-Over Der Dual Moving Average (DMA) ist eine klassische Impulsstrategie. It8217s wahrscheinlich von keinem ernsthaften Händler mehr verwendet, aber ist immer noch sehr lehrreich. Die Grundidee besteht darin, dass wir zwei rollierende oder gleitende Durchschnitte (mavg) 8211 mit einem längeren Fenster berechnen, das langfristige Trends erfassen soll und ein kürzeres Fenster, das kurzfristige Trends erfassen soll. Sobald der Short-mavg den Long-Mavg von unten kreuzt, nehmen wir an, dass der Aktienkurs nach oben Momentum und lange den Bestand hat. Wenn der Short-Mavg von oben kreuzt, verlassen wir die Positionen, wenn wir annehmen, dass der Bestand weiter sinkt. Da wir Zugang zu früheren Preisen haben müssen, um diese Strategie umzusetzen, brauchen wir ein neues Konzept: History history () ist eine Bequemlichkeitsfunktion, die ein rollendes Datenfenster für Sie hält. Das erste Argument ist die Anzahl der Balken, die Sie sammeln möchten, das zweite Argument ist die Einheit (entweder 1d für 1m, aber beachten Sie, dass Sie minutengenaue Daten für die Verwendung von 1m haben müssen). Für eine ausführlichere Beschreibung history () 8216s Funktionen, siehe die Quantopian docs. Let8217s Blick auf die Strategie, die dies deutlich machen sollte: Hier definieren wir explizit eine Analyse () - Funktion, die automatisch aufgerufen wird, sobald der Backtest durchgeführt wird (dies ist bei Quantopian derzeit nicht möglich). Obwohl es vielleicht nicht direkt offensichtlich ist, kann die Macht der Geschichte () (Wortspiel beabsichtigt) nicht unterschätzt werden, da die meisten Algorithmen vorherige Marktentwicklungen in einer Form oder anderen nutzen. Sie könnten leicht eine Strategie entwickeln, die einen Klassifikator mit scikit-learn trainiert, der künftige Marktbewegungen basierend auf vergangenen Preisen vorhersagen will (beachten Sie, dass die meisten Scikit-Learn-Funktionen numpy. ndarray s anstelle von pandas. DataFrame s benötigen Kann einfach das zugrundeliegende ndarray eines DataFrame über. values ​​übergeben). Wir haben auch die Funktion ordertarget () verwendet. Diese und andere Funktionen wie es kann Auftragsmanagement und Portfolio-Rebalancing viel einfacher machen. Weitere Informationen finden Sie in der Quantopian-Dokumentation zu Bestellfunktionen. Fazit Wir hoffen, dass dieses Tutorial Ihnen einen kleinen Einblick in die Architektur, API und Features der Zipline gegeben hat. Für die nächsten Schritte finden Sie einige Beispiele. Downloaden Sie die neueste Version für Mac OS X Downloaden Sie die neueste Quellversion Download der neuesten Version für Windows Downloaden Sie die neuesten Versionen von Python OpenPGP Public Keys Quelle und binäre ausführbare Dateien werden vom Release-Manager unterzeichnet Ihren OpenPGP-Schlüssel. Die Release-Manager und Binär-Builder seit Python 2.3 wurden: Hinweis: Barrys-Schlüssel-ID A74B06BF wird verwendet, um die Python 2.6.8 und 2.6.9 Releases zu signieren. Seine Schlüssel-ID EA5BBD71 wurde verwendet, um alle anderen Python 2.6- und 3.0-Versionen zu signieren. Seine Schlüssel-ID ED9D77D5 ist ein v3-Schlüssel und wurde verwendet, um ältere Releases zu signieren. Sie können die öffentlichen Schlüssel des öffentlichen Verwalters importieren, indem Sie entweder die öffentliche Schlüsseldatei von hier herunterladen und dann ausführen oder indem Sie die einzelnen Schlüssel direkt aus dem Keyserver-Netzwerk abrufen, indem Sie diesen Befehl ausführen: Auf den versionsspezifischen Download-Seiten sollten Sie einen Link zu sehen Sowohl die herunterladbare Datei als auch eine freistehende Signaturdatei. Um die Echtheit des Downloads zu überprüfen, packen Sie beide Dateien und führen Sie diesen Befehl aus: Beachten Sie, dass Sie den Namen der Signaturdatei verwenden müssen und Sie sollten die für den Download passende Version verwenden. (Diese Anleitung richtet sich an GnuPG - und Unix-Befehlszeilenbenutzer.) Beiträge zu anderen Plattformen und OpenPGP-Anwendungen sind willkommen.) Weitere nützliche Gegenstände Auf der Suche nach Drittanbieter-Python-Modulen. Der Paketindex hat viele davon. Sie können die Standarddokumentation online ansehen oder in HTML, PostScript, PDF und anderen Formaten herunterladen. Siehe die Seite "Hauptdokumentation". Informationen zu den Tools zum Entpacken von Archivdateien finden Sie auf python. org. Tipp. Auch wenn Sie eine fertige Binärdatei für Ihre Plattform herunterladen, ist es sinnvoll, auch die Quelle herunterzuladen. Auf diese Weise können Sie die Standardbibliothek (das Unterverzeichnis Lib) und die Standardsammlungen von Demos (Demo) und Tools (Tools) durchsuchen, die mitgeliefert werden. Theres viel, das Sie von der Quelle lernen können Es gibt auch eine Ansammlung Emacs Pakete, die das Emacsing Pythoneer nützlich finden könnte. Dies beinhaltet große Modi für die Bearbeitung von Python, C, C, Java, etc. Python-Debugger-Schnittstellen und vieles mehr. Die meisten Pakete sind mit Emacs und XEmacs kompatibel. Möchten Sie beitragen Möchten Sie beitragen Weitere Informationen zum Verwalten der Python-Entwicklung finden Sie im Python-Entwicklerhandbuch.


No comments:

Post a Comment