Учитывая DataFrame, который выглядит следующим образом:
ticker date return
0 AAPL 2012-12-31 0.032615
1 AAPL 2013-01-02 0.036938
2 AAPL 2013-01-03 0.023232
3 AAPL 2013-01-04 0.014632
5 AMZN 2013-01-07 -0.007089
6 AMZN 2013-01-08 0.003060
7 AMZN 2013-01-09 -0.015760
8 AMZN 2013-01-10 -0.019112
9 GOOG 2012-12-31 0.032615
10 GOOG 2013-01-02 0.036938
11 GOOG 2013-01-03 0.023232
12 GOOG 2013-01-04 0.014632
13 GOOG 2013-01-07 -0.017902
13 GOOG 2013-01-08 -0.007089
14 GOOG 2013-01-09 0.003060
15 GOOG 2013-01-10 -0.015760
Моя цель заключается в том, чтобы для каждой строки у меня был другой столбец, в котором сообщалось бы, каким будет совокупный доход тикера за 5, 21, 63 и 252 дня вперед. Например, совокупный доход на пять дней вперед от 31 декабря 2012 года для GOOG, который я могу вычислить, выполнив:
((1 + df.iloc[9:13]['return']).cumprod()-1).iloc[-1].shift(-5)
Однако я хочу сделать это максимально эффективно. Я знаю, как группировать тикеры и даты, но как я могу также накапливать доходы за некоторый горизонт и одновременно сдвигать их обратно? Возможно ли это даже в пандах?