交易策略:计算投资价值

Trading strategy : Computing value of an Investment

我是 Python 的新手,这是我的问题:

我有这个数据框:

pf = pd.DataFrame({'Dates':['2018-07-31','2018-07-31','2018-08-31','2018-08-31','2018-09-30','2018-09-30'],
                   "Name":["Apple",'Faceook','JP Morgan',"Boeing",'Tesla','Disney'],
                   "Monthly Return":[-0.02,0.11,-0.03, 0.02,-0.08,0.10],
                  "Total Weight":[0.7,0.2,0.1,0.5,0.3,0.2]})

我的objective是return我根据每个月的股票、权重和return投资的最终价值。

假设我们从 1.000 美元开始。 我正在寻找类似下面的东西,假设每个月的剩余资金是 完全再投资

      Dates      Name     Monthly Return    Total Weight     P&L   Remaining Investment
0   2018-07-31  Apple         -0.02            0.7           686 
1   2018-07-31  Faceook        0.11            0.3           333          1019
2   2018-08-31  JP Morgan     -0.03            0.5           494.21
3   2018-08-31  Boeing         0.02            0.5           519.69       1013.91
4   2018-09-30  Tesla         -0.08            0.1           93.28
5   2018-09-30  Disney         0.10            0.9           1003.77      1097.05

我是这样开始的:

A = 1000
pf['P&L']= A * pf['Total Weight'] * (1+pf['Monthly Return'])

但问题是,这仅适用于第一个月,但不适用于其他月份,因为我们不这样做 起点相同(7 月 31 日为 1000 美元,8 月 31 日为 1019 美元)。

我是否必须创建一个循环?

如果您有任何解决此问题的想法,请随时分享! 谢谢!

对于这样的事情,使用零美元投资组合跟踪 return 会更容易。

df = pd.DataFrame({'Dates':['2018-07-31','2018-07-31','2018-08-31','2018-08-31','2018-09-30','2018-09-30'],
                   "Name":["Apple",'Faceook','JP Morgan',"Boeing",'Tesla','Disney'],
                   "Monthly Return":[-0.02,0.11,-0.03, 0.02,-0.08,0.10],
                  "Total Weight":[0.7,0.2,0.1,0.5,0.3,0.2]})

df['weighted_return'] = df['Monthly Return'] * df['Total Weight']
rets = df.groupby(['Dates'])['weighted_return'].sum()
cumulative_rets = (rets + 1).cumprod() - 1
cumulative_rets

所以你的 return 系列是:

Dates
2018-07-31   0.00800
2018-08-31   0.01506
2018-09-30   0.01100
Name: weighted_return, dtype: float64

现在您可以考虑如何合并交易成本、滑点等。零美元投资组合方法的主要问题是它假设您可以购买部分股票。通常这种零美元方法用于学术论文。

您应该查看 pyfolio 来展示结果和计算风险指标。

假设我们有一个稳定的每月 return。然后我们需要额外的整数变量months

investment = 1000
months = 1
pf['P&L'] = investment * pf['Total Weight'] * (1+pf['Monthly Return'])**months