微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算DataFrame的总回报

如何解决计算DataFrame的总回报

这是我在这里的第一篇文章,希望您能理解困扰我的事情。

因此,我有一个DataFrame,其中包含从2010年开始每天约1200家公司的价格。现在,我想计算每个公司的总回报。我的DataFrame按日期索引。我可以用 df.iloc[-1]/df.iloc[0]方法,但是有些公司后来开始公开交易,因此我无法获得这些公司的结果,因为它们被NaN值除以。我尝试通过创建一个包含每个股票(列)的第一个有效指数的列表,然后在尝试计算总回报时得到错误的结果! 我已经尝试过经典的for循环:

for l in list:
   returns = df.iloc[-1]/df.iloc[l]

例如,一只股票的最后价格是16美元左右,而我拥有的第一个数据是1.5美元,这是回报的10倍以上,而我的结果仅为1.1左右!我还要补充一点,上述列表还包括Date的第一个有效索引,并且它位于第一个位置。

有人可以帮我吗?非常感谢

解决方法

实际上您可以通过多种方式进行此操作。但我确实建议您在开始更复杂的示例之前,先通过一些基本示例来熟悉python的技能。

如果您想按照自己的方式做,可以这样:

returns = {}
for stock_name in df.columns:
    returns[stock_name] = df[stock_name].dropna().iloc[-1] / df[stock_name].dropna().iloc[0]

更Python化的方式是将其向量化,例如:

returns = ((1 + data.ffill().pct_change())
            .cumprod()
            .iloc[-1])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。