我正在读这本书"掌握金融大熊猫"。直到涉及Zipline模块的所有地方都非常流畅和有趣,但现在当我需要在Jupyter笔记本中重新创建书籍代码时,我从Zipline库获得错误。
这本书的代码是:
import zipline as zp
import zipline.utils.factory as zpf
import pandas as pd
import pandas_datareader.data as web
import numpy as np
# dates
from datetime import datetime
# zipline has its own method to load data from Yahoo! Finance
data = zpf.load_from_yahoo(stocks=['AAPL'],
indexes={},
start=datetime(1990, 1, 1),
end=datetime(2014, 1, 1),
adjusted=False)
class BuyApple(zp.TradingAlgorithm):
""" Simple trading algorithm that does nothing
but buy one share of AAPL every trading period.
"""
trace=False
def __init__(self, trace=False):
BuyApple.trace = trace
super(BuyApple, self).__init__()
def initialize(context):
if BuyApple.trace: print("---> initialize")
if BuyApple.trace: print(context)
if BuyApple.trace: print("<--- initialize")
def handle_data(self, context):
if BuyApple.trace: print("---> handle_data")
if BuyApple.trace: print(context)
self.order("AAPL", 1)
if BuyApple.trace: print("<-- handle_data")
result = BuyApple(trace=True).run(data['2000-01-03':'2000-01-07'])
运行之后,我得到了很长的错误列表,但是Jupyter Notebook单元格中的最后一行是:
/Users/***/anaconda/lib/python3.4/site-packages/zipline/finance/commission.py in __repr__(self)
83 .format(class_name=self.__class__.__name__,
84 cost_per_share=self.cost_per_share,
---> 85 min_trade_cost=self.min_trade_cost)
86
87 def calculate(self, order, transaction):
KeyError: 'cost'
这段代码应该运行一个非常简单的策略,每天只购买AAPL,但它不起作用。我认为Zipline中存在一些问题,而且自书写完以来发生了一些变化。 我设法让它运行,但没有任何交易。它只显示一些与订单无关的数据,因为没有订单而且没有订单,因为我没有实例化BuyApple类。
我是Python和熊猫以及Zipline的新手,所以如果有人能够解释为什么这不起作用,那就太棒了。 我在Python 3.4和Zipline 1.0.1
上答案 0 :(得分:0)
我正在使用Python 2.7和Zipline 0.7.0因为我有32位操作系统和Zipline未来版本专注于64位我无法在我的系统上升级Zipline。代码在我的系统上运行得非常好。也许代码与旧的Zipline版本兼容。你在使用Windows吗?为什么lib和sitepackages之间有Python3.4?我也在使用Anaconda,但我的路径是Anaconda / lib / sitepackages / zipline