Как вручную предоставить эталонный тест в 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