无法获得discount.rate函数来计算回报率

时间:2017-04-07 19:55:19

标签: r

我试图在FinCal包中使用discount.rate函数来计算回报率,但它似乎对我没用。

discount.rate(n=360,pv=-100000,fv=0,pmt=500,type=0)

n=360表示有360笔付款(换句话说,30年期贷款)

pv=现值(意味着银行向借款人提供10万美元购买房屋)

pmt =每月付款

fv =未来价值(设置为0,因为银行最初提供100,000美元但30年后除了每月抵押贷款支付之外没有收到任何费用)

type = 0表示付款是在每个期间结束时进行的

我收到以下错误:

*Error in uniroot(function(r) fv.simple(r, n, pv) + fv.annuity(r, n, pmt,  : 
f.upper = f(upper) is NA*

我在SAS的类似财务功能中使用了相同的值,并且工作正常。谢谢你的帮助。

根据一个用户的建议,我在Excel中尝试过,它也运行良好。适用于SAS和Excel,但不适用于R.

2 个答案:

答案 0 :(得分:0)

FinCal软件包不允许您指定复合/折扣频率(在这种情况下每年12个)作为discount.rate()函数的参数,这似乎导致了问题。如果您将pmt转换为每年(6,000 = 12 * 500)并设置n = 30,则该函数会给出4.31%,即所述年费率:

discount.rate(n=30, pv= -100000, fv=0, pmt=6000, type=0)

然后使用m = 12和r = 0.04306572的同一包中的ear(r,m)函数得到4.39%的有效年率(EAR):

ear(0.04306572,12)

希望这有帮助。

答案 1 :(得分:0)

这是由uniroot造成的。 discount.rate()的默认间隔是(1e-10,1e10),当我将其更改为(1e-4,1)时,我得到了0.003683461。

  

discount.rate(n = 360,pv = -100000,fv = 0,pmt = 500,type = 0,lower = 0.0001,upper = 1)

[1] 0.003683461

我在discount.rate()中添加两个新参数'lower'和'upper',这样你就可以尝试不同的时间间隔了。您需要重新安装FinCal软件包。

库(注明 “DevTools”)
install_github(“felixfan / FinCal”)#来自GitHub,现在

install.packages(“FinCal”,依赖项= TRUE)#几天后来自CRAN的