Objective C IRR 计算与 Excel IRR 函数的比较

Posted

技术标签:

【中文标题】Objective C IRR 计算与 Excel IRR 函数的比较【英文标题】:Objective C IRR calculation compared to Excel IRR function 【发布时间】:2015-04-25 00:57:35 【问题描述】:

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

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

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

我用来计算 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% 的内部收益率(正确答案)

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

Rob - 你是绝对正确的。谢谢 - 我的错误。我使用 XIRR 而不是 IRR 函数来检查,代码假设的是年度现金流而不是季度。

以上是关于Objective C IRR 计算与 Excel IRR 函数的比较的主要内容,如果未能解决你的问题,请参考以下文章

Excel NPV/IRR - 填充从年度节省作为输入的范围

ValueError:计算负 IRR 时的数学域错误

Spotfire 7.6 中的 NPV 和 IRR

前后端结合解决Excel海量公式计算的性能问题

前后端结合解决Excel海量公式计算的性能问题

r irr与mlr的例子。