0

下面的讨论提供了与 Excel IRR 函数相比始终不正确的 Objective C IRR 计算代码。有谁知道为什么会有这样的差异?

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

在 Objective-C 中以编程方式计算 IRR(内部收益率)和 NPV

我用来计算 IRR 的测试现金流如下:“打印 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(正确答案)之类的东西),误差幅度会急剧增加

4

1 回答 1

0

IRRExcel函数报告的该系列现金流的内部收益率是3.803961%(但假设它们是年度现金流)。您引用的 C 算法也返回3.803961%。因此,这两个计算值之间没有差异。如果我将所有这些年度现金流的 NPV 相加时应用该比率,我得到零,验证3.803961%IRR 是正确的。

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

于 2015-04-25T16:20:54.890 回答