in financial_functions/core.py [0:0]
def xnpv(rate, values=[], dates=[]):
"""
Calculates the Net Present Value for a schedule of cash flows that is not necessarily periodic.
"""
if len(values) != len(dates):
raise ValueError('values and dates must be the same length')
if sorted(dates) != dates:
raise ValueError('dates must be in chronological order')
first_date = dates[0]
return sum([value / ((1 + rate) ** ((date - first_date).days/365.0)) for (value, date) in zip(values, dates)])