When I calculate the Internal Rate of Return (irr) using the numpy method irr
, I receive nan
as return.
In [45]: numpy.irr([-10, 2, 2, 2, 2])
Out[45]: nan
Shouldn't the results be at least negative? Let's say -8%? When I tried to understand the implementation better, I looked at the master branch of the NumPy repository, but the implementation did not make any sense to me.
The comments and the given literature do not help to understand under which condition nan
is issued. When I calculate the irr with another program, I get -8% returned.
Why is NumPy returning nan
for the array above?
If you look in the implementation of this function, it only looks for solutions for IRR within (0, 1]. This is because the equation can have several solutions and so only a valid one is left. Here it is a rather (IMO) poor implementation choice, because IRR certainly can be outside this range and still be perfectly valid. In your case, I'd suggest to write your own function (along the lines of the existing one) which will do what you need.