我想计算一个称为“下行 beta”的数量。假设我有一个数据框 df:
df = pd.DataFrame({'A': [-0.1,0.3,-0.4, 0.8,-0.5],'B': [-0.2,0.5,0.3,-0.5,0.1]},index=[0, 1, 2, 3,4])
我想添加一个列“C”,它计算这个下行 beta 定义为列 A 和 B 之间的协方差,仅考虑 A 列的负值与 B 的相应值。然后应该将该协方差除以方差列 A 仅考虑负值。
在上面的例子中,它应该相当于计算两个序列之间的协方差:[-0.1,-0.4,-0.5] 和 [-0.2,0.3,0.1]。除以序列的方差 [-0.1,-0.4,-0.5]。
下一步是在初始大数据帧 df 的索引上滚动该指标。
有没有一种有效的方法来做到这一点?以矢量化的方式。我猜想结合 pd.rolling_cov 和 np.where?
谢谢!