Tried running the xirr with input
valuesPerDate = {datetime.date(2020, 7, 21): 999950.0, datetime.date(2020, 6, 22): 5000.0, datetime.date(2020, 8, 20): 2499.88, datetime.date(2020, 9, 21): 2499.88, datetime.date(2020, 7, 15): 104022.22, datetime.date(2020, 8, 3): 1999.9, datetime.date(2020, 8, 10): 9999.5, datetime.date(2020, 9, 1): 9999.5, datetime.date(2020, 9, 10): 9999.5, datetime.date(2020, 10, 1): 9999.5, datetime.date(2020, 2, 17): 2000.0, datetime.date(2020, 3, 2): 10000.0, datetime.date(2020, 3, 16): 2000.0, datetime.date(2020, 4, 1): 10000.0, datetime.date(2020, 4, 15): 2000.0, datetime.date(2020, 5, 4): 10000.0, datetime.date(2020, 5, 15): 2000.0, datetime.date(2020, 6, 1): 10000.0, datetime.date(2020, 6, 15): 2000.0, datetime.date(2020, 7, 1): 9999.5, datetime.date(2020, 7, 13): -104027.42, datetime.date(2020, 8, 17): 1999.9, datetime.date(2020, 9, 15): 1999.9, datetime.date(2020, 7, 29): 499975.0, datetime.date(2020, 7, 20): 999950.0, datetime.date(2020, 7, 22): 149992.5, datetime.date(2020, 7, 28): -500000.0, datetime.date(2020, 8, 25): 2499.88, datetime.date(2020, 9, 27): -25000.0, datetime.date(2020, 7, 8): 999950.0, datetime.date(2020, 2, 3): 2000.0, datetime.date(2020, 8, 5): 2499.88, datetime.date(2020, 9, 7): 2499.88, datetime.date(2020, 9, 25): 2499.88, datetime.date(2020, 10, 5): 2499.88, datetime.date(2018, 7, 16): 10000.0, datetime.date(2018, 9, 10): 5000.0, datetime.date(2018, 10, 10): 5000.0, datetime.date(2018, 11, 12): 10000.0, datetime.date(2018, 12, 10): 10000.0, datetime.date(2019, 1, 10): 10000.0, datetime.date(2019, 2, 11): 10000.0, datetime.date(2019, 3, 11): 10000.0, datetime.date(2019, 4, 10): 10000.0, datetime.date(2019, 5, 10): 10000.0, datetime.date(2019, 6, 10): 10000.0, datetime.date(2019, 7, 10): 10000.0, datetime.date(2019, 8, 13): 10000.0, datetime.date(2019, 9, 11): 10000.0, datetime.date(2019, 10, 10): 10000.0, datetime.date(2019, 11, 11): 10000.0, datetime.date(2019, 12, 10): 10000.0, datetime.date(2020, 1, 10): 10000.0, datetime.date(2020, 2, 10): 10000.0, datetime.date(2020, 3, 11): 10000.0, datetime.date(2020, 4, 13): 10000.0, datetime.date(2020, 5, 11): 10000.0, datetime.date(2020, 6, 10): 10000.0, datetime.date(2020, 7, 10): 9999.5, datetime.date(2018, 7, 24): 500000.0, datetime.date(2020, 4, 8): 100000.0, datetime.date(2018, 8, 10): 5000.0, datetime.date(2018, 10, 9): -18904.37, datetime.date(2018, 10, 15): -9898.46, datetime.date(2018, 7, 25): 500000.0, datetime.date(2020, 8, 6): -104221.0, datetime.date(2020, 1, 27): 10000.0, datetime.date(2020, 2, 20): 10000.0, datetime.date(2020, 3, 20): 10000.0, datetime.date(2020, 4, 20): 10000.0, datetime.date(2020, 5, 20): 10000.0}
print(xirr.xirr(valuesPerDate))
Got an error
RuntimeError: Failed to converge after 50 iterations, value is 3.029539740722745e+55.
During handling of the above exception, another exception occurred:
`print(xirr.xirr(valuesPerDate))
result = scipy.optimize.brentq(lambda r: xnpv(valuesPerDate, r), -0.999999999999999, 1e20, maxiter=10**6)
r = _zeros._brentq(f, a, b, xtol, rtol, maxiter, args, full_output, disp)
ValueError: f(a) and f(b) must have different signs`