Если вы посмотрите в реализация этой функции он ищет только решения для IRR в (0, 1]. Это потому, что уравнение может иметь несколько решений, и поэтому остается только действительный. Вот довольно (IMO) плохой выбор реализации, потому что IRR Конечно, может быть за пределами этого диапазона и при этом быть совершенно действительным. В вашем случае я бы посоветовал написать свою собственную функцию (в соответствии с существующей), которая сделает то, что вам нужно.
Numpy: Financial IRR Метод возвращает «NAN». Почему?
Вопрос
Когда я рассчитываю внутреннюю скорость возврата (IRR), используя метод Numpy irr
, Я получаю nan
как возврат.
In [45]: numpy.irr([-10, 2, 2, 2, 2])
Out[45]: nan
Разве результаты не должны быть хотя бы негативными? Допустим, -8%? Когда я попытался лучше понять реализацию, я посмотрел на главная ветвь репозитория Numpy, но реализация не имела никакого смысла для меня.
Комментарии и данная литература не помогают понять, в каком состоянии nan
выпущен. Когда я рассчитываю IRR с другой программой, я получаю -8% возврата.
Почему возвращается Numpy nan
Для массива выше?
Решение 2
Другие советы
Просто небольшая коррекция к предыдущему ответу. Реализация не ограничивает IRR (0,1], он ограничивает 1/(1+IRR) (0,1]. Это ограничивает IRR до [0,+Inf). Это все еще неполная реализация, поскольку возвращает NAN Для денежных потоков, которые имеют IRR менее 0 (то есть инвестор потерял деньги). Правильный диапазон для IRR составляет (-1,+Inf). Однако коррекция не является тривиальной, потому что NPV (скорость) может иметь больше, чем Один нулевой, но будет иметь не более одного нулевого пересечения, где скорость больше нуля. Таким образом, ограничение диапазона [0,+inf), поскольку функция выполняется корни возвращаются.
В качестве примечания, если вам интересно с поведением NPV (скорость), он приближается к +inf или -inf в виде приближения скорости -1. Знак бесконечности, к которому он приближается, такой же, как и знак окончательного денежного потока. С другой стороны, по мере приближения скорости +Inf, NPV асимптотически приближается к стоимости начального денежного потока в серии (обычно отрицательный денежный поток). По ставке = нулевое значение NPV - это сумма денежных потоков.