ActiveState Recipes站点具有在Python中实现 Internal Rate of Return的功能:
def irr(cashflows,iterations=100):
    """The IRR or Internal Rate of Return is the annualized effective 
       compounded return rate which can be earned on the invested 
       capital,i.e.,the yield on the investment.

       >>> irr([-100.0,60.0,60.0])
       0.36309653947517645
    """
    rate = 1.0
    investment = cashflows[0]
    for i in range(1,iterations+1):
        rate *= (1 - npv(rate,cashflows) / investment)
    return rate

此代码返回正确的值(至少对于我已针对Excel检查的几个示例),但我想知道原因.

>它似乎不是牛顿方法(无衍生物)或正​​割方法(仅跟踪一次迭代)的实现.
>特别是,投资变量作为第一个现金流元素(以及随后的使用)的定义让我感到困惑.

有任何想法吗?

解决方法

该方法称为定点迭代;例如,参见维基百科文章 http://en.wikipedia.org/wiki/Fixed_point_iteration.

这个想法是,如果rate包含正确的值(即IRR),则NPV为零,因此声明

rate *= (1 - npv(rate,cashflows) / investment)

不会改变率.因此,一旦找到IRR,迭代就不会改变它.定点迭代有时会收敛到正确的值,有时却不会收敛. @Gareth和@unutbu的例子表明,它并不总是收敛.

收敛标准如下.将循环中的update语句写为

rate = rate * (1 - npv(rate,cashflows) / investment)

现在,如果右侧的导数相对于速率在1和-1之间,则该方法收敛.我不能立即看到在什么情况下是这样的.

您可能想知道迭代为什么不这样做

rate *= (1 - npv(rate,cashflows))

没有奇怪的投资变量.的确,我也想知道同样的事情.如果满足导数条件,这也是一个收敛于IRR的定点方法.我的猜测是,在某些情况下,对于您给出的方法,衍生条件是满足的,而不是没有投资的方法.

python – IRR实现中使用的数值方法是什么?的更多相关文章

  1. python – IRR实现中使用的数值方法是什么?

    ActiveStateRecipes站点具有在Python中实现InternalRateofReturn的功能:此代码返回正确的值(至少对于我已针对Excel检查的几个示例),但我想知道原因.>它似乎不是牛顿方法(无衍生物)或正割方法(仅跟踪一次迭代)的实现.>特别是,投资变量作为第一个现金流元素(以及随后的使用)的定义让我感到困惑.有任何想法吗?解决方法该方法称为定点迭代;例如,参见维基百科文章

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部