2016-09-04 8 views
0

「Financeのためのパンダのマスター」という本を読んでいます。 Ziplineモジュールが関わっているところまで、とても滑らかで面白かったですが、今はJupyterノートブックのコードを再作成する必要があるときに、Ziplineライブラリからエラーが出てきています。"Finance for Mastering pandas"のコードを複製することはできません - Zipline - KeyError: 'Cost'

本のコードは次のとおりです。

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ノートセル内の最後の行は次のとおりです。

/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とpandasとZiplineにも新しいので、誰かがこれがうまくいかない理由についていくつかの光を放つことができたら、それは素晴らしいことです。 私はPython 3.4とZipline 1.0.1です。

答えて

0

私はPython 2.7とZipline 0.7.0を使用しています。32ビットOSとZiplineの将来のリリースは64ビットに焦点を当てているので、私のシステムでZiplineをアップグレードすることはできません。コードは私のシステム上で完璧に動作しました。おそらくコードは古いZiplineバージョンと互換性があります。窓を使っていますか? libとsitepackagesの間にPython3.4があるのはなぜですか?私もAnacondaを使っていますが、私の道はAnaconda/lib/sitepackages/ziplineです