做者 | 程序猿石头php
责编 | Carolnode
封图 | CSDN 付费下载自视觉中国面试
话说,你确定也常常收到各个银行电话推销,能够办理小额贷款/信用卡帐单分期/万用金,或者其余乱七八糟的名字的产品。算法
又或者接到电话说,“石头先生,咱们有留意到您这个月帐单为 X 万元,请您放心,我此次打电话过来并非来催您还款的。基于您在我行的优质信用,咱们这边能够帮你申请延期还款,这个钱这个月不用还,下个月开始分期还,只须要每月还款 xx 元便可……” (有印象么?)小程序
遂问电销人员,大家这个最后年化利息多少?ide
这个时候,通常银行客服都会直接回避这个问题,美其名曰:“咱们不收利息,咱们只收取必定的手续费,基于您这边的良好信用,如今您有一笔5万的额度是能够当即提现的,能够分12期还,每个月只须要XXXX元”。svg
可能不太懂的同窗,听到银行客服同窗的宣传,感受这利率还不算贵,缺钱急用还挺划算的啊。有可能直接被套路,就接受了忽悠,办理了这个贷款/分期产品。函数
下面我以浦发银行实际例子来算一下,相似产品最后年化利率究竟是多少。工具
如上图所示,是浦发银行的某名叫“万用金”的产品,能够看到,提现 10000 元,分 12 期(即分12个月)还钱,等额本息的还款方式,每个月需还款 929.51 元。ui
初步计算你可能会简单的认为这个利率就是,一共还的钱为929.51*12,而后借款本金为10000元,那么年化利率即为:(929.51*12 - 10000)/10000*100%=11.54%,感受还行啊,不夸张。
等等,好像哪里不对。
可是事实上,这种算法是有问题的,由于你借款的本金10000元,并无享受到1年的期限,之后每月都还了本金呀。
咱们用网上常见的房贷/借款计算器[1]来算一下, 若是按照年化11.54%来计算, 每个月的还款状况应该以下,即每月只须要等额本息还款886.34,比929.51元少很多。
而若是每月还款 929.51 元的话, 其利率远远不止11.54%,直接仍然用那个借款计算器大概估计一下。
貌似现有的网上的工具都只能正向算,即已知利率和贷款本金计算还款计划表, 没有一个工具能从每个月还款额反推贷款利率, 初步屡次尝试获得以下近似结果。(注:本文最初为2017 年写的文章,如今网上也有相似的计算器了,你能够直接用后文中的方法进行计算。)
能够看到,年化利率达到了20.66%,比以前预想一想象中多太多了。
因此电话销售在推销的时候,每每不会直接告诉你这个年化利率,由于过高了,说了你可能不太会接受。
实际上,你借款本金 10000,并无享受到全年,而是只享受到了1个月,由于1个月以后,你就有归还部分本金(和利息)了。
而这个利率究竟是怎么计算来的呢? 为啥会有先后这么大的差异?我们继续。
这里介绍一款小程序,本人 17 年左右写的(当初市面上可很难搜索到),直接点击下面的小程序便可使用。
如上图所示,直接输入借款总额,月还款额以及还款月数,便可计算年化利率。后来有用户反馈,但愿有一个已知借款利率,正向计算还款计划的功能,所以在以前又把这个功能给加上了,正向计算功能能够分为等额本息、等额本金以及先息后本一共三种还款方式计算。
正算还款计划
要想看如何推导计算过程的,记得体验小程序后,回来继续看后文的分析哦。
借助 Excel, 咱们也能够方便的计算出正确的年化利率。
excel 计算年化利率
直接利用 Excel 里面的IRR函数能够直接计算,或者直接用 RATE函数计算也能够。
IRR 函数:输入直接分期总数,以及后面每期还款数便可。
RATE 函数:输入为三个参数,分别表示:分期数、每个月还款额、借款总额。
其实看 Excel 官方文档得知,Excel 的IRR等函数也是用迭代法进行计算的, 具体能够参考Excel IRR 函数说明[2]
若是只想知道用现成的工具如何计算这个还款利率,到这里就能够结束了。
若是你比较好奇,这背后究竟是怎么计算的呢,我们就继续。
特别是程序猿,能够动手试试哦,能不能实现如下 Excel 里面的 RATE 函数?
没思路的话,跟着个人节奏,我们一块儿来。咱们来正向推导一下这个等额本息利率的计算过程。
假设借款总额为 A, 月利率为 R, 每个月还款额为 M, 抓住一点,欠款总额为本金*(1+月利率)则有:
推导过程(放大看)
因此,能获得第 i 个月的欠款状况,上面的公式能够简化一下,由于被减数 M 后边的是一个等比数列,获得第 i 个月后,欠款总额为:
若是知道月利率 R, 要计算每月还款额也能够直接经过上面这个公式获得,
仍然以上述浦发银行的这个例子为准,其中 A=10000, M=929.51,代入上面的公式就能够算出 R 的值。
可是!上面这个方程如何解呢?
我们也能够跟着 Excel 学嘛,人家都说了是用迭代法,我们也能够哦。
本身写了段小代码迭代搜索一下能算出来。貌似这里能出一道给程序猿的面试题目了,哈哈。
各位程序猿朋友们,看看有哪些方法可以算出来?我这边暂时不公布本身写的这段代码,看看你们有思路? (敲黑板)
经过计算获得,借款10000元, 每个月还款额度为929.51元的状况下, 月利率为0.017即1.7%, 年化利率即为 20.65% 基本上与文首查到的一致。
月利率出来以后, 还款计划表也就天然而然可以出来了。
>>> monthRate = calcMonthRate(12, 10000, 929.51) >>> print monthRate 0.0172138214111 >>> print monthRate * 12 0.206565856934 >>> schedules = repaymentSchedules(12, 10000, monthRate) >>> for s in schedules: print s ... [1, '929.49', '172.14', '757.35', '9242.65'] [2, '929.49', '159.10', '770.39', '8472.26'] [3, '929.49', '145.84', '783.65', '7688.61'] [4, '929.49', '132.35', '797.14', '6891.47'] [5, '929.49', '118.63', '810.86', '6080.61'] [6, '929.49', '104.67', '824.82', '5255.79'] [7, '929.49', '90.47', '839.02', '4416.77'] [8, '929.49', '76.03', '853.46', '3563.31'] [9, '929.49', '61.34', '868.15', '2695.16'] [10, '929.49', '46.39', '883.10', '1812.06'] [11, '929.49', '31.19', '898.30', '913.76'] [12, '929.49', '15.73', '913.76', '0.00'
能够看出,上面的还款计划表跟最开始网上经过房贷计算器获得的一致,咱们再来看看,招行的有个现金分期业务。
上面的分期费率12期, 0.75%(表面的月息=(3270*12-36000)/36000/12),申请分期36000,每个月还款3270。经过上面的公式,咱们来看一下实际的费率状况,月息至关于 1.35%,年利率 16.2%,比表面的年息(0.75%*12=9%)高很多。
>>> calcMonthRate(12, 36000, 3270) 0.013513565063476562 >>> calcMonthRate(12, 36000, 3270)*12 0.16216278076171875
最后,来个小科普,针对贷款年化利率,有两个数字做为分割线,24% 和 36%。
借贷双方约定的利率未超过年利率24%,出借人请求借款人按照约定的利率支付利息的,人民法院应予支持。
借贷双方约定的利率超过年利率36%,超过部分的利息约定无效。借款人请求出借人返还已支付的超过年利率36%部分的利息的,人民法院应予支持。
因此,朋友们,下次银行再给你打电话,你知道怎么应付了吧?不再用被所谓的手续费利率(表面现象)所迷惑了哦!
另外,请广大的程序猿朋友们思考一下前面留出的问题哈,看看你们都有什么方法来计算,欢迎留言讨论。
推荐阅读
真香,朕在看了!