首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: KeyError 'shift‘

Python: KeyError 'shift‘
EN

Stack Overflow用户
提问于 2013-02-11 10:16:46
回答 1查看 1.1K关注 0票数 4

我是Python新手,尝试修改我在这里找到的一对交易脚本:https://github.com/quantopian/zipline/blob/master/zipline/examples/pairtrade.py

最初的脚本被设计成只使用价格。我想用回报来拟合我的模型和投资数量的价格,但我看不出是怎么做到的。

我试过:

  • 在主目录中定义返回数据框架,并在运行中调用它。
  • 将主返回的数据框架定义为全局对象,并在需要时在“句柄数据”中使用
  • 在句柄数据中直接定义retuns的数据帧

我假设最后一个选项是最合适的,但是我在熊猫'shift‘属性上有一个错误。

更具体地说,我试图将'DataRegression‘定义为:

代码语言:javascript
复制
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)

where ' data‘是一个包含全局定义的价格、stock1、stock2和stock3列名的数据框架。句柄数据中的那些行返回错误:

代码语言:javascript
复制
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'

有谁知道为什么以及如何正确地做到这一点吗?

非常感谢,文森特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 00:20:41

这是个有趣的主意。使用zipline最简单的方法是使用将返回字段添加到事件框架(这是一个ndict,而不是有人指出的熊猫DataFrame )。

为此,必须将转换添加到初始化方法:self.add_transform(Returns, 'returns', window_length=1)

(确保在开头添加from zipline.transforms import Returns )。

然后,在batch_transform内部,您可以访问返回而不是价格:

代码语言:javascript
复制
@batch_transform
def ols_transform(data, sid1, sid2):
    """Computes regression coefficient (slope and intercept)
    via Ordinary Least Squares between two SIDs.
    """
    p0 = data.returns[sid1]
    p1 = sm.add_constant(data.returns[sid2])
    slope, intercept = sm.OLS(p0, p1).fit().params

    return slope, intercept

或者,您也可以创建一个batch_transform来将价格转换为您想要的回报。

代码语言:javascript
复制
@batch_transform
def returns(data):
    return data.price / data.price.shift(1) - 1

然后把它传递给OLS变换。或者在OLS变换本身内做这个计算。

汤玛斯

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14810060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档