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