用python中fsolve计算IRR,并简单判断是否投资该产品。张老师的一朋友打算给自己刚出生的孩子购买保险产品,该产品规定从0岁起投保人每年年末支付保险费6000元,共10次。 从支付保险费的次年起,保险公司每隔2年年末返还一次收益,每次2000元。在孩子65岁时再一次性支付60万元养老费。
时间: 2023-12-16 12:03:23 浏览: 159
首先,需要导入SciPy库中的fsolve函数。然后,定义一个IRR函数,计算出该产品的内部收益率。最后,判断IRR是否大于预期收益率,如果大于,则可以投资该产品。
下面是代码示例:
```python
from scipy.optimize import fsolve
def IRR(rate):
cashflows = [-6000] * 10
for i in range(1, 6):
cashflows[i*2-1] += 2000
cashflows.append(600000)
npv = sum([cf/(1+rate)**i for i, cf in enumerate(cashflows)])
return npv
expected_return = 0.05
irr = fsolve(IRR, expected_return)[0]
if irr > expected_return:
print("可以投资该产品,内部收益率为:{:.2%}".format(irr))
else:
print("不建议投资该产品,内部收益率为:{:.2%}".format(irr))
```
解释一下代码:
- 在IRR函数中,我们首先定义了cashflows数组,包含了10次支付保险费和一次养老费的现金流。然后,我们计算出所有现金流的现值,并将它们相加得到总现值。最后,我们返回总现值,这就是IRR所需要的函数。
- 在主程序中,我们定义了一个预期收益率expected_return,并使用fsolve函数计算出IRR。如果IRR大于预期收益率,则可以投资该产品。否则,不建议投资该产品。最后,我们输出IRR的值。
阅读全文