首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法获取discount.rate函数来计算收益率

无法获取discount.rate函数来计算收益率
EN

Stack Overflow用户
提问于 2017-04-08 03:55:19
回答 2查看 562关注 0票数 0

我尝试使用FinCal包中的discount.rate函数来计算回报率,但似乎对我不起作用。

代码语言:javascript
运行
复制
discount.rate(n=360,pv=-100000,fv=0,pmt=500,type=0)

n=360意味着有360次付款(换句话说,30年期贷款)

pv=现值(银行给借款人100,000美元买房)

pmt =月付

fv =未来值(设置为0,因为银行最初提供100,000美元,但30年后除了每月的抵押贷款还款外,什么也收不回来)

type =0表示在每个期间结束时付款

我得到以下错误:

代码语言:javascript
运行
复制
*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中不工作。

EN

回答 2

Stack Overflow用户

发布于 2017-04-08 16:06:31

FinCal包不允许您将复合/贴现频率(在本例中为每年12次)指定为discount.rate()函数的参数,这似乎会导致问题。如果您将pmt转换为每年(6,000 = 12*500)并设置n=30,该函数将得到4.31%,这是声明的年利率:

代码语言:javascript
运行
复制
discount.rate(n=30, pv= -100000, fv=0, pmt=6000, type=0)

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

代码语言:javascript
运行
复制
ear(0.04306572,12)

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-04-13 00:02:52

它是由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,= 1)

1 0.003683461

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

库(“devtools”)

来自GitHub的install_github("felixfan/FinCal") #,现在

几天后,来自CRAN的install.packages("FinCal",dependencies=TRUE) #

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43286148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档