Офлайн-тестирование Python Zipline

Я хочу использовать zipline в автономном режиме без ноутбуков Jupyter. Я пытался заставить zipline принимать данные из quandl и успешно использовать данные, но мне это не удалось. Вот мое окружение -

python 3.5, используя pycharm, замораживание pip3 дает мне -

alembic==1.0.5
alphalens==0.3.4
backcall==0.1.0
bcolz==0.12.1
Bottleneck==1.2.1
certifi==2018.11.29
chardet==3.0.4
Click==7.0
colorama==0.4.1
contextlib2==0.5.5
cycler==0.10.0
cyordereddict==1.0.0
Cython==0.29.2
decorator==4.3.0
empyrical==0.5.0
idna==2.8
intervaltree==3.0.2
ipython==7.2.0
ipython-genutils==0.2.0
jedi==0.13.2
kiwisolver==1.0.1
Logbook==1.4.1
lru-dict==1.1.6
lxml==4.3.0
Mako==1.0.7
MarkupSafe==1.1.0
matplotlib==3.0.2
multipledispatch==0.6.0
networkx==1.11
numexpr==2.6.9
numpy==1.14.3
pandas==0.22.0
pandas-datareader==0.7.0
parso==0.3.1
patsy==0.5.1
pickleshare==0.7.5
prompt-toolkit==2.0.7
pyfolio==0.9.0
Pygments==2.3.1
pyparsing==2.3.0
python-dateutil==2.7.5
python-editor==1.0.3
pytz==2018.7
requests==2.21.0
requests-file==1.4.3
scikit-learn==0.20.2
scipy==1.2.0
seaborn==0.9.0
six==1.12.0
sortedcontainers==2.1.0
SQLAlchemy==1.2.15
statsmodels==0.9.0
tables==3.4.4
toolz==0.9.0
trading-calendars==1.6.1
traitlets==4.3.2
urllib3==1.24.1
wcwidth==0.1.7
win-unicode-console==0.5
wrapt==1.10.11
zipline==1.3.0

Мой тестовый код выглядит следующим образом:

from zipline.api import order, record, symbol
import os


def initialize(context):
    pass


def handle_data(context, data):
    order(symbol('AAPL'), 10)
    record(AAPL=data.current(symbol('AAPL'), 'price'))


def run_algo():
    data_ingest = False
    bundle = 'quantopian-quandl'
    if data_ingest:
        auth_tok = "################"
        data_ingest_command = 'set QUANDL_API_KEY=%s && zipline ingest -b %s' % (auth_tok,bundle)
        os.system(data_ingest_command)

    path = 'C:\\Users\\mattt\\PycharmProjects\\FFTTrading\\trades2.py'
    print('zipline run -f %s --bundle %s --start 2016-3-1 --end 2017-12-30' % (path,bundle))
    run_command = 'zipline run -f %s --bundle %s --start 2013-3-1 --end 2017-12-28 -o backtest.pickle' % (path,bundle)
    os.system(run_command)

run_algo()

Я уже выполнил часть приема данных, и это удалось. В последний раз я загружал данные в 22:49 05.01.2019 (мое время). Я запускаю код выше в 12:55 07.01.2019 (мое время), однако я получаю этот вывод:

zipline run -f C:\Users\mattt\PycharmProjects\FFTTrading\trades2.py --bundle quantopian-quandl --start 2016-3-1 --end 2017-12-30
[2019-01-07 17:55:33.814552] INFO: Loader: Cache at C:\Users\mattt/.zipline\data\SPY_benchmark.csv does not have data from 2013-03-01 00:00:00+00:00 to 2017-12-28 00:00:00+00:00.

[2019-01-07 17:55:33.814552] INFO: Loader: Downloading benchmark data for 'SPY' from 2013-02-28 00:00:00+00:00 to 2017-12-28 00:00:00+00:00
[2019-01-07 17:55:35.311201] WARNING: Loader: Still don't have expected benchmark data for 'SPY' from 2013-02-28 00:00:00+00:00 to 2017-12-28 00:00:00+00:00 after redownload!
zipline run -f C:\Users\mattt\PycharmProjects\FFTTrading\trades2.py --bundle quantopian-quandl --start 2016-3-1 --end 2017-12-30
[2019-01-07 17:55:40.745023] WARNING: Loader: Refusing to download new benchmark data because a download succeeded at 2019-01-07 17:55:35.311202+00:00.
zipline run -f C:\Users\mattt\PycharmProjects\FFTTrading\trades2.py --bundle quantopian-quandl --start 2016-3-1 --end 2017-12-30
[2019-01-07 17:55:46.134072] WARNING: Loader: Refusing to download new benchmark data because a download succeeded at 2019-01-07 17:55:35.311202+00:00.
zipline run -f C:\Users\mattt\PycharmProjects\FFTTrading\trades2.py --bundle quantopian-quandl --start 2016-3-1 --end 2017-12-30
[2019-01-07 17:55:51.581558] WARNING: Loader: Refusing to download new benchmark data because a download succeeded at 2019-01-07 17:55:35.311202+00:00.
zipline run -f C:\Users\mattt\PycharmProjects\FFTTrading\trades2.py --bundle quantopian-quandl --start 2016-3-1 --end 2017-12-30

Кто-нибудь может понять, что здесь происходит? Как мне правильно принимать и использовать данные? Благодарю вас!


person Community    schedule 07.01.2019    source источник


Ответы (2)


Не уверен, что это все еще актуально, но на случай, если другие испытают это:

Проблема заключается в данных SPY Benchmark, которые раньше были получены из IEX как часть процесса приема. IEX больше не предлагает бесплатный доступ незарегистрированным пользователям.

Решения можно найти здесь: https://github.com/quantopian/zipline/issues/2480< /а>

По сути: либо «подделайте» эталонный тест, либо зарегистрируйтесь в IEX Cloud (бесплатно) и измените файл Benchmarks.py, чтобы выполнить вызов API с вашей учетной записью IEX Cloud.

Кортик

person user1653205    schedule 09.09.2019

Я сделал недавний репозиторий, это небольшая корректировка файла Benchmarks.py. Я также предоставляю ежедневные данные SPY с 1993 по 2020 год где-то в апреле, но вы должны сделать это в формате csv и убедиться, что структура данных в порядке. Это сработало для меня, прежде чем я использовал данные тестов как 0, но создание всех показателей производительности самостоятельно раздражает. Более того, я заметил, что у многих людей возникают проблемы с использованием личных данных и проблемы с API, поскольку IEX онлайн предоставляет данные за 5 лет, я думаю. Итак, я надеюсь, что это поможет.

https://github.com/cemal95/benchmark-returns-for-zipline.git

person cem    schedule 30.04.2020