Python ZIPLINE:_RunAlgoError:未提供``benchmark\u spec``并且``initialize`中未调用``ZIPLINE.api.set\u benchmark`````
这是我的第一个问题,请原谅我的错误 我一直在读Andreas Clenow的Trading Evolved,一本关于使用Python进行回溯测试和融资的书 这是我收到的代码和错误Python ZIPLINE:_RunAlgoError:未提供``benchmark\u spec``并且``initialize`中未调用``ZIPLINE.api.set\u benchmark`````,python,pandas,finance,zipline,back-testing,Python,Pandas,Finance,Zipline,Back Testing,这是我的第一个问题,请原谅我的错误 我一直在读Andreas Clenow的Trading Evolved,一本关于使用Python进行回溯测试和融资的书 这是我收到的代码和错误 %matplotlib inline # Import Zipline functions that we need from zipline import run_algorithm from zipline.api import order_target_percent, symbol # Import dat
%matplotlib inline
# Import Zipline functions that we need
from zipline import run_algorithm
from zipline.api import order_target_percent, symbol
# Import date and time zone libraries
from datetime import datetime
import pytz
import pandas as pd
# Import visualization
import matplotlib.pyplot as plt
def initialize(context):
# Which stock to trade
context.stock = symbol('AAPL')
# Moving average window
context.index_average_window = 100
def handle_data(context, data):
# Request history for the stock
equities_hist = data.history(context.stock, "close",
context.index_average_window, "1d")
# Check if price is above moving average
if equities_hist[-1] > equities_hist.mean():
stock_weight = 1.0
else:
stock_weight = 0.0
# Place order
order_target_percent(context.stock, stock_weight)
def analyze(context, perf):
fig = plt.figure(figsize=(12, 8))
# First chart
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)
# Second chart
ax = fig.add_subplot(312)
ax.plot(perf['gross_leverage'],
label='Exposure', linestyle='-', linewidth=1.0)
ax.legend()
ax.grid(True)
# Third chart
ax = fig.add_subplot(313)
ax.plot(perf['returns'], label='Returns', linestyle='-.', linewidth=1.0)
ax.legend()
ax.grid(True)
# Set start and end date
#start_date = datetime(1996, 1, 1, tzinfo=pytz.UTC)
#end_date = datetime(2018, 12, 31, tzinfo=pytz.UTC)
#start_date = pd.to_datetime('1996-1-1', utc=True)
#end_date = pd.to_datetime('2018-12-31', utc=True)
start_date = pd.to_datetime('1996-1-1', utc=True)
end_date = pd.to_datetime('2018-12-31', utc=True)
# Fire off the backtest
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'
)
我收到的错误是
NoBenchmark回溯(最近一次呼叫最后一次)
_RunAlgoError:未提供基准测试规范
,并且初始化
中未调用zipline.api.set\u基准测试
提前感谢我遇到了同样的问题,对我有效的方法是将initialize()中的基准设置为False(您必须从zipline.api导入set_benchmark)
我遇到了类似的问题(在jupyter中使用以下代码运行zipline时)
%load_ext zipline
from zipline.api import order, record, symbol, set_benchmark
def initiatlize(context):
context.stock = symbol('AAPL')
set_benchmark(False)
def handle_data(context, data):
order(symbol('AAPL'), 10)
record(APPL=data.current(symbol('AAPL'), "price"))
%zipline --bundle quantopian-quandl --start 2008-1-1 --end 2012-1-1 -o strat.pickle
在执行命令中添加“-no benchmark”选项修复了这个问题。我仍然对该选项的作用感兴趣,但这是下一次
%zipline --bundle quantopian-quandl --no-benchmark --start 2008-1-1 --end 2012-1-1 -o strat.pickle
注意
我提到的代码是通过
%zipline --bundle quantopian-quandl --no-benchmark --start 2008-1-1 --end 2012-1-1 -o strat.pickle