Witryna ActiveState Recipes posiada funkcję wykonawczą Internal Rate of Return w Pythonie:Jaka jest metoda numeryczna stosowana w tej implementacji IRR?
def irr(cashflows, iterations=100):
"""The IRR or Internal Rate of Return is the annualized effective
compounded return rate which can be earned on the invested
capital, i.e., the yield on the investment.
>>> irr([-100.0, 60.0, 60.0, 60.0])
0.36309653947517645
"""
rate = 1.0
investment = cashflows[0]
for i in range(1, iterations+1):
rate *= (1 - npv(rate, cashflows)/investment)
return rate
Ten kod zwraca poprawne wartości (przynajmniej na kilka przykładów, które zostały sprawdzone przed Excel), ale chciałbym wiedzieć dlaczego .
- Nie wydaje się być implementacją metody Newtona (bez pochodnej) lub metody Secanta (śledzenie tylko jednej iteracji).
- W szczególności definicja zmiennej inwestycyjnej jako pierwszego elementu przepływów pieniężnych (i jego późniejszego wykorzystania) wprowadza mnie w błąd.
Wszelkie pomysły?
Myślę, że oczekujesz odpowiedzi -0.5. (0,5 to IRR dla przepływów pieniężnych [-100, 150].) Ale w każdym razie fałszywe! –
@Gareth Rees: Dobrze, dzięki. – unutbu