Я пытался правильно установить Zipline. Я следовал инструкциям в главе 7 книги Андреаса Кленова и столкнулся с проблемами с первой программой тестирования на истории. Чтобы устранить ошибку в моем коде, я загрузил код книг, который должен работать.
%matplotlib inline
from zipline import run_algorithm
from zipline.api import order_target_percent,symbol
from datetime import datetime
import pytz
import matplotlib.pyplot as plt
#debug
import pandas as pd
def initialize(context):
context.stock = symbol('AAPL')
context.index_average_window = 100
def handle_data(context, data):
equities_hist = data.history(context.stock, "close",
context.index_average_window, "1d")
if equities_hist[-1] > equities_hist.mean():
stock_weight = 1.0
else:
stock_weight = 0.0
order_target_percent(context.stock, stock_weight)
def analyze(context, perf):
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(311)
ax.set_title('Strategy Results')
ax.semilogy(perf['portfolio_value'], linestyle='-',
label='Equity Curve', linewidth=3.0)
ax.legend()
ax.grid(False)
ax = fig.add_subplot(312)
ax.plot(perf['gross_leverage'],
label='Exposure', linestyle='-', linewidth=1.0)
ax.legend()
ax.grid(True)
ax = fig.add_subplot(313)
ax.plot(perf['returns'], label='Returns', linestyle='-.', linewidth=1.0)
ax.legend()
ax.grid(True)
start_date=datetime(1996,1,1,tzinfo=pytz.UTC)
end_date=datetime(2018,12,31,tzinfo=pytz.UTC)
results = run_algorithm(
start=start_date,
end=end_date,
initialize=initialize,
analyze=analyze,
handle_data=handle_data,
capital_base=10000,
data_frequency='daily',
bundle='quandl')
Я получаю следующие сообщения об ошибках
AssertionError Traceback (most recent call last)
<ipython-input-8-b9def796232e> in <module>
9 capital_base=10000,
10 data_frequency='daily',
---> 11 bundle='quandl'
12 )
~\Anaconda3202007\envs\zip35\lib\site-packages\zipline\utils\run_algo.py in run_algorithm(start, end, initialize, capital_base, handle_data, before_trading_start, analyze, data_frequency, bundle, bundle_timestamp, trading_calendar, metrics_set, benchmark_returns, default_extension, extensions, strict_extensions, environ, blotter)
405 environ=environ,
406 blotter=blotter,
--> 407 benchmark_spec=benchmark_spec,
408 )
409
~\Anaconda3202007\envs\zip35\lib\site-packages\zipline\utils\run_algo.py in _run(handle_data, initialize, before_trading_start, analyze, algofile, algotext, defines, data_frequency, capital_base, bundle, bundle_timestamp, start, end, output, trading_calendar, print_algo, metrics_set, local_namespace, environ, blotter, benchmark_spec)
201 trading_calendar=trading_calendar,
202 capital_base=capital_base,
--> 203 data_frequency=data_frequency,
204 ),
205 metrics_set=metrics_set,
~\Anaconda3202007\envs\zip35\lib\site-packages\zipline\finance\trading.py in __init__(self, start_session, end_session, trading_calendar, capital_base, emission_rate, data_frequency, arena)
36 arena='backtest'):
37
---> 38 assert type(start_session) == pd.Timestamp
39 assert type(end_session) == pd.Timestamp
40
AssertionError:
Поскольку код работал для автор и я еще не получили рабочий код из zipline, я предполагаю, что это проблема установки. Следуя инструкциям по установке zipline по этой ссылке https://pythonprogramming.net/zipline-local-install-python-programming-for-finance/, я проверил пакеты C, которые должны были быть необходимы в Anaconda Navigator, и обнаружил, что wrapt, cython и cordereddict не были установлены, и установил их через AN.
Я получаю ту же самую ошибку утверждения.
Поэтому я решил попробовать другой более простой фрагмент кода из ссылки Py4fi выше для тестирования установки.
%load_ext zipline
from zipline.api import order, record, symbol
def initialize(context):
pass
def handle_data(context, data):
order(symbol('AAPL'), 10)
record(AAPL=data.current(symbol('AAPL'), 'price'))
%zipline --bundle quantopian-quandl --start 2000-1-1 --end 2012-1-1 -o backtest.pickle
В этом случае я получаю следующую ошибку:
NoBenchmark Traceback (most recent call last)
~\Anaconda3202007\envs\zip35\lib\site-packages\zipline\utils\run_algo.py in _run(handle_data, initialize, before_trading_start, analyze, algofile, algotext, defines, data_frequency, capital_base, bundle, bundle_timestamp, start, end, output, trading_calendar, print_algo, metrics_set, local_namespace, environ, blotter, benchmark_spec)
215 'algo_filename': getattr(algofile, 'name', '<algorithm>'),
--> 216 'script': algotext,
217 }
RunAlgoError: No ``benchmark_spec`` was provided, and ``zipline.api.set_benchmark`` was not called in ``initialize``.
BTW - Я работаю на Windows.
Любые советы приветствуются.