Я знаю, что этот вопрос вроде как решен, но я попробовал то, что они предлагают по проблемам github, и это мне не помогло, поэтому я решил показать, как я решил свою проблему. Может быть, это поможет вам.
Проблема заключается в файле Benchmark.py (и некоторых других) zipline, где он пытается получить данные из iex и терпит неудачу, потому что их функция изменилась.
Я покажу вам, что я сделал, чтобы запустить пример кода:
(Я предполагаю, что вы уже установили zipline и запускаете Apple, покупая пример кода)
1.benchmark.py: загляните в папку zipline на вашем компьютере (то, что вы скачали или установили pip/conda). Открой Benchmark.py (найди его первым) и отредактируй его, изменив там весь код на этот:
import numpy as np
import pandas as pd
import pandas_datareader.data as pd_reader
def get_benchmark_returns(symbol, first_date, last_date):
data = pd_reader.DataReader(
symbol,
'yahoo',
first_date,
last_date
)
data = data['Close']
data[pd.Timestamp('2008-12-15')] = np.nan
data[pd.Timestamp('2009-08-11')] = np.nan
data[pd.Timestamp('2012-02-02')] = np.nan
data = data.fillna(method='ffill')
return data.sort_index().tz_localize('UTC').pct_change(1).iloc[1:]
этот код был взят из ответа shlomikushchi страницы github о проблеме. Вот шломикущи переключили источник данных с iex на pandas, yahoo.
2.Далее открываем файл: loaders.py, тоже где-то в зиплайне:
там есть строка, в которой вызывают функцию: (ищите это в коде)
данные = get_benchmark_returns (символ
изменить его на:
data = get_benchmark_returns(symbol,first_date, last_date)
3.open trade.py, тоже где-то в папке zipline, после этой строчки:
class SimulationParameters(object):
def __init__(self, start_session, end_session,
trading_calendar,
capital_base=DEFAULT_CAPITAL_BASE,
emission_rate='daily',
data_frequency='daily',
arena='backtest'):
введите эти строки:
start_session = pd.Timestamp(start_session).tz_localize(tz='US/Central')
end_session = pd.Timestamp(end_session).tz_localize(tz='US/Central')
теперь он должен работать, когда вы запускаете код здесь:
https://www.zipline.io/beginner-tutorial.html
person
daniel zarakhovsky
schedule
01.11.2019