测试一些股票的自相关 returns

Test for autocorrelation on a number of stock returns

我想对股票 returns 的数据集进行自相关测试(例如 Durbin Watson)。特别是,我有一个包含季度股票 return 的数据集,因此每个季度有 1 个观察值,代表该季度收益公告后 1 天的股价 return。对于 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

我想使用:

statsmodels.stats.stattools.durbin_watson(残基,轴=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))