如果你看 执行 在此功能中,它仅在(0,1]中寻找IRR的解决方案。这是因为方程可以具有多种解决方案,因此只剩下有效的解决方案。这是一个相当(IMO)的实现选择,因为IRR当然可以超出此范围,并且仍然完全有效。在您的情况下,我建议写自己的功能(按照现有的功能),这将完成您需要的事情。
Numpy:财务IRN方法返回“ NAN”。为什么?
题
当我使用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少于0的现金流量(即投资者损失的钱)。IRR的正确范围是(-1,+INF)。但是,校正并不小,因为NPV(费率)可以超过一个零,但在速率大于零的情况下将不超过一个零交叉。因此,将范围限制为[0,+INF)作为实现该功能意味着您在负IRR上失败,但也不必处理多个根部被返回。
附带说明,如果您对NPV(速率)的行为感到好奇,它将接近 +INF或-INF,因为速率接近-1。接近无限的符号与最终现金流的符号相同。在另一端,随着速率接近 +INF,NPV渐近地接近该系列中初始现金流的价值(通常是负现金流)。在速率=零时,NPV的值是现金流量的总和。
不隶属于 StackOverflow