python - Python Pandas 复合聚合不等于单个资产复合的总和
问题描述
有一个奇怪的问题绕过了统计/数学和编程之间的界限(我不确定根本问题是什么)。
我有一个按月按资产分类的回报数据框。这是数据框的一个小快照:
Strategy Theme Idea month PnL
Event Catalyst European Oil Services 2019-05 -1.412264e-10
Event Catalyst European Oil Services 2019-06 -2.688968e-08
Event Catalyst None 2019-06 1.546945e-08
Event M&A None 2019-06 2.128868e-08
Fundamental 5G Rollout Intelsat 2019-01 1.375019e-02
现在,当我按月分组并求和,然后复合结果时,我得到了我期望的答案,以及我能够在 excel 中复制的内容:
x = df.groupby(['month']).sum()
total_pnl = x.compound()['PnL']
让我得到 4.16% 的例外结果。到目前为止,一切都很好。但是,采用相同的数据框,将各个想法复合,然后求和,会产生不同的答案:5.89%
dfx = df.pivot_table(index='month',columns=['Strategy','Theme','Idea'],values='PnL')
dfx = dfx.fillna(0.0)
dfx = dfx.compound()
dfx = dfx.reset_index(drop=False)
dfx.columns= ['Strategy','Theme','Idea','PnL']
total_pnl = sum(dfx['PnL'])
起初,我认为将单个回报复合然后将它们相加在数学上是不可接受的,但我在 excel 中做的一个简单示例向我证明了这两种方法应该是相同的。然后,如果在任何给定月份的回报为 0 会是一个问题,我会在 excel 中进行检查——它不是。
现在,我一直在摸索几个小时,试图弄清楚为什么当我在 Python 中执行这些数字时这些数字不匹配,而我的简单 excel 示例向我展示了它们应该匹配的原因。
你能想到我没有考虑到可能导致这种情况的任何警告吗?
解决方案
推荐阅读
- github - GitHub 状态:失败状态,但仍然可以合并受保护的分支
- aws-api-gateway - 是否可以向 API 网关上的所有端点添加标头,而不是单独添加到每个请求?
- dax - 将 SELECTEDVALUE 与 PowerPivot 一起使用
- facebook - Facebook Insights API 分页
- python - 使用 Marshmallow SQLAlchemy 序列化 UUID
- c++ - 具有完美转发的模板转换构造函数
- javascript - 如何将一个或多个变量附加到一个事件侦听器?
- powerbi - 在 Power BI Desktop 中自动刷新数据
- c# - aspnet-core-ad-authentication 项目 HTTP 错误 502.5 - 进程失败
- tableau-api - 在组合列上使用 Tableau 中的 RANK 函数。但是,也显示单个列