下面的讨论提供了目标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),误差幅度会大幅增加(正确答案)答案 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。