当我使用 numpy 方法 irr
计算内部 yield (irr) 时,我收到了 nan
作为返回。
In [45]: numpy.irr([-10, 2, 2, 2, 2])
Out[45]: nan
结果不应该至少是负面的吗?让我们说-8%? 当我试图更好地理解实现时,我查看了 master branch of the NumPy repository ,但实现对我来说没有任何意义。
评论和给定的文献无助于理解 nan
是在什么条件下发布的。当我用另一个程序计算 irr 时,我得到 -8% 的返回。
为什么 NumPy 为上面的数组返回 nan
?
最佳答案
只是对之前答案的一个小修正。该实现并未将 IRR 限制为 (0,1),而是将 1/(1+IRR) 限制为 (0,1)。这将 IRR 限制为 [0,+Inf]。它仍然是一个不完整的实现,因为它返回 NaN对于 IRR 小于 0 的现金流(即投资者赔钱)。IRR 的正确范围是 (-1,+Inf)。然而,修正并非微不足道,因为 NPV(rate) 可以超过一个零,但在利率大于零的情况下不会超过一个零交叉。因此,在实现函数时将范围限制为 [0,+inf) 意味着您在负 IRR 上失败,但也永远不必处理多个根被归还。
作为旁注,如果您对 NPV(利率)的行为感到好奇,它会在利率接近 -1 时接近 +Inf 或 -Inf。它趋近无穷大的符号与最终现金流量的符号相同。在另一端,随着利率接近 +Inf,NPV 逐渐接近序列中初始现金流量的值(通常为负现金流量)。在利率 = 零时,NPV 的值是现金流量的总和。
关于python - NumPy:金融 irr 方法返回 'nan' 。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824970/