私はPythonが初めてで、ここで見つけたペア取引スクリプトを変更しようとしています: https://github.com/quantopian/zipline/blob/master/zipline/examples/pairtrade.py
元のスクリプトは、価格のみを使用するように設計されています。モデルと投資数量の価格に合わせて返品を使用したいのですが、その方法がわかりません。
私が試してみました:
- メインでリターンのデータフレームを定義し、それを実行で呼び出す
- メインの戻り値のデータ フレームをグローバル オブジェクトとして定義し、「ハンドル データ」の必要な場所で使用する
- ハンドル データで直接 return のデータ フレームを定義する
最後のオプションが最も適切であると想定していますが、パンダの「シフト」属性にエラーがあります。
より具体的には、「DataRegression」を次のように定義しようとしています。
DataRegression = data.copy()
DataRegression[Stock1]=DataRegression[Stock1]/DataRegression[Stock1].shift(1)-1
DataRegression[Stock2]=DataRegression[Stock2]/DataRegression[Stock2].shift(1)-1
DataRegression[Stock3]=DataRegression[Stock3]/DataRegression[Stock3].shift(1)-1
DataRegression = DataRegression.dropna(axis=0)
ここで、「データ」は、グローバルに定義された価格、在庫 1、在庫 2、在庫 3 の列名を含むデータ フレームです。ハンドル データのこれらの行は、エラーを返します。
File "A:\Apps\Python\Python.2.7.3.x86\lib\site-packages\zipline-0.5.6-py2.7.egg\zipline\utils\protocol_utils.py", line 85, in __getattr__
return self.__internal[key]
KeyError: 'shift'
それを正しく行う理由と方法を誰かが知っていますか?
どうもありがとう、ヴィンセント