我试图在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.
答案 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的