【问题标题】:Trading strategy : Computing value of an Investment交易策略:计算投资价值
【发布时间】:2020-06-12 22:16:35
【问题描述】:

我是 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]})

我的目标是根据每个月的股票、重量和回报来回报我的投资最终价值。

假设我们以 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 美元)。

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

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

【问题讨论】:

    标签: python pandas time-series finance


    【解决方案1】:

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

    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
    

    所以你的回归系列是:

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

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

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

    【讨论】:

    • @SyKer 为什么会这样?如果您在会计应用程序中比较数字并减去“帐户”值,您会想要确保您具有精确的美元价值,以便按照会计中的假设进行帐户平衡。但是对于计算返回序列的应用程序来说,使用浮点运算是如何不准确的。 docs.python.org/2/library/decimal.html
    • @eNc 感谢您的帮助和建议。我来看看 pyfolio!
    【解决方案2】:

    假设我们有稳定的月度回报。然后我们需要额外的整数变量months

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2016-06-04
      • 2021-03-12
      • 1970-01-01
      • 2017-08-17
      • 2020-10-21
      • 2020-11-20
      相关资源
      最近更新 更多