Wednesday 29 November 2017

Ta Lib Bollinger Bands Beispiel


Python Algorithmic Trading Library PyAlgoTrade ist eine Python Algorithmic Trading Library mit Fokus auf Backtesting und Unterstützung für Papierhandel und Live-Trading. Lets sagen, Sie haben eine Idee für eine Handelsstrategie und youd mögen es mit historischen Daten auswerten und sehen, wie es sich verhält. PyAlgoTrade ermöglicht es Ihnen, dies mit minimalem Aufwand zu tun. Hauptmerkmale Vollständig dokumentiert. Ereignisgesteuert . Unterstützt Markt-, Limit-, Stop - und StopLimit-Aufträge. Unterstützt Yahoo Finance, Google Finance und NinjaTrader CSV Dateien. Unterstützt jede Art von Zeitreihendaten im CSV-Format, zB Quandl. Bitcoin Handelsunterstützung durch Bitstamp. Technische Indikatoren und Filter wie SMA, WMA, EMA, RSI, Bollinger Bands, Hurst Exponent und andere. Performance-Metriken wie Sharpe-Ratio und Drawdown-Analyse. Umgang mit Twitter-Events in Echtzeit. Event-Profiler TA-Lib-Integration. Sehr einfach zu skalieren horizontal, das heißt, mit einem oder mehreren Computern zu backtest eine Strategie. PyAlgoTrade ist kostenlos, Open Source, und es ist unter der Apache Lizenz lizenziert, Version 2.0.Release Notes 8. September 2016 Erweiterungen Fügt vorwärts füllen Checkpoint Tabellen für die Blaze Core Loader. Dies ermöglicht es dem Lader, die Daten effizienter zu füllen, indem er das niedrigere Datum kapselt, das es bei der Abfrage von Daten suchen muss. Die Checkpoints sollten neuartige Deltas angewendet haben (1276). VagrantFile aktualisiert, um alle dev-Anforderungen einzubeziehen und ein neues Bild zu verwenden (1310). Erlaube Korrelationen und Regressionen zwischen zwei 2D-Faktoren zu berechnen, indem sie Berechnungen asset-weise (1307) durchführen. Filter wurden standardmäßig Windowsafe hergestellt. Jetzt können sie als Argumente an andere Filter, Faktoren und Klassifikatoren (1338) weitergegeben werden. Es wurde ein optionaler groupby-Parameter hinzugefügt. oben(). Und unten (). (1349). Neue Pipeline-Filter hinzugefügt, alle und alle. Die einen anderen Filter aufnimmt und True zurückgibt, wenn ein Asset für alle Tage in den vorherigen Fensterlängestagen (1358) einen True erzeugt hat. Neue Pipeline Filter hinzugefügt AtLeastN. Die einen anderen Filter und einen int N nimmt und True zurückgibt, wenn ein Asset ein True on N oder mehr Tage in den vorherigen windowlennth Tagen (1367) produziert hat. Verwenden Sie externe Bibliothek empyrisch für Risikoberechnungen. Empyrisch vereinheitlicht die Risiko-Metrik-Berechnungen zwischen pyfolio und zipline. Empyrisch fügt benutzerdefinierte Jahresoptionsoptionen für die Rückgabe von benutzerdefinierten Frequenzen hinzu. (855) Aroonfaktor hinzufügen (1258) Schnellstochastischer Oszillatorfaktor hinzufügen. (1255) Dockerfile hinzufügen. (1254) Neuer Handelskalender, der Sitzungen unterstützt, die sich über Mitternacht erstrecken, z. B. 24 Stunden 6:01 PM-6:00PM Sitzungen für Futures-Handel. Zipline. utils. tradingcalendar ist jetzt veraltet. (1138) (1312) Erlaube das Slicing einer einzelnen Spalte aus einem FactorFilterClassifier. (1267) Denimoku-Cloud-Faktor bereitstellen (1263) Standardparameter auf Pipeline-Terme zulassen. (1263) Geben Sie die Änderungsrate an. (1324) Geben Sie einen linear gewichteten gleitenden Mittelfaktor an. (1325) NotNullFilter hinzufügen. (1345) Erlaube Kapitaländerungen durch einen Zielwert zu definieren. (1337) TrueRange Faktor hinzufügen. (1348) Fügen Sie Punkt in der Zeit-Lookups zu assets. db hinzu. (1361) Machen Sie Cantrade bewusst der Asset8217s Austausch. (1346) Add-Sample-Methode auf alle berechenbaren Begriffe. (1394) QuantopianUSFuturesCalendar hinzufügen. (1414) Freigeben der Veröffentlichung von alten assets. db Versionen. (1430) Zeitplan für Futures-Handelskalender aktivieren. (1442) Demonstration von Regressionen der Länge 1. (1466) Experimentell Fügen Sie Unterstützung für kommende Future - und Equity-History-Fenster hinzu und aktivieren Sie den zukünftigen Datenzugriff über das Datenportal. (1435) (1432) Bug Fixes Änderungen AverageDollarVolume Eingebauter Faktor, um fehlende Nah - oder Volumenwerte als 0 zu behandeln. Bisher wurden NaNs einfach vor der Mittelung weggeworfen, wobei die restlichen Werte zu viel Gewicht (1309) gegeben wurden. Entfernen Sie die risikofreie Rate aus der Berechnung des Sharpe-Verhältnisses. Das Verhältnis ist nun der Durchschnitt der risikoadjustierten Renditen über die Vorträglichkeit der bereinigten Renditen. (853) Sortino-Verhältnis wird die Berechnung anstelle von np. nan zurückgeben, wenn die Rückgabe gleich Null ist. Das Verhältnis gibt nun den Durchschnitt der risikoadjustierten Renditen über das Abwärtsrisiko zurück. Fixed falsch markierte API durch Umwandlung von Mar zu Downsiderisk. (747) Das Downside-Risiko gibt nun die Quadratwurzel des Mittelwerts der Downside-Differenzquadrate zurück. (747) Informationsquote aktualisiert auf Rendite Mittel der risikoadjustierten Renditen über die Standardabweichung der risikoadjustierten Renditen. (1322) Alpha und Sharpe Ratio sind nun annualisiert. (1322) Fix-Einheiten beim Lesen und Schreiben der täglichen Bar firsttradingday Attribut. (1245) Optionale Versandmodule, wenn sie fehlen, verursachen nicht mehr einen NameError. (1246) Behandlungsplan-Argument als Zeitregel, wenn eine Zeitregel, aber keine Datumsregel geliefert wird. (1221) Schützen Sie sich vor den Grenze Bedingungen am Anfang und Ende Handelstag in Zeitplan Funktion. (1226) Anwenden von Anpassungen auf den vorherigen Tag bei der Verwendung von Verlauf mit einer Frequenz von 1d. (1256) Fail schnell auf ungültige Pipeline-Spalten, anstatt zu versuchen, die nicht vorhandene Spalte zugreifen. (1280) Fix AverageDollarVolume NaN Handhabung. (1309) Leistungsverbesserungen zum Bohren von Kernlader. (1227) Gleichzeitige Blaze-Abfragen zulassen (1323) Vermeiden Sie fehlende führende bcolz-Minuten-Daten aus wiederholten unnötigen Lookups. (1451) Cache zukünftige Ketten-Lookups. (1455) Instandhaltung und Refactorings Entfernt verbleibende Erwähnungen der Zusatzgeschichte. (1287) Dokumentation Fügen Sie Testbefestigung hinzu, welche Quellen täglich Preisdatumsdaten von den kleinsten Preisfaktoren belegen. (1243) Datenformatänderungen BcolzDailyBarReader und BcolzDailyBarWriter verwenden Handelskalenderinstanz anstelle von Handelstagen, die an JSON serialisiert sind. (1330) Ändern Sie das Format von assets. db, um Point-of-Time-Lookups zu unterstützen. (1361) Ändern Sie BcolzMinuteBarReaderand BcolzMinuteBarWriter, um verschiedene Tick-Größen zu unterstützen. (1428) Release 1.0.1 Dies ist eine kleine Bug-Fix-Version von 1.0.0 und enthält eine kleine Anzahl von Bug-Fixes und Dokumentations-Verbesserungen. Erweiterungen Unterstützung für benutzerdefinierte Provisionsmodelle hinzugefügt. Weitere Informationen zur Implementierung eines Provisionsmodells finden Sie in der zipline. financemissionmissionModel-Klasse. (1213) Unterstützung für Nicht-Float-Spalten zu Blaze-backed Pipeline-Datensätzen (1201) hinzugefügt. Zipline. pipeline. slice. Slice hinzugefügt. Ein neuer Pipeline-Begriff, der entworfen ist, um eine einzelne Spalte aus einem anderen Begriff zu extrahieren. Scheiben können durch Indizierung in einen Begriff erstellt werden. (1267) Fehlerkorrekturen Ein Fehler wurde behoben, bei dem Pipeline-Lader nicht ordnungsgemäß von zipline. runalgorithm () initialisiert wurden. Dies trifft auch auf die Aufruf von Zipline aus der CLI zu. Es wurde ein Fehler behoben, der dazu führte, dass die Zipline-IPython-Zelle Magie versagte (533233fae43c7ff74abfb0044f046978817cb4e4). Ein Fehler im ProTrade-Provisionsmodell wurde behoben, bei dem Provisionen bei jeder Teilfüllung eines Auftrags falsch angewendet wurden, anstatt auf den Auftrag selbst, was dazu führte, dass Algorithmen bei der Bestellung großer Aufträge zu viel in Provisionen aufgeladen wurden. PerTrade beantragt nun Provisionen auf Auftragsebene (1213). Attributzugriffe auf CustomFactors, die mehrere Ausgänge definieren, geben nun korrekt ein Ausgabe-Slice zurück, wenn die Ausgabe auch der Name einer Factor-Methode (1214) ist. Ersetzte veraltete Verwendung von pandas. io. data mit pandasdatareader (1218). Es wurde ein Problem behoben, bei dem pyi stub-Dateien für zipline. api versehentlich von der PyPI-Quellverteilung ausgeschlossen wurden. Conda-Nutzer sollten nicht betroffen sein (1230). Dokumentation Ein neues Beispiel hinzugefügt, zipline. examples. momentpipeline. Die die Pipeline API (1230) ausübt. Highlights Zipline 1.0 Rewrite (1105) Wir haben viel Zipline und seine Grundkonzepte umgeschrieben, um die Laufzeitperformance zu verbessern. Gleichzeitig haben wir mehrere neue APIs eingeführt. Auf einem hohen Niveau zogen frühere Versionen von Zipline-Simulationen aus einem gemultiplexten Strom von Datenquellen, die über Heapq zusammengeführt wurden. Dieser Stream wurde der Haupt-Simulationsschleife zugeführt und fuhr die Uhr vorwärts. Diese starke Abhängigkeit vom Lesen aller Daten machte es schwierig, die Simulationsleistung zu optimieren, da es keine Verbindung zwischen der Menge der Daten, die wir abgerufen haben, und der Menge der Daten, die tatsächlich von dem Algorithmus verwendet wurden, gab. Jetzt holen wir nur Daten, wenn der Algorithmus es braucht. Eine neue Klasse, DataPortal. Sendet Datenanforderungen an verschiedene Datenquellen und gibt die angeforderten Werte zurück. Dies macht die Laufzeit einer Simulationsskala viel stärker mit der Komplexität des Algorithmus und nicht mit der Anzahl der von den Datenquellen bereitgestellten Assets. Statt des Datenstroms, der die Uhr treibt, werden nun Simulationen durch einen vorberechneten Satz von Tag - oder Minuten-Zeitstempeln durchgelesen. Die Zeitstempel werden von MinuteSimulationClock und DailySimulationClock ausgegeben. Und verbraucht von der Hauptschleife in transform (). Wir haben die Datasid (N) und die Verlaufs-APIs zurückgezogen und sie durch mehrere Methoden auf dem BarData-Objekt ersetzt: current (). Geschichte(). können handeln(). Und isstale (). Alte APIs werden weiterhin für die Arbeit arbeiten, aber werden Ablehnungswarnungen ausgeben. Sie können nun eine Anpassungsquelle an das DataPortal übergeben. Und wir werden bei der Rücksendung der Daten Anpassungen der Preisdaten vornehmen. Preise und Volumen für die Ausführung und präsentiert dem Algorithmus in data. current sind die as-gehandelten Wert des Vermögenswertes. Neue Eintrittspunkte (1173 und 1178) Um die Zipline einfacher zu machen, haben wir die Einstiegspunkte für einen Backtest aktualisiert. Die drei unterstützten Wege, um einen Backtest laufen zu lassen, sind jetzt: zipline. runalgo () zipline run zipline (IPython magic) Datenbündel (1173 und 1178) 1.0.0 führt Datenbündel ein. Datenbündel sind Gruppen von Daten, die vorinstalliert und verwendet werden sollten, um Backtests später auszuführen. Dies ermöglicht es Benutzern, nicht zu spezifizieren, welche Tickers sie interessiert sind, jedes Mal, wenn sie einen Algorithmus ausführen. Damit können wir auch die Daten zwischen den Läufen zwischenspeichern. Standardmäßig wird das Quantopian-Quandl-Bündel verwendet, das Daten vom Quantopian8217s Spiegel des Quandl WIKI-Datensatzes zieht. Neue Bündel können mit zipline. data. bundles. register () wie folgt registriert werden: Diese Funktion sollte die benötigten Daten abrufen und dann die Schreiber verwenden, die übergeben wurden, um diese Daten an eine Stelle zu schreiben, die Zipline später finden kann. Diese Daten können in Backtests verwendet werden, indem sie den Namen als das - b - bundle-Argument an zipline run oder als bundle-Argument an zipline. runalgorithm () übergeben. Weitere Informationen finden Sie unter Datenbündel für weitere Informationen. String-Unterstützung in Pipeline (1174) Unterstützung für String-Daten in Pipeline hinzugefügt. Zipline. pipeline. data. Column akzeptiert nun das Objekt als dtype, was bedeutet, dass Loader für diese Spalte Fenster-Iteratoren über die experimentelle neue LabelArray-Klasse aussenden sollten. Mehrere neue Classifier-Methoden wurden auch hinzugefügt, um Filter-Instanzen basierend auf String-Operationen zu erstellen. Die neuen Methoden sind: elementof ist für alle Klassifikatoren definiert. Die restlichen Methoden sind nur für String-Dtype-Klassifikatoren definiert. Erweiterungen Die Datenladeklassen haben mehr konsistente Schnittstellen. Dazu gehören die Equity Bar Schriftsteller, Anpassung Schriftsteller und Asset DB Schriftsteller. Die neue Schnittstelle ist, dass die zu schreibende Ressource zur Bauzeit übergeben wird und die zu schreibenden Daten später der Schreibmethode als Dataframes oder einem Iterator von Dataframes zur Verfügung gestellt werden. Dieses Modell erlaubt uns, diese Schriftsteller Objekte als eine Ressource für andere Klassen und Funktionen zu verbrauchen (1109 und 1149) zu übergeben. Maskierung zu zipline. pipeline. CustomFactor hinzugefügt. Kundenspezifische Faktoren können nun bei der Instanziierung einen Filter übergeben werden. Dies sagt, dass der Faktor nur über Aktien berechnen muss, für die der Filter True zurückgibt, anstatt immer über das gesamte Universum der Aktien zu rechnen. (1095) Zipline. utils. cache. ExpiringCache hinzugefügt. Ein Cache, der Einträge in einem zipline. utils. cache. CachedObject einpackt. Die das Auslaufen der Einträge auf der Grundlage der dt, die an die get-Methode geliefert wird, verwaltet. (1130) implementiert zipline. pipeline. factors. RecarrayField. Ein neuer Pipeline-Begriff, der als Ausgangstyp eines CustomFactor mit mehreren Ausgängen ausgelegt ist. (1119) Added optionale Ausgänge Parameter an zipline. pipeline. CustomFactor. Kundenspezifische Faktoren sind nun in der Lage, mehrere Ausgänge zu berechnen und zurückzugeben, von denen jeder selbst ein Faktor ist. (1119) Unterstützung für String-Dtype-Pipeline-Spalten hinzugefügt. Lader für die Spalten sollten Instanzen von zipline. lib. labelarray. LabelArray erzeugen, wenn sie durchlaufen werden. Latest () auf String-Spalten erzeugt einen String-dtype zipline. pipeline. Classifier. (1174) Mehrere Methoden zum Konvertieren von Klassifikatoren in Filter hinzugefügt. Die neuen Methoden sind: - elementof () - startswith () - endwith () - hassubstring () - matches () elementof ist für alle Klassifikatoren definiert. Die restlichen Methoden sind nur für Strings definiert. (1174) Fetcher wurde von Quantopian internem Code in Zipline (1105) verschoben. Experimentelle Merkmale Die experimentellen Merkmale sind freibleibend. Hat eine neue zipline. lib. labelarray. LabelArray-Klasse hinzugefügt, um die String-Daten effizient zu repräsentieren und zu komprimieren. Diese Klasse ist konzeptionell ähnlich wie pandas. Kategorisch. Da es String-Arrays als Arrays von Indizes in ein (kleineres) Array von eindeutigen String-Werten darstellt. (1174) Bug Fixes Highlights Ein neues EarningsCalendar-Dataset für den Einsatz in der Pipeline API hinzugefügt. (905). AssetFinder Beschleunigungen (830 und 817). Verbesserte Unterstützung für Nicht-Float-Dtypen in Pipeline. Vor allem unterstützen wir jetzt datetime64 und int64 dtypes für Factor. Und BoundColumn. latest gibt nun ein richtiges Filterobjekt zurück, wenn die Spalte von dtype bool ist. Zipline unterstützt jetzt numpy 1.10, Pandas 0.17 und scipy 0.16 (969). Batch-Transformationen wurden veraltet und werden in einer zukünftigen Version entfernt. Die Verwendung von Geschichte wird als Alternative empfohlen. Erweiterungen Fügt den Benutzern einen Weg hinzu, der bei der Ausführung der geplanten Funktionen (einschließlich Handledata) einen Kontextmanager zur Verfügung stellt. Dieser Kontext-Manager wird das BarData-Objekt für die Leiste übergeben und wird für die Dauer aller geplanten Funktionen verwendet. Dies kann an TradingAlgorithm über das Keyword-Argument createEventcontext (828) übergeben werden. Unterstützung für zipline. pipeline. factors. Factor-Instanzen mit datetime64ns dtypes hinzugefügt. (905) Ein neues EarningsCalendar-Dataset zur Verwendung in der Pipeline-API hinzugefügt. Dieser Datensatz bietet eine abstrakte Schnittstelle für das Hinzufügen von Gewinnanweisungsdaten zu einem neuen Algorithmus. Eine pandasbasierte Referenzimplementierung für diesen Datensatz finden Sie in zipline. pipeline. loaders. earnings. Und eine experimentelle Blaze-basierte Implementierung finden Sie in zipline. pipeline. loaders. blaze. earnings. (905). Neue eingebaute Faktoren hinzugefügt, zipline. pipeline. factors. BusinessDaysUntilNextEarnings und zipline. pipeline. factors. BusinessDaysSincePreviousEarnings. Diese Faktoren verwenden den neuen EarningsCalendar-Datensatz. (905). Isnan () hinzugefügt. Notnan () und isfinite () Methoden zu zipline. pipeline. factors. Factor (861). Zipline. pipeline. factors. Returns hinzugefügt. Ein eingebauter Faktor, der die prozentuale Veränderung des nahe Preises über die vorgegebene Fensterlänge berechnet. (884). Ein neuer eingebauter Faktor hinzugefügt: AverageDollarVolume. (927). Added ExponentialWeightedMovingAverage und ExponentialWeightedMovingStdDev Faktoren. (910). Ermöglichen, dass DataSet-Klassen subklassen werden, wenn Unterklassen alle Spalten vom übergeordneten übernehmen. Diese Spalten werden neue Sentinels, so dass Sie sie einen benutzerdefinierten Loader (924) registrieren können. Hinzugefügt coerce (), um Eingaben von einem Typ in einen anderen zu zwingen, bevor er sie an die Funktion (948) übergibt. Zusätzlich hinzugefügt (), um andere Präprozessorfunktionen zu verpacken, um explizit keine (947) zuzulassen. Sende timezone () hinzugefügt, damit String-Argumente in datetime. tzinfo-Objekte konvertiert werden können. Damit können auch tzinfo-Objekte direkt weitergegeben werden (947). Es wurden zwei optionale Argumente, dataquerytime und dataquerytz zu BlazeLoader und BlazeEarningsCalendarLoader hinzugefügt. Diese Argumente erlauben es dem Benutzer, bei der Beladung aus der Ressource eine Begrenzungszeit für Daten anzugeben. Zum Beispiel, wenn ich die Ausführung meiner beforetradingstart Funktion um 8:45 USEastern simulieren möchte, dann könnte ich datetime. time (8, 45) und USEastern zum Loader passieren. Dies bedeutet, dass Daten, die am oder nach 8:45 Zeitstempel sind, an diesem Tag in der Simulation nicht gesehen werden. Die Daten werden am nächsten Tag (947) zur Verfügung gestellt. BoundColumn. latest gibt nun einen Filter für Spalten von dtype bool (962) zurück. Unterstützung für Faktorinstanzen mit int64 dtype hinzugefügt. Spalte benötigt nun einen fehlenden Wert, wenn dtype integral ist. (962) Es ist auch möglich, benutzerdefinierte fehlwertwerte für float anzugeben. Terminzeit. Und bool Pipeline Begriffe. (962) Zusätzliche Auto-Close-Unterstützung für Aktien. Alle Positionen, die in einem Eigenkapital gehalten werden, das ihre Autoclosedate erreicht, werden nach dem Equity8217s letzten Verkaufspreis für Bargeld liquidiert. Darüber hinaus werden alle offenen Aufträge für dieses Eigenkapital annulliert. Beide Futures und Aktien werden nun am Morgen ihres Autoclosedates automatisch geschlossen. Unmittelbar vor dem Vorgang. (982) Experimentelle Merkmale Experimentelle Merkmale sind freibleibend. Unterstützung für parametrisierte Faktor-Subklassen hinzugefügt. Faktoren können params als Klassenebenenattribut angeben, das ein Tupel von Parameternamen enthält. Diese Werte werden dann vom Konstruktor akzeptiert und per Namen an die Faktor8217s Berechnungsfunktion weitergeleitet. Diese API ist experimentell und kann sich in zukünftigen Releases ändern. Bug-Fixes Behebt ein Problem, das dazu führen würde, dass das Dailyminuly-Methoden-Caching das Len eines SIDData-Objekts ändert. Das würde uns dazu bringen zu denken, dass das Objekt nicht leer war, auch wenn es war (826). Behebt einen Fehler bei der Berechnung der Beta, wenn die Benchmark-Daten spärlich waren. Statt numpy. nan wird zurückgegeben (859). Ein Problem beendet, das Sentinel () Objekte (872) platziert. Feste falsche Warnungen beim ersten Download von Treasury-Daten (: Ausgabe 922). Korrigiert die Fehlermeldungen für setcommission () und setslippage () bei Verwendung außerhalb der Initialisierungsfunktion. Diese Fehler, die die Funktionen genannt werden, überschreiben statt Satz. Dies hat auch die Ausnahmetypen umbenannt, die von OverrideSlippagePostInit und OverrideCommissionPostInit auf SetSlippagePostInit und SetCommissionPostInit (923) angehoben wurden. Es wurde ein Problem in der CLI behoben, das dazu führen würde, dass Vermögenswerte zweimal hinzugefügt werden. Dies würde das gleiche Symbol auf zwei verschiedene Seiten (942) abbilden. Es wurde ein Problem behoben, bei dem die PerformancePeriod bei der Erstellung eines Kontos (950) den Totalpositionswert falsch gemeldet hat. Fixed Fragen rund um KeyErrors aus der Geschichte und BarData auf 32-Bit-Python, wo Assets nicht richtig verglichen mit int64s (959). Ein Fehler wurde behoben, bei dem Boolesche Operatoren bei Filter (991) nicht ordnungsgemäß implementiert wurden. Die Installation der Zipline wird nicht mehr heruntergeladen auf 1.9.2 still und bedingungslos (969). Leistung beschleunigt das Lookupsymbol () durch Hinzufügen einer Erweiterung, AssetFinderCachedEquities. Das lädt Aktien in Wörterbücher und leitet dann lookupsymbol () zu diesen Wörterbüchern, um passende Aktien zu finden (830). Verbesserte Leistung von lookupsymbol () durch die Durchführung von gebundenen Abfragen. (817). Instandhaltung und Refactorings Asset-Datenbanken enthalten nun Versionsinformationen, um die Kompatibilität mit der aktuellen Zipline-Version (815) zu gewährleisten. Upgrade-Anfragen Version auf 2.9.1 (2ee40db) Upgrade Logbuch-Version auf 0.12.5 (11465d9). Upgrade Cython Version auf 0.23.4 (5f49fa2). Macht die Zipline-Installationsanforderungen flexibler (825). Verwenden Sie versioneer, um die Projektversion und die setup. py Version (829) zu verwalten. Fixed Overalls Integration auf Travis Build (840). Fixed conda build, die jetzt Git-Quelle als Quelle verwendet und liest Anforderungen mit setup. py, anstatt sie zu kopieren und lassen sie aus der Synchronisierung (937). Requiretools verwenden gt 18.0 (951). Dokumentation Dokument der Freigabeprozess für Entwickler (835). Zusätzliche Referenzdokumente für die Pipeline-API hinzugefügt. (864). Zusätzliche Referenzdokumente für Asset Metadata APIs hinzugefügt. (864). Generierte Dokumentation enthält jetzt Links zu Quellcode für viele Klassen und Funktionen. (864). Zusätzliche plattformspezifische Dokumentation, die beschreibt, wie man binäre Abhängigkeiten findet. (883). Sonstiges Eine Showgraph () - Methode hinzugefügt, um eine Pipeline als Bild zu rendern (836). Füge den Subtest () Dekorator zum Erstellen von Subtests ohne noseparameterized. expand () hinzu, der den Testausgang aufbläht (833). Begrenzt den Timer-Report in der Testausgabe auf 15 längste Tests (838). Treasury - und Benchmark-Downloads werden nun bis zu einer Stunde warten, um es erneut herunterzuladen, wenn Daten, die von einer entfernten Quelle zurückgegeben werden, nicht auf das erwartete Datum reichen. (841). Ein Tool hinzugefügt, um die Assets db auf vorherige Versionen (941) herunterzusetzen. Release 0.8.3 Highlights Neues Dokumentations-System mit einer neuen Website bei zipline. io Wichtige Leistungsverbesserungen. Dynamische Geschichte. Neue benutzerdefinierte Methode: beforetradingstart. Neue api-Funktion: Zeitplanfunktion (). Neue api-Funktion: getenvironment (). Neue api-Funktion: setmaxleverage (). Neue api-Funktion: setdonotorderlist (). Pipeline API. Unterstützung für Handels-Futures. Erweiterungen Kontoobjekt: Fügt dem Kontext ein Kontoobjekt hinzu, um Informationen über das Handelskonto zu verfolgen. Beispiel: Gibt den abgerechneten Barwert zurück, der auf dem Kontoobjekt gespeichert ist. Dieser Wert wird entsprechend aktualisiert, wenn der Algorithmus ausgeführt wird (396). HistoryContainer kann nun dynamisch wachsen Anrufe in die Historie () werden nun in der Lage sein, die Größe zu vergrößern oder die Form des History-Containers zu ändern, um den Anruf bedienen zu können. Addhistory () fungiert nun als Preformance-Hinweis, um genügend Platz im Container zuzuordnen. Diese Änderung ist rückwärts kompatibel mit der Geschichte. Alle bestehenden Algorithmen sollten weiterhin wie beabsichtigt arbeiten (412). Einfache Transformationen von Quantopian und Gebrauchsverlauf. SIDData verfügt nun über Methoden für: Diese Methoden, mit Ausnahme von Retouren. Akzeptiere eine Anzahl von Tagen. Wenn Sie mit Minute Daten laufen, dann wird dies berechnen die Anzahl der Minuten in diesen Tagen, die Früherkennung und die aktuelle Zeit und gelten die Transformation über die Menge der Minuten. Rückkehr nimmt keine Parameter und gibt die täglichen Renditen des gegebenen Vermögenswertes zurück. Beispiel: Neue Felder im Leistungszeitraum. Leistungsperiode hat neue Felder im Rückgabewert von todict zugänglich. - Brutto Hebelwirkung - Netto-Hebelwirkung - kurze Exposition - Langzeitbelichtung - Shorts zählen - Longs zählen (464). Erlaube Orderpercent (), mit verschiedenen Marktwerten zu arbeiten (von Jeremiah Lowin). Derzeit sind Orderpercent () und Ordertargetpercent () beide als Prozentsatz von self. portfolio. portfoliovalue. Diese PR lässt sie als Prozentsatz anderer wichtiger MVs betreiben. Fügt auch context. getmarketvalue () hinzu. Was diese Funktionalität ermöglicht. Zum Beispiel: Befehlszeilenoption zum Drucken von algo to stdout (von Andrea D8217Amore) (545). Neue benutzerdefinierte Funktion beforetradingstart. Diese Funktion kann durch den Benutzer, der einmal vor dem Börsengang des Tages geöffnet werden soll, überschrieben werden (389). Neue api Funktion Zeitplanfunktion (). Diese Funktion ermöglicht es dem Benutzer, eine Funktion aufzurufen, die auf komplizierteren Regeln über Datum und Uhrzeit aufgerufen wird. Zum Beispiel, rufen Sie die Funktion 15 Minuten vor Markt schließen respektieren früh schließt (411). Neue api-Funktion setdonotorderlist (). Diese Funktion akzeptiert eine Liste von Assets und fügt einen Handelswächter hinzu, der den Algorithmus daran hindert, sie zu handeln. Fügen Sie einen Listenpunkt in der Zeitliste der gehebelten ETFs hinzu, die Leute mögen möchten, um zu markieren als 8216 nicht Handel8217 (478). Fügt eine Klasse für die Darstellung von Wertpapieren hinzu. Order () und andere Orderfunktionen benötigen nun eine Instanz von Security anstelle eines int oder string (520). Verallgemeinern Sie die Sicherheitsklasse zu Asset. Dies ist in Vorbereitung der Hinzufügung von Unterstützung für andere Asset-Typen (535). Neue api Funktion getenvironment (). Diese Funktion gibt standardmäßig die String-Zipline zurück. Dies wird so verwendet, dass Algorithmen unterschiedliche Verhaltensweisen auf Quantopian und lokaler Zipline haben können (384). Verlängert getenvironment (), um mehr der Umgebung dem Algorithmus auszusetzen. Die Funktion akzeptiert nun ein Argument, das das Feld zurückgibt. Standardmäßig ist dies eine Plattform, die den alten Wert von Zipline zurückgibt, aber die folgenden neuen Felder können angefordert werden: arena. Ist dieser Live-Handel oder Backtesting Datafrequenz. Ist dieser Minutenmodus oder der Tagesmodus gestartet. Simulationsstartdatum. Ende. Simulationsenddatum. Kapitalbasis Das Startkapital für die Simulation. Plattform. Die Plattform, auf der der Algorithmus läuft. . Ein Wörterbuch mit all diesen Feldern. Neue api-Funktion setmaxleveraged (). Diese Methode fügt einen Handelswächter hinzu, der verhindert, dass Ihr Algorithmus von sich selbst hemmt (552). Experimentelle Merkmale Die experimentellen Merkmale sind freibleibend. Fügt eine neue Pipeline-API hinzu. Die Pipeline-API ist eine hochrangige deklarative API zur Darstellung von Schleppfensterberechnungen auf großen Datensätzen (630). Fügt Unterstützung für Futures-Handel hinzu (637). Fügt Pipeline-Loader für Blaze-Ausdrücke hinzu. Dies ermöglicht es Benutzern, Daten aus irgendeinem Format zu löschen, das man versteht und es in der Pipeline-API verwendet. (775). Fehlerbehebungen Beheben Sie einen Fehler, bei dem die gemeldeten Renditen für zufällige Zeiträume (378) scharf abfallen könnten. Fix einen Fehler, der verhindert, dass Debugger die Algorithmus-Datei (431) auflösen. Richtig vorwärts Argumente an Benutzerdefinierte Initialisierungsfunktion (687). Beheben Sie einen Fehler, der dazu führen würde, dass die Schatzdaten Daten zwischen dem Mitternacht-EST und dem Zeitpunkt, an dem die Schatzdaten verfügbar waren, neu heruntergeladen werden konnten (793). Fix einen Fehler, der dazu führen würde, dass die benutzerdefinierte Analysefunktion nicht aufgerufen wird, wenn sie als Keyword-Argument an TradingAlgorithm (819) übergeben wurde. Leistung Wichtige Leistungsverbesserungen zur Geschichte (von Dale Jung) (488). Wartung und Refactorings Entfernen Sie den einfachen Code. Diese sind als Methoden von SIDData (550) verfügbar. Highlights Kommandozeilenschnittstelle, um Algorithmen direkt auszuführen. IPython Magic Zipline, die Algorithmus in einer IPython Notebook-Zelle definiert. API-Methoden für den Aufbau von Schutzmaßnahmen gegen Ausreißer-Bestellung und unerwünschte Short-Positionen. Neue History () - Funktion, um ein bewegliches DataFrame von vergangenen Marktdaten zu erhalten (ersetzt BatchTransform). Ein neues Anfänger-Tutorium. Erweiterungen CLI: Fügt eine CLI - und IPython-Magie für Zipline hinzu. Beispiel: Ergreift die Daten von yahoo Finanzen, führt die Datei dualmovingavg. py (und sucht nach dualmovingavganalyze. py, die, falls gefunden, nach dem Algorithmus ausgeführt wird) und gibt die perf DataFrame zu dma. pickle (325) . IPython Magic Command (an der Spitze einer IPython Notebook Zelle). Beispiel: Gibt es das gleiche wie oben, außer anstelle der Ausführung der Datei sucht nach dem Algorithmus in der Zelle und anstatt die Perf df in eine Datei auszugeben, erzeugt eine Variable im Namensraum namens perf (325). Fügt dem Algorithmus API Trading Controls hinzu. Die folgenden Funktionen stehen nun auf TradingAlgorithm und für algo-Skripte zur Verfügung: setmaxordersize (self, sidNone, maxsharesNone, maxnotionalNone) Setzt eine Begrenzung auf die absolute Größe, in Aktien und Gesamtdollwert eines einzelnen Auftrags, der von diesem Algorithmus für eine gegebene Sid platziert wird . Wenn sid keine ist, dann wird die Regel auf irgendeine Reihenfolge angewendet, die durch den Algorithmus platziert wird. Beispiel: setmaxpositionsize (self, sidNone, maxsharesNone, maxnotionalNone) - Set eine Grenze für die absolute Größe, entweder in Aktien oder Dollar-Wert, von jeder Position, die durch den Algorithmus für eine gegebene Sid gehalten wird. Wenn sid keine ist, dann wird die Regel auf jede Position angewendet, die vom Algorithmus gehalten wird. Beispiel: setlongonly (self) Legt eine Regel fest, die angibt, dass der Algorithmus keine Short-Positionen enthält. Beispiel: Fügt eine allapimethods classmethod auf TradingAlgorithm hinzu, die eine Liste aller TradingAlgorithm API Methoden (333) zurückgibt. Erweiterte Aufzeichnung () Funktionalität für dynamische Benennung. Die record () - Funktion kann nun vor dem kwargs Positionszeichen setzen. Alle ursprünglichen Gebrauch und Funktionalität ist die gleiche, aber jetzt werden diese zusätzlichen Verwendungen funktionieren: Die Anforderungen sind einfach, dass die poritional args nur vor den kwargs (355) auftreten. Geschichte () wurde von Quantopian zu Zipline portiert und bietet bewegte Fenster von Marktdaten. Geschichte () ersetzt BatchTransform. Es ist schneller, arbeitet für Minute-Level-Daten und hat eine überlegene Schnittstelle. Um es zu benutzen, rufen Sie addhistory () innerhalb von initialize () an und erhalten dann einen pandas DataFrame durch Aufruf von history () von inside handledata (). Schauen Sie sich das Tutorial und ein Beispiel an. (345 und 357). Geschichte () unterstützt nun 1m Fensterlängen (345). Bug Fixes Fix Ausrichtung der Handelstage und offen und schließt im Handelsumfeld (331). RollingPanel fix beim Hinzufügen von neuen Feldern (349). Performance Maintenance und Refactorings Entfernt undokumentierte und ungetestete HDF5- und CSV-Datenquellen (267). Refactor simparams (352). Refactoring der Geschichte (340). Die folgenden Abhängigkeiten wurden aktualisiert (zipline kann auch mit anderen Versionen funktionieren): Highlights Größere Fehlerbehebungen zur Risikoberechnung finden Sie unter Bug Fixes. Port of History () - Funktion, siehe Erweiterungsbereich Starten der Unterstützung für die Quantopian-Algorithmus-Skript-Syntax, siehe ENH-Abschnitt. Conda-Paket-Manager-Unterstützung, siehe Build-Bereich. Erweiterungen Immer neue Aufträge verarbeiten, z. B. auf Stäben, in denen Handledata isn8217t aufgerufen wird, aber es gibt 8216clock8217 Daten z. B. Eine konsequente Benchmark, Prozessaufträge. Leere Positionen werden nun aus dem Portfolio-Container gefiltert. Um zu verhindern, dass Algorithmen auf Positionen arbeiten, die sich nicht im bestehenden Universum von Aktien befinden. Früher würde die Iteration über Positionen Positionen für Aktien zurückgeben, die null Aktien gehalten haben. (Wenn ein expliziter Check-in-Algorithmus-Code für pos. amount 0 verhindern könnte, dass eine nicht vorhandene Position verwendet wird.) Fügen Sie Handelskalender für BMFampBovespa hinzu. Füge den Anfang der algo-Skriptunterstützung hinzu. Startet auf dem Pfad der Parität mit der Skript-Syntax in Quantopian8217s IDE auf dem Quantopian Beispiel: Füge HDF5- und CSV-Quellen hinzu. Begrenzt Handledata auf Zeiten mit Marktdaten. Um Fälle zu verhindern, in denen benutzerdefinierte Datentypen freigegebene Zeitstempel hatten, rufen Sie nur Handledata an, wenn die Marktdaten durchlaufen. Kundendaten, die vor Marktdaten kommen, werden die Datenleiste noch aktualisieren. Aber die Handhabung dieser Daten erfolgt nur, wenn es umsetzbare Marktdaten gibt. Extended Provision PerShare-Methode, um eine minimale Kosten pro Handel zu ermöglichen. Add symbol api function Ein Symbol () Lookup Feature wurde zu Quantopian hinzugefügt. Durch das Hinzufügen der gleichen API-Funktion zu zipline können wir das Kopieren eines Zipline algo an Quantopian einfacher machen. Fügen Sie simulierte zufällige Handelsquelle hinzu. Eine neue Datenquelle hinzugefügt, die Ereignisse mit einer bestimmten benutzerdefinierten Frequenz (Minute oder täglich) ausgibt. Dies ermöglicht es Benutzern, einen Algorithmus im Minutenmodus zu testen und zu debuggen, um einen saubereren Weg zu Quantopian zu schaffen. Entfernen Sie die Abhängigkeit vom Benchmark für den Handelstagkalender. Anstelle des Benchmarks8217-Index wird nun der Trading-Kalender verwendet, um die Tage des Umfelds zu erfassen. Expositionsfeld entfernen, da im Gegensatz zu den Benchmarks-Listen der Trading-Kalender zukünftige Termine generieren kann, so dass Termine für den aktuellen Tageshandel nicht angehängt werden müssen. Motivationen: Die Quelle für den offenen und nahen nahen Kalender und den Handelstag Kalender ist jetzt der gleiche, die helfen sollte, potenzielle Probleme aufgrund von Fehlausrichtung zu verhindern. Ermöglicht Konfigurationen, bei denen der Benchmark als Generator-basierte Datenquelle zur Verfügung gestellt wird, um eine zweite Benchmark-Liste zu liefern, um nur Daten zu füllen. Port History () API-Methode von Quantopian. Öffnet den Kern der History () - Funktion, die bisher nur auf der Quantopian-Plattform verfügbar war. Die Historienmethode ist analog zum batchtransformalen Funktionsdekorator, aber mit einer hoffentlich präziseren Spezifikation der Häufigkeit und der Periode der vorherigen Bardaten, die erfasst werden. Beispiel: N. B. this version of history lacks the backfilling capability that allows the return a full DataFrame on the first bar. Bug Fixes Adjust benchmark events to match market hours (241 ). Previously benchmark events were emitted at 0:00 on the day the benchmark related to: in 8216minute8217 emission mode this meant that the benchmarks were emitted before any intra-day trades were processed. Ensure perf stats are generated for all days When running with minutely emissions the simulator would report to the user that it simulated 8216n - 18217 days (where n is the number of days specified in the simulation params). Now the correct number of trading days are reported as being simulated. Fix repr for cumulative risk metrics. The repr for RiskMetricsCumulative was referring to an older structure of the class, causing an exception when printed. Also, now prints the last values in the metrics DataFrame. Prevent minute emission from crashing at end of available data. The next day calculation was causing an error when a minute emission algorithm reached the end of available data. Instead of a generic exception when available data is reached, raise and catch a named exception so that the tradesimulation loop can skip over, since the next market close is not needed at the end. Fix pandas indexing in trading calendar. This could alternatively be filed under Performance. Index using loc instead of the inefficient index-ing of day, then time. Prevent crash in vwap transform due to non-existent member. The WrongDataForTransform was referencing a self. fields member, which did not exist. Add a self. fields member set to price and volume and use it to iterate over during the check. Fix max drawdown calculation. The input into max drawdown was incorrect, causing the bad results. i. e. the compoundedlogreturns were not values representative of the algorithms total return at a given time, though calculatemaxdrawdown was treating the values as if they were. Instead, the algorithmperiodreturns series is now used, which does provide the total return. Fix cost basis calculation. Cost basis calculation now takes direction of txn into account. Closing a long position or covering a short shouldn8217t affect the cost basis. Fix floating point error in order(). Where order amounts that were near an integer could accidentally be floored or ceilinged (depending on being postive or negative) to the wrong integer. z. B. an amount stored internally as -27.99999 was converted to -27 instead of -28. Update perf period state when positions are changed by splits. Otherwise, self. positionamounts will be out of sync with position. amount, etc. Fix misalignment of downside series calc when using exact dates. An oddity that was exposed while working on making the return series passed to the risk module more exact, the series comparison between the returns and mean returns was unbalanced, because the mean returns were not masked down to the downside data points however, in most, if not all cases this was papered over by the call to. valid() which was removed in this change set. Check that self. logger exists before using it. self. logger is initialized as None and there is no guarantee that users have set it, so check that it exists before trying to pass messages to it. Prevent out of sync market closes in performance tracker. In situations where the performance tracker has been reset or patched to handle state juggling with warming up live data, the marketclose member of the performance tracker could end up out of sync with the current algo time as determined by the performance tracker. The symptom was dividends never triggering, because the end of day checks would not match the current time. Fix by having the tradesimulation loop be responsible, in minuteminute mode, for advancing the market close and passing that value to the performance tracker, instead of having the market close advanced by the performance tracker as well. Fix numerous cumulative and period risk calculations. The calculations that are expected to change are: cumulative. beta cumulative. alpha cumulative. information cumulative. sharpe period. sortino How Risk Calculations Are Changing Risk Fixes for Both Period and Cumulative Use sample instead of population for standard deviation. Add a rounding factor, so that if the two values are close for a given dt, that they do not count as a downside value, which would throw off the denominator of the standard deviation of the downside diffs. Standard Deviation Type Across the board the standard deviation has been standardized to using a 8216sample8217 calculation, whereas before cumulative risk was mostly using 8216population8217. Using ddof1 with np. std calculates as if the values are a sample. Cumulative Risk Fixes Use the daily algorithm returns and benchmarks instead of annualized mean returns. Use sample instead of population with standard deviation. The volatility is an input to other calculations so this change affects Sharpe and Information ratio calculations. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. The benchmark returns input is changed from annualized benchmark returns to the annualized mean returns. Period Risk Fixes Now uses the downside risk of the daily return vs. the mean algorithm returns for the minimum acceptable return instead of the treasury return. The above required adding the calculation of the mean algorithm returns for period risk. Also, uses algorithmperiodreturns and tresauryperiodreturn as the cumulative Sortino does, instead of using algorithm returns for both inputs into the Sortino calculation. Performance Removed aliasdt transform in favor of property on SIDData. Adding a copy of the Event8217s dt field as datetime via the aliasdt generator, so that the API was forgiving and allowed both datetime and dt on a SIDData object, was creating noticeable overhead, even on an noop algorithms. Instead of incurring the cost of copying the datetime value and assigning it to the Event object on every event that is passed through the system, add a property to SIDData which acts as an alias datetime to dt. Eventually support for datafoo. datetime may be removed, and could be considered deprecated. Remove the drop of 8216null return8217 from cumulative returns. The check of existence of the null return key, and the drop of said return on every single bar was adding unneeded CPU time when an algorithm was run with minute emissions. Instead, add the 0.0 return with an index of the trading day before the start date. The removal of the null return was mainly in place so that the period calculation was not crashing on a non-date index value with the index as a date, the period return can also approximate volatility (even though the that volatility has high noise-to-signal strength because it uses only two values as an input.) Maintenance and Refactorings Allow simparams to provide data frequency for the algorithm. In the case that datafrequency of the algorithm is None, allow the simparams to provide the datafrequency . Also, defer to the algorithms data frequency, if provided. Added support for building and releasing via conda For those who prefer building with conda. pydata. org to compiling locally with pip. The following should install Zipline on many systems.

No comments:

Post a Comment