计算不均匀现金流的内部收益率



我有一个不均匀现金流的DataFrame,我需要生成一个向后看的IRR。我试过了。irr方法,但如果付款是np.irr(cashflows,rate)

但问题是现金流是不可预测的,我们必须根据所支付的emi改变内部收益率。

例如

month opening_balance emi closing_balance

  1. xx            xy     yz
    
  2. xx            xy     yz
    
  3. xx            xy     yz
    
  4. xx            xy     yz
    
  5. xx            xy     yz
    
  6. xx            xy     yz
    
  7. xx            xy     yz
    
  8. xx            xy     yz
    
  9. 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

最新更新