Python 投资组合收益率
我有一个包含市场数据的数据框和一个专门用于每日回报的专栏。 我很难创建一个价值100000.00美元的投资组合,并在数据系列的整个生命周期内计算其累积回报 理想情况下,我希望使用pandas计算“portfolio”列,但这样做有困难。见下面的目标输出。多谢各位Python 投资组合收益率,python,pandas,finance,Python,Pandas,Finance,我有一个包含市场数据的数据框和一个专门用于每日回报的专栏。 我很难创建一个价值100000.00美元的投资组合,并在数据系列的整个生命周期内计算其累积回报 理想情况下,我希望使用pandas计算“portfolio”列,但这样做有困难。见下面的目标输出。多谢各位 index date index return portfolio 0 19900101 2000 Nan 100000.00 1 19900102 2002 0.00
index date index return portfolio
0 19900101 2000 Nan 100000.00
1 19900102 2002 0.001 100100.00
2 19900103 2020 0.00899 100999.90
3 19900104 2001 -0.00941 100049.49
使用cumprod
一些调整:
df=df.replace('Nan',np.nan)
df['return']=pd.to_numeric(df['return'])
使用cumprod
一些调整:
df=df.replace('Nan',np.nan)
df['return']=pd.to_numeric(df['return'])
为了可视化正在发生的情况,cumprod正在计算复合回报,例如cum_r3=1+r1*1+r2*1+r3
为了可视化正在发生的情况,cumprod正在计算复合回报,例如cum_r3=1+r1*1+r2*1+r3
你不应该简单地对返回列求和吗?@WillemVanOnsem你不能假设简单返回而不是log来对返回进行求和,它们需要复合。你不应该简单地对返回列求和吗?@WillemVanOnsem你不能假设简单返回而不是log来对返回进行求和,它们需要复合。有没有一个好的资源来想象这个公式中发生了什么?具体地说,由于某种原因,将起始值相乘会导致看到累积值在整个过程中相乘的心理障碍。。与这个常数相反。。。泰@antonio_zeus你提到了回报率,回报率是以前值的百分比变化,而不是初始值。有没有好的资源来可视化这个公式中发生了什么?具体地说,由于某种原因,将起始值相乘会导致看到累积值在整个过程中相乘的心理障碍。。与这个常数相反。。。泰@antonio_zeus您提到的回报率,回报率是从以前的值变化的百分比,而不是初始值
starting_value = 100000
df = df.assign(portfolio=(1 + df['return'].fillna(0)).cumprod().mul(starting_value))
>>> df
index date index.1 return portfolio
0 0 19900101 2000 NaN 100000.00000
1 1 19900102 2002 0.00100 100100.00000
2 2 19900103 2020 0.00899 100999.89900
3 3 19900104 2001 -0.00941 100049.48995
>>> (1 + df['return'].fillna(0)).cumprod()
0 1.000000
1 1.001000
2 1.009999
3 1.000495
Name: return, dtype: float64