下面的讨论提供了Objective C IRR计算中的代码,与Excel IRR函数相比,这些代码始终不正确。有人知道为什么会有这样的差异吗?
前面的讨论中提供了使用的代码:
Calculate IRR (Internal Rate Return) and NPV programatically in Objective-C
我用来计算内部收益率的测试现金流如下:"Print tempCashFlow:( "-5099701.25","-22503.796875","-22503.79296875","-22503.79296875","-20907.26171875","-17899.7421875","-17899.7421875","-17899.7421875","-14660.69140625","-12447.80078125","-12447.796875",“-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 (正确答案))
发布于 2015-04-26 00:20:55
由Excel的IRR函数报告的该系列现金流的内部收益率为3.803961% (但这假设它们是年度现金流)。您引用的C算法也会返回3.803961%。因此,这两个计算值之间没有差异。如果我将所有这些年度现金流的净现值相加,我得到的是零,验证了3.803961%是正确的内部收益率。
您还没有分享如何使用Excel IRR或此函数来处理季度现金流,但我怀疑您可能只是将此C函数的结果值乘以4,这是不正确的。你必须对它进行季度复利。如果是前者,我会重现不正确的15.215842%值,但如果是后者,我会得到正确的值16.106276%。再一次,通过计算这些现金流的累积净现值来验证这一点,我得到了零,确认了对于这个季度现金流系列,16.1%是正确的内部收益率。
https://stackoverflow.com/questions/29859791
复制相似问题