我目前正在寻找Excel RATE()
和IRR()
的正常工作。我在Javascript中编写了针对现代浏览器和Rails 4中的Ruby 2.0.0的代码。我的目标是能够在带有Rails后端的响应式Javascript应用程序中计算APR。
我看了并拒绝了以下选项:
Finance Gem:没有RATE()
功能。 IRR()
似乎挂起了许多测试向量。
Formula.js:没有有效的RATE()
功能。 IRR()
对许多测试向量不起作用。
PHPExcel:有一个有效的RATE()
函数我转换为Ruby。这不能像PHP版本那样工作,并且对于重要的测试向量失败了。这可能确实有IRR()
功能,但我还没有测试过。我并不希望我能找到一个有效但我会不顾一切地测试它。
我对用数学公式编写自己的实现不感兴趣。我更喜欢看起来经过严格测试的代码。
更新
我找到了一个使用R执行IRR()
的程序,该程序对于我们的目的可能足够准确:https://stat.ethz.ch/pipermail/r-help/2008-August/169619.html我会在第二天左右评估此解决方案,如果我感到满意,请更新我的问题通过它。
答案 0 :(得分:0)
我制作了一个名为Exonio的宝石:
这个gem在Ruby中实现了一些Excel公式,也许它可以帮助你。
为了实现IRR
方法,我使用Newton
ruby模块,这是一个根查找算法。
很想知道对此有任何改进。
答案 1 :(得分:-1)
经过一些测试后,我对R:
中IRR()
的实现感到满意
https://stat.ethz.ch/pipermail/r-help/2008-August/169619.html
这是一个可通过Rscript命令运行的脚本形式:
args <- commandArgs(TRUE)
periods = as.numeric(args[1])
payment = as.numeric(args[2])
value = as.numeric(args[3])
monthsInYear = 12
timeline <- (0:periods)
payments <- payment + (0 * timeline)
payments[1] <- value
f <- function(r) sum(payments * exp(-r * timeline))
irr <- function(f) uniroot(f, c(0, 1))$root
irr(f) * monthsInYear