You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:36:08