Excel 应用XIRR函数计算一组现金流的内部收益率

XIRR函数用于计算一组现金流的内部收益率,这些现金流不一定定期发生。如果要计算一组定期现金流的内部收益率,则需要使用函数IRR。XIRR函数的语法如下。


XIRR(values,dates,guess)

其中参数values为与dates中的支付时间相对应的一系列现金流。首期支付是可选的,并与投资开始时的成本或支付有关。如果第一个值是成本或支付,则它必须是负值。所有后续支付都基于365天/年贴现。系列中必须包含至少一个正值和一个负值。dates为与现金流支付相对应的支付日期表。第一个支付日期代表支付表的开始,其他日期应迟于该日期,但可按任何顺序排列。日期输入应使用DATE函数,或者将函数作为其他公式或函数的结果输入。例如,使用函数DATE(2008,5,23)输入2008年5月23日。如果日期以文本形式输入,则会出现问题。guess为对函数XIRR计算结果的估计值。

典型案例

已知现金流的值与支付时间,计算其内部收益率。基础数据如图17-63所示。

步骤1:打开例子工作簿“XIRR.xlsx”。

步骤2:在单元格A8中输入公式“=XIRR(A2:A6,B2:B6,0.1)”,用于计算现金流的内部收益率。计算结果如图17-64所示。

图17-63 基础数据

图17-64 计算结果

使用指南

dates中的数值若非整数将被截尾取整。函数XIRR要求至少有一个正现金流和一个负现金流,否则函数XIRR返回错误值“#NUM!”;如果dates中的任一数值不是合法日期,函数XIRR返回错误值“#VALUE”;如果dates中的任一数字先于开始日期,函数XIRR返回错误值“#NUM!”;如果values和dates所含数值的数目不同,函数XIRR返回错误值“#NUM!”。

多数情况下,不必为函数XIRR的计算提供guess值,如果省略,guess值假定为0.1(10%)。函数XIRR与净现值函数XNPV密切相关。函数XIRR计算的收益率即为函数XNPV=0时的利率。Excel使用迭代法计算函数XIRR,通过改变收益率(从guess开始),不断修正计算结果,直至其精度小于0.000001%。如果函数XIRR运算100次,仍未找到结果,则返回错误值“#NUM!”。

Excel 应用YIELDMAT函数计算在到期日支付利息的证券的年收益率

YIELDMAT函数用于计算到期付息的有价证券的年收益率。YIELDMAT函数的语法如下。


YIELDMAT(settlement,maturity,issue,rate,pr,basis)

其中参数settlement为证券的结算日,即在发行日之后,证券卖给购买者的日期。maturity为有价证券的到期日,即有价证券有效期截止时的日期。issue为有价证券的发行日,以时间序列号表示。rate为有价证券在发行日的利率。pr为面值¥100的有价证券的价格。basis为日计数基准类型。

典型案例

已知某债券的结算日、到期日、发行日、息票半年利率、价格等信息,计算在这些条件下债券的收益率。基础数据如图17-61所示。

步骤1:打开例子工作簿“YIELDMAT.xlsx”。

步骤2:在单元格A9中输入公式“=YIELDMAT(A2,A3,A4,A5,A6,A7)”,用于计算在上述条件下债券的收益率。计算结果如图17-62所示。

图17-61 基础数据

图17-62 计算结果

使用指南

settlement、maturity、issue和basis若非整数将被截尾取整。如果settlement、maturity或issue不是合法日期,函数YIELDMAT返回错误值“#VALUE!”;如果rate<0或pr≤0,函数YIELDMAT返回错误值“#NUM!”;如果basis<0或basis>4,函数YIELDMAT返回错误值“#NUM!”;如果settlement≥maturity,函数YIELDMAT返回错误值“#NUM!”。

Excel 应用YIELDDISC函数计算已贴现证券的年收益率

YIELDDISC函数用于计算折价发行的有价证券的年收益率。YIELDDISC函数的语法如下。


YIELDDISC(settlement,maturity,pr,redemption,basis)

其中参数settlement为证券的结算日,即在发行日之后,证券卖给购买者的日期。maturity为有价证券的到期日,即有价证券有效期截止时的日期。pr为面值¥100的有价证券的价格。redemption为面值¥100的有价证券的清偿价值。basis为日计数基准类型。

典型案例

已知某债券的结算日、到期日、价格、清偿价值等信息,计算在这些条件下债券的收益率。基础数据如图17-59所示。

