Se você olhar no implementação desta função, ela apenas procura soluções para TIR dentro de (0, 1].Isso ocorre porque a equação pode ter várias soluções e, portanto, resta apenas uma válida.Aqui é uma escolha de implementação bastante ruim (IMO), porque a TIR certamente pode estar fora dessa faixa e ainda assim ser perfeitamente válida.No seu caso, sugiro escrever sua própria função (nos moldes da existente) que fará o que você precisa.
NumPy:o método irr financeiro retorna 'nan'.Por que?
Pergunta
Quando calculo a Taxa Interna de Retorno (irr) usando o método numpy irr
, Eu recebi nan
como retorno.
In [45]: numpy.irr([-10, 2, 2, 2, 2])
Out[45]: nan
Os resultados não deveriam ser pelo menos negativos?Digamos -8%?Quando tentei entender melhor a implementação, olhei para o branch master do repositório NumPy, mas a implementação não fez sentido para mim.
Os comentários e a literatura fornecida não ajudam a compreender em que condições nan
é emitido.Quando calculo o irr com outro programa, recebo -8% de retorno.
Por que o NumPy está retornando nan
para a matriz acima?
Solução 2
Outras dicas
Apenas uma pequena correção na resposta anterior.A implementação não limita a TIR a (0,1), mas limita 1/(1+TIR) a (0,1].Isso limita a TIR a [0,+Inf).Ainda é uma implementação incompleta porque retorna NaN para fluxos de caixa que têm uma TIR menor que 0 (ou seja,o investidor perdeu dinheiro).O intervalo correto para TIR é (-1,+Inf).A correção, porém, não é trivial, pois o VPL(taxa) pode ter mais de um zero, mas não terá mais do que um cruzamento de zero onde a taxa for maior que zero.Portanto, limitar o intervalo a [0,+inf) conforme a função é implementada significa que você falhará em TIRs negativas, mas também nunca terá que lidar com o retorno de múltiplas raízes.
Como observação lateral, se você estiver curioso sobre o comportamento do VPL (taxa), ele se aproxima de +Inf ou -Inf conforme a taxa se aproxima de -1.O sinal do infinito ao qual se aproxima é igual ao sinal do fluxo de caixa final.No outro extremo, à medida que a taxa se aproxima de +Inf, o VPL aproxima-se assintoticamente do valor do fluxo de caixa inicial da série (geralmente um fluxo de caixa negativo).À taxa = zero, o valor do VPL é a soma dos fluxos de caixa.