我有一个不均匀现金流的DataFrame,我需要生成一个向后看的IRR。我试过了。irr方法,但如果付款是np.irr(cashflows,rate)
但问题是现金流是不可预测的,我们必须根据所支付的emi改变内部收益率。
例如
month opening_balance emi closing_balance
xx xy yz
xx xy yz
xx xy yz
xx xy yz
xx xy yz
xx xy yz
xx xy yz
xx xy yz
xx xy yz
假设贷款在第4个月提前支付(xy+ 500)和期限相同,那么我如何调整剩余金额并计算NPV应为0的irr
一种解决方案可以使用循环遍历一系列潜在的IRR值,然后使用函数计算每个IRR值处现金流的PV。然后,您可以将PV与总现金流出进行比较,并在现值等于或大于总现金流出时停止循环。发生这种情况时的IRR值将是向后看的IRR。
def backward_irr(cashflow, rate):
# get total CF
total_outflow = sum([x for x in cashflow if x < 0])
for irr in np.arange(0, 1, 0.01):
present_value = sum([x / (1 + irr) ** t for t, x in enumerate(cashflow)])
if present_value >= total_outflow:
return irr
#CF example
cashflow = [-100, 20, 40, 60, 80]
rate = backward_irr(cashflow, 0.1)
print(rate)
try it and report result