师爷:听说你理财了?
韭菜:巴菲特水平也就一般吧。
师爷:听说你去年理财了?
韭菜:我他妈哪年不理财?查理·芒格书写得还行。
师爷:听说你理财赚钱了?
韭菜:赚了!你不想知道我的年化收益吗?
师爷:对啊,多,多少呢?
韭菜:一个韭菜,碰上牛市,什么收益都能有!
师爷:嘘……你这个不知道天高地厚的赌徒、小韭菜!
韭菜:你说什么?
师爷:赌徒、韭菜!就是数据不够,要不然我非给你算明白了。
韭菜:好啊,来呀,看看你怎么算!你就只剩下一张嘴,写几行烂代码的臭码农!
概念
函数语法 | 适用范围 | 备注 |
---|---|---|
NPV(rate,value1,[value2],…) | 适用于定期(例如每月或每年)发生的现金流确定净现值。 | 每个现金流(指定为value )都发生在一个周期的末尾。如果第一期开始时有额外的现金流,应添加到 NPV 函数返回的值。 |
XNPV(rate, values, dates) | 适用于以不规则时间间隔发生的现金流确定净现值。 | 每个现金流(指定为value )在计划的付款日期发生。 |
IRR(values,[guess]) | 适用于定期(例如每月或每年)发生的现金流确定内部收益率。 | 每个现金流(指定为value )都发生在一个周期的末尾。IRR 通过迭代搜索过程计算,该过程从 IRR 的估计开始(指定为猜测值)然后反复改变该值,直到达到正确的 IRR。 指定 guess 参数是可选的;Excel 使用 10% 作为默认值。 如果存在多个可接受的答案,则 IRR 函数仅返回找到的第一个答案。 如果 IRR 找不到任何答案,则返回#NUM! 错误值。 如果出现错误或结果不是预期结果,请对 guess 使用不同的值。 注意:如果存在多个可能的内部收益率,则不同的猜测可能会返回不同的结果。 |
XIRR(values,dates,[guess]) | 适用于以不规则时间间隔发生的现金流确定内部收益率。 | 每个现金流(指定为value )在计划的付款日期发生。XIRR 通过迭代搜索过程计算,该过程以 IRR 的估计值开始(指定为 猜测 值)然后反复改变该值,直到达到正确的 XIRR。 指定 guess 参数是可选的;Excel 使用 10% 作为默认值。 如果存在多个可接受的答案,则 XIRR 函数仅返回找到的第一个答案。 如果 XIRR 找不到任何答案,则返回#NUM! 错误值。 如果出现错误或结果不是预期结果,请对 guess 使用不同的值。 注意:如果存在多个可能的内部收益率,则不同的猜测可能会返回不同的结果。 |
MIRR(values,finance_rate,reinvest_rate) | 适用于定期发生的现金流(如每月或每年)确定修改的内部收益率,并考虑投资成本和在再投资现金时收到的利息。 | 每个指定为值的现金流都发生在期末,但第一个现金流除外,该现金流指定为期初的值。 在现金流中使用的资金所支付利率为 finance_rate。 在现金流上重新投资时收到的利率为 reinvest_rate。 |
《Microsoft Excel Data Analysis and Business Modeling (5th Edition)》 【摘要 书评 试读】图书
PMT
根据固定付款额和固定利率计算贷款的付款额。
示例
- M 同学以年化 4.9%的贷款利率(rate_in_year)以首付 3 成的方式购买一套面积 100 平,单价 150000 的房子,贷款周期 30 年(year):
则pv = 100*150000*(1-0.3) # 1050000
其中需要贷款金额(pv)1050000,
到还完贷款(fv=0),他需要每个月还贷款多少钱?pmt = PMT()
0.049,30,1050000) pmt(
-5572.630566539454 - 为 3 年后的国际旅行存够 50000 元,年化利率 5%,则需要每个月存:
pmt(0.05,3,0,50000)
-1290.2115218999443
NPV(Net Present Value)
此方法的理论是将投资的未来现金流量,全部折现成投资始日的价值,称为该投资的净现金流量,或称为净现值。
净现值(NPV)通过计算每个投资期间的成本(负现金流)和收益(正现金流)来确定。期限通常为一年,但可以按季度,半年或数月来衡量。在计算每个时期的现金流量后,每个时期的现值(PV)是通过以定期收益率(市场规定的收益率)贴现其未来价值(见公式)来实现的。
假设投资的净现值为正数,代表该投资的结果可以增加企业的价值;反之,如果投资评估的净现值为负数,代表此投资会减少企业的价值,不应该接受。
计算公式
由于货币的时间值,今天收到一美元比明天收到一美元更有价值。 NPV 计算每个现金流系列的现值,并将它们相加得到净现值。每笔现金流入/流出被折算回其现值(PV)。然后对所有项进行求和。因此,NPV 是所有项的和。
其中:t
是现金流的时间i
是折现率/贴现率,即:具有相似风险的投资在每单位时间可获得的回报Rt
是现金流,即:某个时期t
的现金净流入-净流出额,出于教育目的,R0
通常放在总和的左侧,以强调其作为(减去)投资的作用。
该公式的结果乘以年度现金流入净额,然后减去初始现金支出的现值,但是如果现金流量的金额不相等,则将使用先前的公式来分别确定现金流量的现值。 12 个月内的任何现金流都不会被折现为净现值,但通常第一年的初始投资 R0 是负的现金流。
其中:
Rt:某个时期t
的现金流(现金净流入-净流出额)
i:周期
N:方案计算期(i
的次数)
对于固定的现金流R
,净现值NPV
是一个有限几何级数:
在上述公式中,包含R0
项很重要。一个典型的资本项目包括一个大的负R0
现金流(初始投资)和正的未来现金流(投资回报)。一个关键的评估是,对于给定的贴现率,净现值是正的(盈利)还是负的(亏损)。IRR 是 NPV 恰好为 0 时的折现率。
示例
某公司决定引进新的产品线。当 =0 时,公司的直接投入成本为 100,000。回想一下,一个花费对于流出的现金流是负的,因此这个现金流表示为−100,000。公司假设该产品从 t=1 开始,在 12 年的时间里,每年产生 10,000 元的同等收益。为简单起见,假设公司在最初投入 10 万成本之后没有现金流流出。这也简化了一种假设,即每年最后一天的净收入都集中在一笔交易中。在 12 年结束时,产品不再提供任何现金流,并且在没有任何额外成本的情况下停止生产。假设实际年贴现率(i
)为 10%。
年份(Year) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
现金流 | -100000/(1+0.10)**0 | 10000/(1+0.10)**1 | 10000/(1+0.10)**2 | 10000/(1+0.10)**3 | 10000/(1+0.10)**4 | 10000/(1+0.10)**5 | 10000/(1+0.10)**6 | 10000/(1+0.10)**7 | 10000/(1+0.10)**8 | 10000/(1+0.10)**9 | 10000/(1+0.10)**10 | 10000/(1+0.10)**11 |
现值(PV) | 9,090.91 | 8,264.46 | 7,513.15 | 6,830.13 | 6,209.21 | 5,644.74 | 5,131.58 | 4,665.07 | 4,240.98 | 3,855.43 | 3,504.94 | 3,186.31 |
合计收入现金流:68,136.91,流出现金流量的总现值就是时间 t = 0 时的 100,000。则 NPV=68136.91-100000=-31953.09
贴现率/折现率(discount rate)
贴现率又称门槛比率(Europe 称为 the refinancing rate,UK 称为 repo rate,US 称为 discount rate),是指商业银行办理票据贴现业务时,按一定的利率计算利息,这种利率即为贴现率,它是票据贴现者获得资金的价格。常用于票据贴现。企业所有的应收票据,在到期前需要资金周转时,可用票据向银行申请贴现或借款。银行同意时,按一定的利率从票据面值中扣除贴现或借款日到票据到期日止的利息,而付给余额。贴现率的高低,主要根据金融市场利率来决定。
- 举例
比如 A 企业拥有 B 企业给的 100 元票据,票据上规定了 A 企业可以在一段时间后去银行支取票面金额 100,但 A 企业现金流紧张,希望当下立刻拿到现金,A 企业拿票据来银行进行兑换;因为货币是有时间价值的,银行通过计算,提出当下可以给企业 98 元,那么贴现率就是 2%。
IRR(Internal Rate of Return)
内部回报率(英文:internal rate of return,缩写:IRR)是一种投资的评估方法,也就是找出资产潜在的回报率,其原理是利用内部回报率折现,投资的净现值恰好等于零。内部收益率(IRR)衡量投资的收益率。 “内部”一词是指内部利率不包括外部因素,如通货膨胀,资本成本或各种金融风险。
计算公式
备注
- 现金流必须定期(如每月或每年)出现。
- 时间本身是一个很大的变量
计算 NPV 是一个估值,例如折旧率和每年的现金流入等都是一个长远来看很难预测准确的值。预测的时间越长,预测是值越不会准确。所以如果根据计算,NPV 在很多年后才能是正数,那么这个年数就越不可靠。
然而企业投资决策除了要考虑净现值外,还需要考虑投资决策是否会影响行业内的竞争力,这种战略性考虑也是投资决策需要注重的部分。然而这些东西在计算 NPV 时都是无法考虑进去的。
IRR 和 NPV 联系
- 净现值(NPV)和内部收益率(IRR)均被称为现金流量折现法,因为它们将金钱的时间价值纳入资本投资项目评估中。 净现值和内部收益率均基于一系列的未来付款(负现金流),收入(正现金流),亏损(负现金流)或“无收益者”(零现金流)。
- IRR 函数与 NPV 函数密切相关。通过 IRR 计算得出的收益率对应于 0(零)NPV 的利率。
- NPV 确定项目是否获得更多或低于所需的收益率 (也称为障碍率) 并且擅长找出项目是否会盈利。 IRR 比 NPV 更进一步来确定项目的特定收益率。 NPV 和 IRR 都提供可用于比较竞争项目并针对业务做出最佳选择的数字。
IRR 和 NPV 联系参阅:IRR 和 NPV 的区别? - 知乎
pmts = [-1000, 100, -1300, -2000, 5200] |
公司理财实践中,净现值等经常被使用吗?估计的折现率是否可靠? - 知乎
如何通俗易懂地解释折现率和贴现率 ? - 知乎
XIRR
若要利用 IRR 函数来计算报酬率,现金流量必须是以“一期”为单位,也就是输入的现金流量必须有期数的观念。但是常常有些应用,现金流量并非定期式的。XIRR 传回来的报酬率已经是年报酬率。
返回一组不一定定期发生的现金流的内部收益率。
计算公式
备注
- XIRR 预期至少有一个正现金流和一个负现金流;否则,XIRR 返回#NUM! 错误值。
- 如果日期中的任一数字不是有效日期,函数 XIRR 返回#VALUE! 错误值。
- 如果日期中的任意数字在开始日期之前,函数 XIRR 返回#NUM! 错误值。
- 如果值和日期包含不同数量的值,函数 XIRR 返回#NUM! 错误值。
- 大多数情况下,不必为函数 XIRR 的计算提供 guess 值。 如果省略, guess 值假定为 0.1 (10%)。
- 函数 XIRR 与净现值函数 XNPV 密切相关。 函数 XIRR 计算的收益率即为函数 XNPV = 0 时的利率。
示例
dates = [datetime.date(2008, 1, 1), |
MIRR(Modified Internal Rate of Return)
返回一系列定期现金流的修改内部收益率。 MIRR 同时考虑投资成本和在重新投资现金时收到的利息。
IRR 到底有何缺点,需要去修正呢?主要的原因是 IRR 并未考虑期间领回现金再投资问题!IRR 的现金流量里可分为正值及负值两大类,正值部分属于投资期中投资者拿回去的现金,这些期中拿回去的现金该如何运用,会影响报酬率的。负值部分属于投资期中额外再投入的资金,这些资金的取得也有融资利率方面要考虑。
MIRR 使用的方式是将期间所有的现金流入,全部以“再投资利率”计算终值 FV。期间所有的现金流出,全部以“融资利率”计算现值 PV。
计算公式
其中:
- n 为现金流的次数
- frate 为 finance_rate
- rrate 为 reinvest_rate
备注
- MIRR 使用值的顺序来说明现金流的顺序。 一定要按您需要的顺序输入支出值和收益值,并使用正确的符号。
MIRR 函数 - Office 支持
注意
- 现金流正负问题
使用这些函数时,请特别注意如何处理第一期开始时发生的即时现金流以及期初发生的所有其他现金流。现金流指定为负值、正值或零值。 - 时间很重要
在计算时,要保持最先日期在前,按照时间顺序填入,否则可能计算结果与实际大相径庭 - 使用者定义期间长短
IRR 的参数并没有绝对日期,只有“一期”的概念。每一期可以是一年、一个月或一天,随著使用者自行定义。如果每一格是代表一个“月”的现金流量,那麽传回的报酬率就是“月报酬率”;如果每一格是代表一个“年”的现金流量,那麽传回的报酬率就是“年报酬率”。 - guess——猜测报酬率可能的落点
guess 是个有趣的参数,IRR 函数的目的不就是要解出报酬率的值吗,怎么会要我们自己猜测报酬率的落点呢?这不是很奇怪吗,Excel 计算功能那么强,难道 IRR 函数无法直接解出来?没错, IRR 是无法解的!以[-100, -102, -104, -106, 450]这一组现金流量为例,等于得求出下列方程式中 rate 的解:这就难了!因为有 4 次方。假若现金流量的期数更多,那就更复杂了,而且使用者会输入几期还不知道。还好虽然无法直接求解,Excel 使用代入逼近法,先假设一个可能的 rate(10%),然后代入上面式子看看是否吻合,如果不是就变动 rate 的值,然后慢慢逼近、反复计算,直到误差小于 0.00001% 为止。如果真正的解和预设值差距过远,运算超过 20 次还是无法求得答案,IRR 函数会传回错误值 #NUM!。这时使用者就必须使用较接近的 guess 值,然后再试一次。0 = -100+(-102/(1+rate)^1)+(-104/(1+rate)^2)+ (-106/(1+rate)^3)+ (450/(1+rate)^4)
所以 guess 参数只是 IRR 函数开始寻找答案的起始点而已,跟找到的答案是无关。下面三个 IRR 公式,同样的现金流量,但是 guess 参数都不同,结果答案却都一样是 3.60%。guess 是选项参数=IRR({-100, -102, -104, -106, 450})
=IRR({-100, -102, -104, -106, 450}, 1% )
=IRR({-100, -102, -104, -106, 450}, 2% )
guess 参数可以省略不输入,这时 Excel 会使用预设值 10%。通常这是一年为一期报酬率都落在这附近,如果要计算月报酬率最好输入 1%,依此类推。
参阅Excel 在投资理财中的应用
复利终值和年金复利终值什么区别
年金:金额相等,间隔时间相等
复利:利滚利
复利终值,是针对一次性款项计算的未来时点的价值,比如说 2010 年发生一笔投入 100 元,问 2015 年的价值,这时则用复利终值系数计算。
年金终值,是一系列等额等间隔发生的款项的未来时点的价值,比如说 2010 年,2011 年,2012 年每年年末分别投入 100 元,则 2012 年的终值要用年金终值系数来计算。
年金终值就是在已知等额收付款金额、利率(这里我们默认为年利率)和计息期数 n 时,考虑货币的时间价值,计算出的这些收付款到到期时的等价票面金额。
复利终值指一定量的本金按照复利计算若干期后的本利和。复利是计算利息的一种方法。
按照这种方法,每经过一个计息期,要将所生利息加入本金再计利息,逐期滚算,俗称”利滚利”。这里所说的计息期是指相邻两次计息的时间间隔,如年、月、日等。除非特别指明,计息期为 1 年。
复利现值和年金现值
假定利率的 5%,期限是 3 年。
年金现值系数是:(P/A,5%,3),它的意思是说,未来 3 年里,每年年末都收到(支出)1 块钱,求这 3 年里总共收到(支出)的这些钱的现值是多少。(P/A,5%,3)*1 就表示这 3 年里总共收到(支出)的这些钱的现值。
复利现值系数是(P/F,5%,3),它的意思是说,未来的第 3 年年末将收到(支出)1 块钱,求 1 块钱的现值是多少。(P/F,5%,3)*1 就表示第 3 年年末收到(支出)1 块钱的现值。
总结
数字不会说谎。知道收益回报率对理财来说很重要,明确收益才能知道一项投资是否值得我们倾注时间和资产。长坡厚雪,时间的积累会在平凡中给我们意外的惊喜。
My papa once told me, “Son, it’s better to get your money as soon as possible and hold on to it as long as possible.” Later in life, I learned why. You can invest this money at a compounded interest rate, which means that your money can make you more money — and then some. In other words, when cash goes out or comes in is just as important as how much cash goes out or comes in.
我的父亲曾经告诉我:“儿子,最好尽快把钱装进口袋,并尽可能长久地持有下去。” 后来,我知道了缘由:我们可以按照复利投资这笔钱,这意味着您的钱可以使您赚更多钱——然后是更多。 换句话说,何时现金流出或流入与现金流出或流入多少同等重要。
参考链接
概念相关
- 内部回报率 - 维基百科,自由的百科全书
- Go with the cash flow: Calculate NPV and IRR in Excel - Excel
- 采用现金流:在 Excel 中计算 NPV 和 IRR - Excel
- 财务函数(参考) - Office 支持
代码相关
- Tacombel/XIRR.py: XIRR function for PYTHON
- tarioch/xirr
- peliot/XIRR-and-XNPV: python implementation of Microsoft Excel’s XNPV and XIRR
- XIRR: How to calculate your returns
- financial python library that has xirr and xnpv function? - Stack Overflow
- 计算 XIRR_喜东东的博客-CSDN 博客_xirr 计算原理
- pandas - Calculating XIRR in Python - Stack Overflow
- RayDeCampo/nodejs-xirr: Compute the internal rate of return of a sequences of transactions made at irregular periods.
- 做时间的朋友,必须知道收益咋算 | Python 技术
- Python 数据分析_Numpy 中的金融函数 - 简书