R和MS Excel之间IRR计算的结果不同

时间:2014-02-13 02:24:13

标签: r excel irr

内部收益率(IRR)或经济收益率(ERR)是资本预算中用于衡量和比较投资盈利能力的回报率。

我写了一些R代码来计算内部收益率(IRR),如下所示:

cal_irr <- function(amount,fee,duration) {
    cash<-c(amount,rep(-1*(amount*fee+amount/duration),duration))
    NPV<-function(r){sum(cash /((1 + r) ^ (seq(along.with = cash)-1)))}
    return(uniroot(NPV, c(0, 1))$root)
}

cal_irr可以计算分期付款,但令人讨厌的是我的结果与MS Excel中的财务功能IRR不同。

例如,您从银行借了3600,管理费是0.006*3600,24个月内的主要分期付款,所以每个月你都需要支付3600*0.006+3600/24=171.6

您每月产生的费用为cal_irr(3600,0.006,240) = 0.01104071,但在Excel中我获得1.1054657%。我的R代码出了什么问题?

enter image description here

2 个答案:

答案 0 :(得分:3)

你找不到可能会导致容忍问题的小数字。试试:

cal_irr <- function(amount,fee,duration) {
  cash<-c(amount,rep(-1*(amount*fee+amount/duration),duration))
  NPV<-function(r){sum(cash /((1 + r) ^ (seq(along.with = cash)-1)))}
  return(uniroot(NPV, c(0, 1), tol=.0000001)$root)}
cal_irr(3600,0.006,24)
# [1] 0.01105466

答案 1 :(得分:0)

如果您的CF看起来像这样:

> cal_cash <- function(amount,fee,duration) c(amount,rep(-1*(amount*fee+amount/duration),duration))
> cal_cash(3600,0.006,24)
 [1] 3600.0 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6 -171.6
[20] -171.6 -171.6 -171.6 -171.6 -171.6 -171.6

然后很容易使用financial包来计算内部收益率:

> require(financial)
> cf(cal_cash(3600,0.006,24))$irr
[1] -185.755352    1.105466