在pandas df中计算一个运行 return

Calculate a running return in pandas df

我有一个每日 return 费率的 df。我插入了一个列,从第 1 天的初始投资 100 美元开始。我正在尝试计算每天的 运行 return

import pandas as pd

d = {'day': [1, 2, 3], 'return': [1.00, 1.04, 1.02], 'init_invest': [100, 0, 0]}
df = pd.DataFrame(data=d)

我们将新列称为“值” 在这个例子中,我希望看到

Day 1 value = 100 x 1.00 = 100
Day 2 value = 100 x 1.04 = 104
Day 3 value = 104 x 1.02 = 106.08

一开始我以为我需要在这里使用shift,但是没有成功。我怎样才能创建这个新的计算倍率*前一行的值?

对于你的情况,因为你知道所有的returns,你可以直接用它来计算。

Day 1 value is given.
Day 2 value = day 1 value * 1.04 = 104
Day 3 value = day 1 value * 1.04 * 1.02 = 106.08

df["init_invest"] = df["return"].cumprod() * df["init_invest"].iloc[0]

   day  return  init_invest
0    1    1.00       100.00
1    2    1.04       104.00
2    3    1.02       106.08
``