Как вручную предоставить эталонный тест в zipline

Я хочу создать воспроизводимый пример, в котором торгуемый ряд и эталон предоставляются вручную. Это сделало бы жизнь людей, которые приближаются к zipline невероятно легче. Фактически, учитывая недавнее закрытие API Yahoo!Finance, даже вводные примеры с zipline больше не будут работать, так как будет возвращена ошибка HTTP при попытке импортировать эталонный тест ^GSPC из Yahoo за кулисами. Как следствие, в настоящее время нет ни одного фрагмента кода из официального учебника, который работает AFAIK.

import pytz
from pandas_datareader import DataReader
from collections import OrderedDict
from zipline.algorithm import TradingAlgorithm
from zipline.api import order, record, symbol, set_benchmark
# Import data from yahoo
data = OrderedDict()
start_date = '01/01/2014'
end_date = '01/01/2017'
data['AAPL'] = DataReader('AAPL',
                          data_source='google',
                          start=start_date,
                          end=end_date)
data['SPY'] = DataReader('SPY',
                         data_source='google',
                         start=start_date,
                         end=end_date)
# panel.minor_axis is ['Open', 'High', 'Low', 'Close', 'Volume'].
panel = pd.Panel(data)
panel.major_axis = panel.major_axis.tz_localize(pytz.utc)

def initialize(context):
    set_benchmark(data['SPY'])

def handle_data(context, data):
    order(data['AAPL'], 10)
    record(AAPL=data.current(data['AAPL'], 'Close'))

algo_obj = TradingAlgorithm(initialize=initialize,
                            handle_data=handle_data,
                            capital_base=100000)
perf_manual = algo_obj.run(panel)

Возвращает: HTTPError: HTTP Error 404: Not Found

Вопрос: как заставить стратегию работать, используя AAPL в качестве торгуемого актива и SPY в качестве ориентира?Ограничение: AAPL и SPY должны быть предоставлены вручную, как в примере.

2 ответа

Отказ от ответственности: я поддерживаю Zipline.

Вы можете использовать csvdir связать, чтобы принять CSV-файлы (учебник здесь), а затем сделать вызов set_benchmark() в вашем initialize() функция. Я также работаю над веткой, которая позволяет алгоритмам zipline работать без теста, поэтому даже если вы не можете получить данные теста, ваш алгоритм не должен давать сбой.

Замените zipline в вашем requirements.txt с этим:

git+https://github.com/quantopian/zipline

Тогда беги pip install -r requirements.txt

Другие вопросы по тегам