我不能复制书中的代码"掌握金融大熊猫的代码" - Zipline - KeyError:'费用'

时间:2016-09-04 09:04:57

标签: python pandas algorithmic-trading zipline

我正在读这本书"掌握金融大熊猫"。直到涉及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

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