2016-12-10 7 views
0

Я создаю пользовательский базовый пакет Yahoo, добавив следующее extenstion.py в директории $ ZIPLINE_ROOT:Zipline Bundle вчерашние данные

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

и когда я бегу пакет глотают все нормально.

zipline ingest -b test-bundle 

zipline bundles 

производит выход (я просто побежал секунду назад)

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

большой, все работает, как ожидалось.

, когда я запускаю Zipline с некоторой базовой стратегии в течение 2 недель:

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

это работает, пока не доберется до четвергов (12/08/2016) Дата:

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 

но если я запустить его:

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

Тогда я получить ожидаемый успешный результат:

[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 

Любая идея, почему мои пакеты загружаются в данные Т-2. Я ожидал бы увидеть данные 12/8 и 12/9, рынки были открыты, это были обычные дни, и я вижу данные в финансах Yahoo в те дни.

Спасибо -

ответ

0

Это происходит потому, что эталонные возвращается не доступны, и доступны только с T-2 основы, в том числе торгового дня. (IE: если вы запустите его в понедельник утром, тогда данные дня будут доступны, и вы сможете запустить симуляцию до пятницы), если вы запустите его в субботу/воскресенье, последний возможный день для теста - в среду, а последний день симуляции это четверг.

возможные решения:

  1. Изменить Zipline, чтобы быть в состоянии повернуть планку от
  2. Изменить Zipline использовать любой тикер в качестве ориентира (и только по умолчанию запаса indicies в) из пучка

тока обходной путь:

изменения: ./zipline/gens/tradesimulation.py

и установить:

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

таким образом он не проверяет, есть ли данные, и просто всегда возвращает 1 для базового