2016-12-10 4 views
0

Ich erstelle eine benutzerdefinierte Basis yahoo Bündel durch die folgende Zugabe im $ ZIPLINE_ROOT Verzeichnis extenstion.py:Zipline Bundle gestrigen Daten

equities = { 
    'AAPL', 
    'QQQ', 
} 
register(
    'test-bundle', # name this whatever you like 
    yahoo_equities(equities), 
) 

und wenn ich das Bündel aufnehmen laufen alles in Ordnung ist.

zipline ingest -b test-bundle 

zipline bundles 

erzeugt die Ausgabe (i es gerade vor einer Sekunde lief)

test-bundle 2016-12-10 20:13:11.014192 

groß, alles funktioniert wie erwartet.

wenn ich laufe Zipline mit einigen grundlegenden Strategie für 2 Wochen:

zipline run -f ./test_algo.py --start 2016-12-01 --end 2016-12-9 -o output.pickle --bundle test-bundle 

es läuft, bis es bis Donnerstag (2016.12.08) Datum bekommt:

Traceback (most recent call last): 
File "/usr/local/lib64/python3.5/site-packages/pandas/core/indexing.py", line 1325, in _has_valid_type error() 
File "/usr/local/lib64/python3.5/site-packages/pandas/core/indexing.py", line 1320, in error (key, self.obj._get_axis_name(axis))) 
    KeyError: 'the label [2016-12-08 00:00:00+00:00] is not in the [index]' 

    During handling of the above exception, another exception occurred: 
    .... zipline stack trace 

aber wenn ich führen sie es:

zipline run -f ./test_algo.py --start 2016-12-01 --end 2016-12-7 -o output.pickle --bundle test-bundle 

Dann habe ich die erwartete erfolgreiche Ausgabe:

[2016-12-10 20:17:11.519059] INFO: Performance: Simulated 5 trading days out of 5. 
[2016-12-10 20:17:11.519495] INFO: Performance: first open: 2016-12-01 14:31:00+00:00 
[2016-12-10 20:17:11.519770] INFO: Performance: last close: 2016-12-07 21:00:00+00:00 

Eine Idee, warum meine Bundles auf T-2-Daten herunterladen. Ich würde erwarten, 12/8 und 12/9 Daten zu sehen, die Märkte waren offen, es war normale Tage und ich sehe Daten in Yahoo Finance für diese Tage.

Dank -

Antwort

0

Dies liegt daran, dass die Benchmark-Renditen nicht verfügbar sind, und nur aus einem T-2 Basis zur Verfügung, den Handelstag mit. (IE: wenn Sie es an einem Montagmorgen ausführen, dann sind die Daten des Donnerstags verfügbar und Sie können bis Freitag eine Simulation durchführen.) Wenn Sie es an einem Samstag/Sonntag ausführen, ist der letzte mögliche Tag für den Benchmark der Mittwoch und der letzte Simulationstag ist Donnerstag.

mögliche Lösungen:

  1. Ändern Zipline Lage sein, die Benchmark zu deaktivieren
  2. Ändern Zipline jeden Ticker als Maßstab zu verwenden (und nur das Standard-Lager indicies) aus einem Bündel

aktuelle Problemumgehung:

ändern: ./zipline/gens/tradesimulation.py

und setzen:

def handle_benchmark(date, benchmark_source=self.benchmark_source): 
    algo.perf_tracker.all_benchmark_returns[date] = 1 

diese Weise ist es nicht, wenn es nicht überprüft Daten vorhanden sind, und 1 gibt immer nur für einen Benchmark

Verwandte Themen