按标识符和日期分组,并计算不同水平的累计回报

2024-04-29 15:33:36 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个如下所示的数据帧:

           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天提前期。例如,2012年12月31日GOOG提前5天的累计回报,我可以通过以下方法计算:

((1 + df.iloc[9:13]['return']).cumprod()-1).iloc[-1].shift(-5)

但是,我希望尽可能有效地做到这一点。我知道如何分组;但是,我怎样才能在某个时间范围内累积回报,并同时将其转回呢?这在熊猫身上可能吗


Tags: 数据方法目标dfdatereturnshift股票代码