Python利用最优化算法求解投资内部收益率IRR【一】
一、 内部收益率和净现值
内部收益率(Internal Rate of Return, IRR)其实要和净现值(Net Present Value, NPV)结合起来讲。净现值指的是某个投资项目给公司或企业带来的价值增值,可以简单地用以下公式去计算。
1.净现值:
NPV = CF0 + CF1/(1+r1) + ... + CFt/(1+rt)^t
其中,CF0是初始投资额,是一个负值,代表现金的流出;t表示时间,指第t期;后面的CF1,CF2,...,CFt这些是每期的回报金额,为正值,表示投资所得的收益。r1,r2,...、rt是指每期的折现率。
举个比较通俗的例子,我们花100万元投资了一个一年期理财产品,预期收益率为10%,一年期国债利率为5%,投资是否合算?
这里涉及到折现率的相关知识,简单介绍一下:我们都知道银行存款是有利率的,我们把10000块钱存到银行,一年后,连本带息就会超过10000元。如果我们不把钱存银行,一年后还是10000元钱,不存钱相当于亏掉了那么多利息的钱。也就是说,在存入银行后,一年后的10000元的拿到现在来看,实际是不到10000元的,我可能存9500,一年后就能拿到10000。这就是一个折现的概念,用时间来换利息。
我们再看这个问题,
1年后,预期的现金流就是:
100×(1+10%)=110(万元),
然后,我们按照国债的利率5%来对其折现(假设该产品与国债信用风险相当),即:一年后的110万元,如果我们按信用等级较高的国债去投资,现在价值多少?
答案是:110/(1+5%)。
计算净现值:
NPV = -100 + 110/(1+5%)= 4.7619(万元)
净现值是正的,说明这笔投资合算。当然,这里其实只看年利率就可以做出简单的判断,实际情况下,不论是理财产品还是国债利率都是浮动的。
2.内部收益率
前面我们取的折现率是国债的利率,是一个与投资决策之外的值,也可以理解是外部的收益率。这里内部收益率,指的是使净现值等于0时的折现率,就称为内部收益率(IRR)。我们用一个固定的折现率r去计算,令NPV=0,则
0 = CF0 + CF1/(1+r) + ... + CFt/(1+r)^t
那么,此时的r在数值上与IRR相等。因此,我们只要知道每年的现金流量情况,就能计算出该笔投资的IRR,将IRR与r相比,若IRR>r,则该项目值得投资;若IRR<r,则该项目不值得投资,不如去买同期的稳定国债之类的产品。
3.内部收益率的简单计算
如下表所示,第0年也就是现在,产生了-500万的现金流量,即用500万元去做一个投资,1年、2年、3年后的现金流量均为正的100万元、200万元和300万元。假设还是以5%的国债利率去做折现,这笔投资是否值得?
年份 | 现金流 (万元) |
---|---|
0 | -500 |
1 | 100 |
2 | 200 |
3 | 300 |
计算内部收益率,将其与国债利率比较,
-500 + 100/(1+IRR) + 200/(1+IRR)^2 + 300/(1+IRR)^3 vs 5%
计算得到
IRR约为8% >5%,该笔投资值得。
从另一个角度看,这笔投资3年后累计现金流为+100万元,如果买3年期利率为5%的国债,则累计现金流为
500×(1+5%)^3-500=78.8125(万元) < 100(万元)
Python利用最优化算法求解投资内部收益率IRR【一】的更多相关文章
- 利用Numpy求解投资内部收益率IRR
一. 内部收益率和净现值 内部收益率(Internal Rate of Return, IRR)其实要和净现值(Net Present Value, NPV)结合起来讲.净现值指的是某个投资项目给公司 ...
- python利用dijkstra算法求解图中最短距离
利用dijkstra算法,来完成图中两个顶点间最短的距离,可以直接复制使用,只需要修改参数即可 def dijkstra_raw(edges, from_node, to_node): "& ...
- python利用kruskal求解最短路径的问题
python利用kruskal算法求解最短路径的问题,修改参数后可以直接使用 def kruskal(): """ kruskal 算法 ""&quo ...
- EM 算法求解高斯混合模型python实现
注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...
- 支持向量机(四)----序列最小最优化算法SMO
在支持向量机(二)和(三)中,我们均遗留了一个问题未解决,即如何求解原问题的对偶问题: 在支持向量机(二)中对偶问题为: 在支持向量机(三)中的对偶问题为: 对于上述两个对偶问题,我们在支持向量机(三 ...
- 序列最小最优化算法(SMO)-SVM的求解(续)
在前一篇文章中,我们给出了感知器和逻辑回归的求解,还将SVM算法的求解推导到了最后一步,在这篇文章里面,我们将给出最后一步的求解.也就是我们接下来要介绍的序列最小最优化算法. 序列最小最优化算法(SM ...
- 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
点此看题面 大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树. \(prufer\)序列 一道弱化版的题目:[洛谷2290][HNOI2004] 树的计数. 这同样也是一道 ...
- 【洛谷2290】[HNOI2004] 树的计数(Python+利用prufer序列结论求解)
点此看题面 大致题意: 给定每个点的度数,让你求有多少种符合条件的无根树. \(prufer\)序列 这显然是一道利用\(prufer\)序列求解的裸题. 考虑到由\(prufer\)序列得到的结论: ...
- 利用HTML5 Canvas和Javascript实现的蚁群算法求解TSP问题演示
HTML5提供了Canvas对象,为画图应用提供了便利. Javascript可执行于浏览器中, 而不须要安装特定的编译器: 基于HTML5和Javascript语言, 可随时编写应用, 为算法測试带 ...
随机推荐
- 高手查看Linux系统用户命令-测评
一.Linux查看用户命令-测评 查看linux所有的用户 cat /etc/passwd 查看普通用户.系统用户(1-499) root:x:0:0:root:/root:/bin/bash < ...
- Docker(八): 安装ELK
服务部署发展 传统架构单应用部署 应用程序部署在单节点中,日志资源同样输出到这台单节点物理机的存储介质中. 微服务架构服务部署 以分布式,集群的方式部署应用,应用分别部署在不同的物理机中,日志分别输出 ...
- PHP留言板制作(MySQL+PHP)
参考视频:https://www.bilibili.com/video/BV1Js411i74j?p=8 环境:phpstudy 2018 PHP 5.X PHPmyadmin ...
- 用python写图片格式批量处理工具
一.思路分析 其实,照片处理要求很简单,主要是两个方面:一个是调整图片尺寸(即宽x高),另一个是调整图片的大小(即压缩).为了实现这两个功能,利用python中的PIL库即可,其安装方法如下: pip ...
- 网页客服思路以及QQ截图粘贴到聊天框功能
功能: 1.客服需登录进入客服页面.用户无需登录,进入用户页面,直接获取sessionId作为id值. 2.用户进入页面并且发送消息时,客服才会获取到该用户,并在左侧列表显示. 3.点击用户名即可切换 ...
- ARP局域网断网攻击
Kali--ARP局域网攻击 什么是ARP? ARP ( Address Resolution Protocol)地址转换协议,工作在OSI模型的数据链路层,在以太网中,网络设备之间互相通信是用MAC ...
- 常用java自带命令概览
ref:http://www.hollischuang.com/archives/308 一.常用命令 jps: 查看本机的Java中进程信息. jstack: 打印线程的执行栈信息. jmap: 打 ...
- [leetcode]罗马数字和阿拉伯数字相互转换
罗马转阿拉伯 public int romanToInt(String s) { /* 从左到右依次根据哈希表进行加法 如果是"CM"900这种情况就要执行+M和-C处理 */ i ...
- 【kinetic】操作系统探索总结(六)使用smartcar进行仿真
p { margin-bottom: 0.1in; direction: ltr; line-height: 120%; text-align: justify } a:link { color: r ...
- 项目中同一个页面引入不同的jQuery版本的不冲突问题
在写项目的过程中,如果需要使用jQuery时,时长会遇到需要引入不同版本的jQuery,可能上一个负责该项目的人用到的是老版本的jQuery,而你去添加功能时用的是新版本的,这个问题很难避免掉,如果去 ...