我有一个不可预测的现金流和不可预测的周期长度的数据框架,我需要生成一个向后看的内部收益率。
在Excel中使用解算器来完成它非常简单,想知道是否有一种好的方法可以在Python中实现它。(我想我可以利用openpyxl让solver在python的excel中工作,但这感觉不必要的麻烦)。
问题很简单:NPV of Cash Flow = ((cash_flow)/(1+IRR)^years_ago)
目标:求和(NPV)=0的内部收益率
我的数据帧如下所示:cash_flow |years_ago
-----------------------
-3.60837e+06 |4.09167
31462 |4.09167
1.05956e+06 |3.63333
-1.32718e+06 |3.28056
-4.46554e+06 |3.03889
似乎其他的IRR计算器(如numpy.IRR)都假设严格的周期截止(每3个月、1年等),这是行不通的。另一个选项似乎是迭代路径,我不断地猜测、检查和迭代,但这感觉是解决这个问题的错误方法。理想情况下,我正在寻找能做到这一点的方法:irr = calc_irr((cash_flow1,years_ago1),(cash_flow2,years_ago2),etc)
编辑:这是我处理问题的代码。我有一个事务列表,我选择按id创建临时表for id in df_tran.id.unique():
temp_df = df_tran[df_tran.id == id]
cash_flow = temp_df.cash_flows.values