找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-5-20 09:08:49
2#
您好,请提供一个能重现问题的Excel文档,或ssjson文档,如果重现后确认是公式的Bug,我们会尽快提交修复流程。
回复 使用道具 举报
最佳答案
最佳答案
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-5-19 16:02:11
来自 31#
本帖最后由 dexteryao 于 2020-6-11 13:43 编辑

您好,这个问题也比较久了,总结下这个IRR的问题。
首先,IRR计算回报率是一个根据结果迭代计算的值,IRR是一个多值结果,即可计算出多个满足当前现金流的回报率。可以通过设置收益率估值,来选择接近回报率。体现在IRR公式中就是不同的收益率估值会带来不同的结果。
但是不同的迭代算法和迭代次数计算的IRR结果是不同的,即使收益率估值相同,不同的算法也会算出不同的值,同时迭代次数也会使计算的结果精度不同,这些值都是正确的。
举例来说,下图是您提供的其中一组数据,这组数据可以计算出-8.34%, 0.98%, 289%三个结果,如果带入公式,这三个结果都是正确的。
image.png838998107.png
其次,Excel中的算法、策略都是未知的,目前没有任何资料文档说明Excel的策略。SpreadJS现阶段只能根据经验推测Excel的策略,但是仍有很多场景不能理解。
比如,A1设置-100,A2:A239设置0,A240设置100,这意味着240个周期赚了200。用Excel计算IRR(A1:A240)结果是DIV/0,这个是无法理解的。还有上图中1%应该是更加合理的结果,即使在给定预估值给定0.1的情况下Excel依旧返回298%,这个值过于乐观了。
另外,SpreadJS现在已经是目前市面上IRR结果最接近于Excel的产品,研发花费了大量的时间来消除差异,我们测试了Google等其他产品,计算结果都于SpreadJS相差甚远。下图是GoogleSheet的结果。

image.png610773620.png

总结来说,IRR本身作为预估值,就有不确定性,而且没有标准确定那种算法是正确的算法,对于和Excel结果的不一致,SpreadJS会在保证结果合理的前提下尽量和Excel保持一致。同时,在某些场景下,SpreadJS会保持自己的结果。
另,本周会发最后的修复版本。


回复 使用道具 举报
1234
您需要登录后才可以回帖 登录 | 立即注册
返回顶部