Python 如何在数据帧上计算滚动累积积

Python 如何在数据帧上计算滚动累积积,python,pandas,time-series,finance,Python,Pandas,Time Series,Finance,我有一个返回的时间序列,在一个数据帧中滚动beta和滚动alpha。如何计算数据帧alpha列的滚动年化alpha?(我想在excel中等效为=产品(1+[后续12个月])-1) 我惊讶地发现pandas中没有为此内置的“滚动”函数,但我希望有人能帮助我使用一个函数,然后我可以使用pd.rolling\u apply应用到df['Alpha']列 提前感谢您提供的任何帮助。这样行吗 import pandas as pd import numpy as np # your DataFrame;

我有一个返回的时间序列,在一个数据帧中滚动beta和滚动alpha。如何计算数据帧alpha列的滚动年化alpha?(我想在excel中等效为=产品(1+[后续12个月])-1)

我惊讶地发现pandas中没有为此内置的“滚动”函数,但我希望有人能帮助我使用一个函数,然后我可以使用pd.rolling\u apply应用到df['Alpha']列

提前感谢您提供的任何帮助。

这样行吗

import pandas as pd
import numpy as np

# your DataFrame; df = ...

pd.rolling_apply(df, 12, lambda x: np.prod(1 + x) - 1)

如果将+/-1移出
df
,速度会快一点,如下所示:

cumprod = (1.+df).rolling(window=12).agg(lambda x : x.prod()) -1

rolling\u apply
已在pandas中删除,取而代之的是更通用的 (例如,等)

#agg和apply都会给出相同的答案
(1+df).滚动(窗口=12).累计(np.prod)-1
#但是应用(raw=True)会快得多!
(1+df).滚动(窗口=12).应用(np.prod,原始=True)-1

滚动应用已被弃用,因此此方法效果最佳:

(1+df).cumprod()-1


此函数似乎已被弃用。这里有更近期的解决方案:这个答案没有考虑滚动窗口的大小——它假设它是1。
cumprod = (1.+df).rolling(window=12).agg(lambda x : x.prod()) -1