与Excel IRR函数

时间:2015-04-25 00:57:36

标签: objective-c excel function irr

下面的讨论提供了目标C IRR计算中的代码,与Excel IRR功能相比,这些代码始终不正确。有谁知道为什么会有这样的差异?

以前的讨论中提供了使用的代码:

Calculate IRR (Internal Rate Return) and NPV programatically in Objective-C

我用来计算内部收益率的测试现金流如下: “打印tempCashFlow :(     “-5099701.25”     “-22503.796875”     “-22503.79296875”     “-22503.79296875”     “-20907.26171875”     “-17899.7421875”     “-17899.7421875”     “-17899.7421875”     “-14660.69140625”     “-12447.80078125”     “-12447.796875”     “-12018.1640625”     “-5991.81640625”     “-5991.81640625”     “-5991.81640625”     “-2885.875”     “1653.125”     “1653.125”     “1653.125”     “8307.328125”     “11110408.45703125” )

上述临时现金流量包含5年期间的季度数据(即20个期间加上零时间段......现金流量中有21个数字)。

该代码提供15.2%的IRR,而不是Excel IRR功能产生的大约16.0%。我也手动测试过,我相信16%是正确的答案。任何人都可以帮助理解代码可能出错的地方吗?我看不出任何问题。它似乎也与此链接上提升的代码相同:

http://www.codeproject.com/Tips/461049/Internal-Rate-of-Return-IRR-Calculation

PS:我还注意到,如果我将现金流量减少到2年而不是5年期间(例如35%(不正确)和45%IRR),误差幅度会大幅增加(正确答案)

1 个答案:

答案 0 :(得分:0)

Excel IRR函数报告的那一系列现金流的IRR为3.803961%(但假设它们是年度现金流)。您引用的C算法也会返回3.803961%。因此,这两个计算值之间没有差异。如果我将所有这些年度现金流量的NPV加起来应用该汇率,我得到零,验证3.803961%是否是正确的IRR。

您还没有分享如何使用Excel IRR或此函数来处理季度现金流,但我怀疑您可能只是将此C函数的结果值乘以4,这是不正确的。你必须每季度复合一次。如果我执行前者,则会重现您15.215842%的错误值,但如果我执行后者,则会得到正确的值16.106276%。而且,再次通过计算这些现金流的累计NPV来验证这一点,我得到零,确认16.1%是这一系列季度现金流的正确IRR。