문제

Numpy 방법을 사용하여 내부 반환 속도 (IRR)를 계산할 때 irr, 나는받습니다 nan 반환으로.

In [45]: numpy.irr([-10, 2, 2, 2, 2])
Out[45]: nan

결과가 적어도 부정적이어야합니까? -8%라고하자? 구현을 더 잘 이해하려고 할 때 Numpy 리포지토리의 마스터 브랜치, 그러나 구현은 나에게 의미가 없었습니다.

의견과 주어진 문헌은 어떤 조건에서 이해하는 데 도움이되지 않습니다. nan 발행됩니다. 다른 프로그램으로 IRR을 계산하면 -8%가 반환됩니다.

Numpy가 돌아 오는 이유는 무엇입니까? nan 위의 배열에?

도움이 되었습니까?

해결책 2

당신이 구현 이 기능 중에서 (0, 1] 내에서 IRR 용액 만 찾습니다. 방정식에는 여러 솔루션이있을 수 있기 때문에 유효한 솔루션 만 남습니다. 여기서는 (IMO)가 열악한 구현 선택입니다. 확실히이 범위를 벗어나 여전히 완벽하게 유효 할 수 있습니다. 귀하의 경우, 필요한 작업을 수행 할 자신의 기능 (기존 기능의 선을 따라)을 작성하는 것이 좋습니다.

다른 팁

이전 답변에 대한 작은 수정. 구현은 IRR을 (0,1]로 제한하지 않으며, 1/(1+IRR)을 (0,1]로 제한합니다. IRR을 [0,+inf)로 제한합니다. NAN을 반환하기 때문에 여전히 불완전한 구현입니다. IRR이 0보다 작은 현금 흐름의 경우 (예 : 투자자가 돈을 잃어 버렸습니다) IRR의 올바른 범위는 (-1,+inf)입니다. 그러나 NPV (rate) 이상을 가질 수 있기 때문에 수정은 사소하지 않습니다. 하나의 0이지만 속도가 0보다 큰 곳에서 하나 이하의 Zero Crossing을 가지지 않습니다. 따라서 기능이 구현되므로 범위를 [0,+inf)로 제한하면 음의 IRRS에서 실패하지만 여러 가지를 다룰 필요가 없음을 의미합니다. 뿌리가 반환됩니다.

참고로, NPV (rate)의 동작에 대해 궁금한 점이 있으면 +inf 또는 -inf가 속도가 -1에 접근합니다. 그것이 접근하는 무한대의 징후는 최종 현금 흐름의 부호와 동일합니다. 다른 쪽 끝에서, 비율이 +INF에 접근함에 따라, NPV는 비대칭 적으로 시리즈의 초기 현금 흐름의 가치 (보통 음의 현금 흐름)에 접근합니다. rate = zero에서 NPV의 값은 현금 흐름의 합입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top