步骤1:打开例子工作簿“YIELDDISC.xlsx”。

步骤2:在单元格A8中输入公式“=YIELDDISC(A2,A3,A4,A5,A6)”,用于计算在上述条件下债券的收益率。计算结果如图17-60所示。

图17-59 基础数据

图17-60 计算结果

使用指南

settlement、maturity和basis若非整数将被截尾取整。如果settlement或maturity不是有效日期,函数YIELDDISC返回错误值“#VALUE!”;如果pr≤0或redemption≤0,函数YIELDDISC返回错误值“#NUM!”;如果basis<0或basis>4,函数YIELDDISC返回错误值“#NUM!”;如果settlement≥maturity,函数YIELDDISC返回错误值“#NUM!”。

Excel 应用YIELD函数计算定期支付利息的证券的收益率

YIELD函数用于计算定期支付利息的证券的收益率。YIELD函数的语法如下。


YIELD(settlement,maturity,rate,pr,redemption,frequency,basis)

其中参数settlement为证券的结算日,即在发行日之后,证券卖给购买者的日期。maturity为有价证券的到期日,即有价证券有效期截止时的日期。rate为有价证券的年息票利率。pr为面值¥100的有价证券的价格。redemption为面值¥100的有价证券的清偿价值。frequency为年付息次数。如果按年支付,frequency=1;按半年期支付,frequency=2;按季支付,frequency=4。basis为日计数基准类型。

典型案例

已知某债券的结算日、到期日、息票利率、价格、清偿价值、支付方式等信息,计算在这些条件下债券的收益率。基础数据如图17-57所示。

步骤1:打开例子工作簿“YIELD.xlsx”。

步骤2:在单元格A10中输入公式“=YIELD(A2,A3,A4,A5,A6,A7,A8)”,用于计算在上述条件下债券的收益率。计算结果如图17-58所示。

图17-57 基础数据

图17-58 计算结果

使用指南

settlement、maturity、frequency和basis若非整数将被截尾取整。如果settlement或maturity不是合法日期,函数YIELD返回错误值“#VALUE!”;如果rate<0,函数YIELD返回错误值“#NUM!”;如果pr≤0或redemption≤0,函数YIELD返回错误值“#NUM!”;如果frequency不为1、2或4,函数YIELD返回错误值“#NUM!”;如果basis<0或basis>4,函数YIELD返回错误值“#NUM!”;如果settlement≥maturity,函数YIELD返回错误值“#NUM!”。

如果在清偿日之前只有一个或是没有付息期间,函数YIELD的计算公式为:

式中:

A为付息期的第一天到结算日之间的天数(应计天数)。

DSR为结算日与清偿日之间的天数。

E为付息期所包含的天数。

如果在redemption之前尚有多个付息期间,则通过100次迭代来计算函数YIELD。基于函数PRICE中给出的公式,并使用牛顿迭代法不断修正计算结果,直到在给定的收益率下的计算价格逼近于实际价格。

Excel 应用TBILLYIELD函数计算国库券的收益率

TBILLYIELD函数用于计算国库券的收益率。TBILLYIELD函数的语法如下。


TBILLYIELD(settlement,maturity,pr)

其中参数settlement为国库券的结算日,即在发行日之后,国库券卖给购买者的日期。maturity为国库券的到期日,即国库券有效期截止时的日期。pr为面值¥100的国库券的价格。

典型案例

已知国库券的结算日、到期日、每一百元面值的价格,计算在这些条件下国库券的等效收益率。基础数据如图17-55所示。

步骤1:打开例子工作簿“TBILLYIELD.xlsx”。

步骤2:在单元格A6中输入公式“=TBILLYIELD(A2,A3,A4)”,用于计算在上述条件下国库券的等效收益率。计算结果如图17-56所示。

图17-55 基础数据

图17-56 计算结果

使用指南

settlement和maturity若非整数将被截尾取整。如果settlement或maturity不是合法日期,函数TBILLYIELD返回错误值“#VALUE”;如果pr≤0,则函数TBILLYIELD返回错误值“#NUM!”;如果settlement≥maturity或maturity在settlement一年之后,函数TBILLYIELD返回错误值“#NUM!”。函数TBILLYIELD的计算公式如下。

式中:

DSM为结算日与到期日之间的天数。如果结算日与到期日相隔超过一年,则无效。

Excel 应用TBILLEQ函数计算国库券的等价证券收益率

