Рассчитать XIRR для операций с взаимными фондами в Python - PullRequest
1 голос
/ 13 февраля 2020

Я знал, что на мой вопрос ответили здесь .. financial python библиотека с функциями xirr и xnpv? ..

def xirr(transactions):
    years = [(ta[0] - transactions[0][0]).days / 365.0 for ta in transactions]
    residual = 1
    step = 0.05
    guess = 0.05
    epsilon = 0.0001
    limit = 10000
    while abs(residual) > epsilon and limit > 0:
        limit -= 1
        residual = 0.0
        for i, ta in enumerate(transactions):
            residual += ta[1] / pow(guess, years[i])
        if abs(residual) > epsilon:
            if residual > 0:
                guess += step
            else:
                guess -= step
                step /= 2.0
    return guess-1

, когда я выполняю приведенный выше код для операций с фондами я получаю отрицательный остаток в 1-й итерации. думаю = 0,5-0,5 = 0 Из-за этого я получаю zerodivisionerror в следующей итерации. Почему я получаю отрицательный остаток .. как с этим бороться? / Заранее спасибо

...