我有看起来像这样的数据(称为返回的数据框)
DATE TICKER RETURN_DATA
2010-01-01 xxx 0.05
2010-01-01 yyy 0.01
2010-01-02 xxx 0.02
2010-01-02 yyy 0.08
.....
2010-01-29 xxx 0.11
2010-01-29 yyy 0.01
我尝试做的是计算 4(n) 周的滚动回报。
我实现了这个
def rolling_fct(returns, window_len):
return returns.groupby('TICKER')['RETURN_DATA'].rolling(window=window_len).apply(lambda x: np.prod(1+x)-1)
其中 window_len = 28 天,这是可行的,但我刚刚发现我需要在时间增量上滚动它,而不是让 window_len = 整数。问题是我正在处理公共假期等,所以我的窗口长度不是固定的。
我只是在时间增量而不是长度上寻找相同的滚动逻辑。