TBILLEQ函数用于计算国库券的等价证券收益率。TBILLEQ函数的语法如下。


TBILLEQ(settlement,maturity,discount)

其中参数settlement为国库券的结算日,即在发行日之后,国库券卖给购买者的日期。maturity为国库券的到期日,即国库券有效期截止时的日期。discount为国库券的贴现率。

典型案例

已知国库券的结算日、到期日、贴现率,计算国库券在这些条件下的等价证券收益率。基础数据如图17-53所示。

步骤1:打开例子工作簿“TBILLEQ.xlsx”。

步骤2:在单元格A6中输入公式“=TBILLEQ(A2,A3,A4)”,用于计算国库券的等价证券收益率。计算结果如图17-54所示。

图17-53 基础数据

图17-54 计算结果

使用指南

settlement和maturity若非整数将被截尾取整。如果settlement或maturity不是合法日期,函数TBILLEQ返回错误值“#VALUE!”;如果discount≤0,函数TBILLEQ返回错误值“#NUM!”;如果settlement>maturity或maturity在settlement之后超过一年,函数TBILLEQ返回错误值“#NUM!”。函数TBILLEQ的计算公式如下。

式中:

DSM是按每年360天的基准计算的settlement与maturity之间的天数。

Excel 应用ODDLYIELD函数计算末期付息日的收益率

ODDLYIELD函数用于计算末期付息日不固定的有价证券(长期或短期)的收益率。ODDLYIELD函数的语法如下。


ODDLYIELD(settlement,maturity,last_interest,rate,pr,redemption,frequency,basis)

其中参数last_interest为有价证券的末期付息日。

典型案例

已知某债券的结算日、到期日、末期付息日、息票利率、价格、清偿价值等信息,计算对于上述条件下的债券,末期付息日不固定的有价证券的收益率。基础数据如图17-51所示。

步骤1:打开例子工作簿“ODDLYIELD.xlsx”。

步骤2:在单元格A11中输入公式“=ODDLYIELD(A2,A3,A4,A5,A6,A7,A8,A9)”,用于计算对于上述条件下的债券,末期付息日不固定的有价证券的收益率。计算结果如图17-52所示。

图17-51 基础数据

图17-52 计算结果

使用指南

settlement、maturity、last_interest和basis若非整数将被截尾取整。如果settlement、maturity或last_interest不是合法日期,函数ODDLYIELD返回错误值“#VALUE!”;如果rate<0或pr≤0,函数ODDLYIELD返回错误值“#NUM!”;如果basis<0或basis>4,函数ODDLYIELD返回错误值“#NUM!”。几个日期参数的大小必须满足日期条件maturity>settlement>last_interest,否则,函数ODDLYIELD返回错误值“#NUM!”:

Excel 应用ODDFYIELD函数计算首期付息日的收益率

ODDFYIELD函数用于计算首期付息日不固定的有价证券(长期或短期)的收益率。ODDFYIELD函数的语法如下。


ODDFYIELD(settlement,maturity,issue,first_coupon,rate,pr,redemption,frequency,
basis)

其中参数settlement为证券的结算日。结算日是在发行日之后,证券卖给购买者的日期。maturity为有价证券的到期日。到期日是有价证券有效期截止时的日期。issue为发行日。first_coupon为有价证券的首期付息日。rate为有价证券的利率。pr为有价证券的价格。redemption为面值¥100的有价证券的清偿价值。frequency为年付息次数,如果按年支付,frequency=1;按半年期支付,frequency=2;按季支付,frequency=4。basis为日计数基准类型。

典型案例

已知某债券的结算日、到期日、发行日、首期付息日、息票利率、价格、清偿价值等信息,计算在这些条件下的债券首期付息日不固定的有价证券的收益率。基础数据如图17-49所示。

步骤1:打开例子工作簿“ODDFYIELD.xlsx”。

步骤2:在单元格A12中输入公式“=ODDFYIELD(A2,A3,A4,A5,A6,A7,A8,A9,A10)”,用于计算对于上述条件下的债券,首期付息日不固定的有价证券的收益率。计算结果如图17-50所示。

图17-49 基础数据

图17-50 计算结果

使用指南

