[英]Different results for IRR computation between R and MS Excel
內部收益率(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代碼有什么問題?
您無所不能地找到了小數目,這可能會引起容忍度的問題。 嘗試:
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
如果您的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
軟件包來計算IRR:
> require(financial)
> cf(cal_cash(3600,0.006,24))$irr
[1] -185.755352 1.105466
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.