我想在一个股票收益数据集上进行一个自相关测试(比如说Durbin Watson)。特别是,我有一个季度股票收益的数据集,所以每个季度都有一个观察值,它表示该季度公布收益后1天的股票价格回报。2支股票和3个季度的最小例子如下:
data = [{'date': '3/22/18', 'return': 1},{'date': '3/22/18', 'return': 1},
{'date': '6/22/18', 'return': 3},{'date': '6/22/18', 'return': 3},
{'date': '9/22/18', 'return': 2},{'date': '9/22/18', 'return': 2}]
df = pd.DataFrame(data, index=['s1', 's2','s1','s2','s1','s2'])
date return
s1 3/22/18 1
s2 3/22/18 1
s1 6/22/18 3
s2 6/22/18 3
s1 9/22/18 2
s2 9/22/18 2
因为我有大量的股票,所以我认为对每个股票单独进行测试,然后有一个与每个股票相关联的DW测试统计数组是有意义的。说这样的话:
s1 0.453
s2 1.593
s3 3.453
我想用:
状态模型.STATS.STATORKORK.Dur宾尼沃森(ResiDS,Axess=0)
但我不太确定如何获得上述数组。任何帮助都是非常感谢的。
最佳答案
按组使用DW测试的一种方法如下。
我正在重用您的数据生成过程,将序列作为列添加,执行groupby并直接应用测试
data = [{'date': '3/22/18', 'return': 1},{'date': '3/22/18', 'return': 1},
{'date': '9/22/18', 'return': 3.0},{'date': '9/22/18', 'return': 3},
{'date': '6/22/18', 'return': 2},{'date': '6/22/18', 'return': 2}]
df = pd.DataFrame(data, index=['s1', 's2','s1','s2','s1','s2'])
df.reset_index(inplace=True)
df.groupby('index')['return'].apply(lambda x:
statsmodels.stats.stattools.durbin_watson(x, axis=0))
关于python - 测试大量股票 yield 的自相关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50441751/