settlement、maturity、issue、first_coupon和basis若非整数将被截尾取整。如果settlement、maturity、issue或first_coupon不是合法日期,函数ODDFYIELD返回错误值“#VALUE!”;如果rate<0或pr≤0,函数ODDFYIELD返回错误值“#NUM!”;如果basis<0或basis>4,函数ODDFYIELD返回错误值“#NUM!”。几个日期参数的大小必须满足日期条件maturity>first_coupon>settlement>issue,否则,函数ODDFYIELD返回错误值“#NUM!”。

Excel使用迭代法计算函数ODDFYIELD。该函数基于ODDFPRICE中的公式进行牛顿迭代演算。在100次迭代过程中,收益率不断变化,直到按给定收益率导出的估计价格接近实际价格。

Excel 应用MIRR函数计算正和负现金流以不同利率进行计算的修正收益率

MIRR函数用于计算某一连续期间内现金流的修正收益率。函数MIRR同时考虑了投资的成本和现金再投资的收益率。MIRR函数的语法如下。


MIRR(values,finance_rate,reinvest_rate)

其中参数values为一个数组或对包含数字的单元格的引用。这些数值代表着各期的一系列支出(负值)及收入(正值)。参数values中必须至少包含一个正值和一个负值,才能计算修正后的内部收益率,否则函数MIRR会返回错误值“#DIV/0!”。如果数组或引用参数包含文本、逻辑值或空白单元格,则这些值将被忽略,但包含零值的单元格将计算在内。finance_rate为现金流中使用的资金支付的利率。reinvest_rate为将现金流再投资的收益率。

典型案例

已知某公司某项资产的原值、前五年每年的收益,计算五年后投资的修正收益率、三年后的修正收益率以及基于14%的再投资收益率的五年修正收益率。基础数据如图17-47所示。

步骤1:打开例子工作簿“MIRR.xlsx”。

步骤2:在单元格A11中输入公式“=MIRR(A2:A7,A8,A9)”,用于计算五年后投资的修正收益率。

步骤3:在单元格A12中输入公式“=MIRR(A2:A5,A8,A9)”,用于计算三年后的修正收益率。

步骤4:在单元格A13中输入公式“=MIRR(A2:A7,A8,14%)”,用于计算基于14%的再投资收益率的五年修正收益率。计算结果如图17-48所示。

图17-47 基础数据

图17-48 计算结果

使用指南

函数MIRR根据输入值的次序来解释现金流的次序。所以,务必按照实际的顺序输入支出和收入数额,并使用正确的正负号(现金流入用正值,现金流出用负值)。如果现金流的次数为n,finance_rate为frate而reinvest_rate为rrate,则函数MIRR的计算公式为:

Excel 应用IRR函数计算一系列现金流的内部收益率

IRR函数用于计算由数值代表的一组现金流的内部收益率。这些现金流不必为均衡的,但作为年金,它们必须按固定的间隔产生,如按月或按年。内部收益率为投资的回收利率,其中包含定期支付(负值)和定期收入(正值)。IRR函数的语法如下。


IRR(values,guess)

其中参数values为数组或单元格的引用,包含用来计算返回的内部收益率的数字。guess为对函数IRR计算结果的估计值。

典型案例

已知某公司某项业务的初期成本费用、前五年的净收入,计算投资若干年后的内部收益率。基础数据如图17-45所示。

步骤1:打开例子工作簿“IRR.xlsx”。

步骤2:在单元格A9中输入公式“=IRR(A2:A6)”,用于计算投资四年后的内部收益率。

步骤3:在单元格A10中输入公式“=IRR(A2:A7)”,用于计算五年后的内部收益率。

步骤4:在单元格A11中输入公式“=IRR(A2:A4,-10%)”,用于计算两年后的内部收益率(使用了一个估计值)。计算结果如图17-46所示。

图17-45 基础数据

图17-46 计算结果

使用指南

1)values必须包含至少一个正值和一个负值,以计算返回的内部收益率。函数IRR根据数值的顺序来解释现金流的顺序,故应确定按需要的顺序输入了支付和收入的数值。如果数组或引用包含文本、逻辑值或空白单元格,这些数值将被忽略。Excel使用迭代法计算函数IRR。从guess开始,函数IRR进行循环计算,直至结果的精度达到0.00001%。如果函数IRR经过20次迭代,仍未找到结果,则返回错误值“#NUM!”。

2)在大多数情况下,并不需要为函数IRR的计算提供guess值。如果省略guess,假设它为0.1(10%)。如果函数IRR返回错误值“#NUM!”,或结果没有靠近期望值,可用另一个guess值再试一次。