当我使用numpy方法计算内部收益率(IRR)时 irr, , 我收到 nan 作为返回。

In [45]: numpy.irr([-10, 2, 2, 2, 2])
Out[45]: nan

结果至少不应该负面吗?假设-8%?当我试图更好地理解实现时,我看了看 Numpy存储库的主分支, ,但是实施对我没有任何意义。

评论和给定的文献无助于在哪个条件下了解 nan 发行。当我使用另一个程序计算IRN时,我会返回-8%。

为什么numpy返回 nan 对于上面的数组?

有帮助吗?

解决方案 2

如果你看 执行 在此功能中,它仅在(0,1]中寻找IRR的解决方案。这是因为方程可以具有多种解决方案,因此只剩下有效的解决方案。这是一个相当(IMO)的实现选择,因为IRR当然可以超出此范围,并且仍然完全有效。在您的情况下,我建议写自己的功能(按照现有的功能),这将完成您需要的事情。

其他提示

只是对先前答案的小修正。该实现不限于(0,1]对于IRR少于0的现金流量(即投资者损失的钱)。IRR的正确范围是(-1,+INF)。但是,校正并不小,因为NPV(费率)可以超过一个零,但在速率大于零的情况下将不超过一个零交叉。因此,将范围限制为[0,+INF)作为实现该功能意味着您在负IRR上失败,但也不必处理多个根部被返回。

附带说明,如果您对NPV(速率)的行为感到好奇,它将接近 +INF或-INF,因为速率接近-1。接近无限的符号与最终现金流的符号相同。在另一端,随着速率接近 +INF,NPV渐近地接近该系列中初始现金流的价值(通常是负现金流)。在速率=零时,NPV的值是现金流量的总和。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top