「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です。