python npv 计算公式_Python中IRR的计算

在Python中使用scipy.optimize.newton计算内部收益率IRR时遇到复杂数溢出错误。问题源于现金流中的日期处理。代码试图计算特定现金流的IRR,但在某些利率值下,计算导致了OverflowError。虽然Excel给出了正确的答案,但Python代码需要调整以避免复数运算溢出。可能的解决方案包括检查现金流处理或选择不同的优化方法。
摘要由CSDN通过智能技术生成

我写了一些代码来计算内部收益率,结果很好。。。在import scipy.optimize as optimize

import datetime

def npv(cf, rate=0.1):

if len(cf) >= 2:

first_date = min([x[0] for x in cf])

dcf = [x[1] * (1 /

((1 + rate) ** ((x[0] - first_date).days / 365))) for x in cf]

return sum(dcf)

elif len(cf) == 1:

return cf[0][1]

else:

return 0

def irr(cf):

f = lambda x: npv(cf, rate=x)

r = optimize.newton(f, 0, maxiter=70)

return r

…但当我尝试这种现金流时

^{pr2}$

我得到这个错误:File "/Users/maxim/Dropbox/Python/FinProject/fintrack/main/models.py", line 503, in getIRR

return irr(cf)

File "/Users/maxim/Dropbox/Python/FinProject/fintrack/main/models.py", line 37, in irr

r = optimize.newton(f, 0, maxiter=70)

File "/Library/Frameworks/Pyt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值