如何在Pandas中用100期指数加权协方差与标准差计算DataFrame两列滚动成对相关?
实现100期指数加权滚动成对相关的方案
因为pandas.ewmcov已被弃用,现在可以用ewm().cov()替代,结合指数加权标准差计算来实现需求,具体步骤如下:
核心逻辑代码
import pandas as pd import numpy as np # 构造示例DataFrame(实际使用替换为你的df) np.random.seed(42) df = pd.DataFrame({ 'A': np.random.randn(200), 'B': np.random.randn(200) + 0.5 * np.random.randn(200) }) # 1. 计算100期指数加权协方差(提取A与B的协方差序列) ewm_cov = df[['A', 'B']].ewm(span=100).cov().unstack()['A']['B'] # 2. 计算A、B各自的100期指数加权标准差 ewm_std_A = df['A'].ewm(span=100).std() ewm_std_B = df['B'].ewm(span=100).std() # 3. 计算指数加权滚动成对相关系数 ewm_correlation = ewm_cov / (ewm_std_A * ewm_std_B) # 查看结果(前100期因样本不足会显示NaN) print(ewm_correlation.tail(10))
关键说明
span=100:指定指数加权的窗口跨度,对应你需求的100期,pandas会自动计算对应的衰减因子。- 协方差提取:通过
unstack()将多层索引的协方差结果转为二维结构,直接提取A与B的协方差序列。 - 结果特性:前99期由于样本量不足,相关系数会为
NaN,从第100期开始会有有效计算值,符合滚动计算的逻辑。
内容的提问来源于stack exchange,提问作者Analyst
相关产品推荐
相关产品推荐

