如何使用Pandas计算6个月月度收益率的滞后滚动累计收益率
Pandas实现6个月滞后滚动累计收益率计算
计算逻辑
滚动累计收益率的核心计算规则是将窗口内的月度收益率转为增长因子(即收益率+1)后相乘,最终减1得到累计收益率,滞后需求通过将计算结果向下偏移对应期数实现,和Excel的滚动计算逻辑完全对齐。
实现代码
import pandas as pd # 1. 构造/导入数据,此处为样例,可替换为你读取本地文件的逻辑,例如pd.read_excel("你的数据文件路径") data = { "日期": ["2023-01", "2023-02", "2023-03", "2023-04", "2023-05", "2023-06", "2023-07", "2023-08"], "月度收益率": [0.01, 0.02, -0.005, 0.015, 0.03, -0.01, 0.025, 0.01] } df = pd.DataFrame(data) df["日期"] = pd.to_datetime(df["日期"]) # 2. 核心计算:6个月滚动累计收益率 df["滚动6个月累计收益率"] = (1 + df["月度收益率"]).rolling(window=6, min_periods=6).prod() - 1 # 3. 滞后处理:调整shift参数即可匹配你需要的滞后期数 df["滞后滚动6个月累计收益率"] = df["滚动6个月累计收益率"].shift(1) # 可通过df.to_excel("结果文件路径.xlsx", index=False)将结果导出到Excel print(df)
参数说明
window=6:指定滚动窗口长度为6个月,符合计算需求min_periods=6:要求窗口内必须有6个有效数值才会计算结果,不满6个月的位置返回空值,和Excel默认计算逻辑对齐,若允许短窗口计算可自行调小该参数shift(1):控制滞后期数,需要滞后N期就将参数改为N即可
注意:如果原始收益率是百分比格式,计算前需要先除以100转为小数格式
内容的提问来源于stack exchange,提问作者Nicholas Abrams
相关产品推荐
相关产品推荐

