点击上方蓝色字体,关注我 ——
一个在阿里云打工的清华学渣!
你肯定也经常收到各个银行电话推销,可以办理小额贷款/信用卡账单分期/万用金,或者其他乱七八糟的名字的产品。
又或者接到电话说,“石头先生,我们有留意到您这个月账单为 X 万元,请您放心,我这次打电话过来并不是来催您还款的。基于您在我行的优质信用,我们这边可以帮你申请延期还款,这个钱这个月不用还,下个月开始分期还,只需要每个月还款 xx 元即可……” (有印象么?)
遂问电销人员,你们这个最后年化利息多少?
这个时候,一般银行客服都会直接回避这个问题,美其名曰:“我们不收利息,我们只收取一定的手续费,基于您这边的良好信用,现在您有一笔5万的额度是可以立即提现的,可以分12期还,每月只需要XXXX元”。
可能不太懂的同学,听到银行客服同学的宣传,感觉这利率还不算贵,缺钱急用还挺划算的啊。有可能直接被套路,就接受了忽悠,办理了这个贷款/分期产品。
下面我以浦发银行实际例子来算一下,类似产品最后年化利率到底是多少。
如上图所示,是浦发银行的某名叫“万用金”的产品,可以看到,提现 10000 元,分 12 期(即分12个月)还钱,等额本息的还款方式,每月需还款 929.51 元。
初步计算你可能会简单的认为这个利率就是,一共还的钱为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'
期数 | 还款本息 | 利息 | 本金 | 剩余本金 |
---|---|---|---|---|
1 | 929.51 | 172.17 | 757.34 | 9242.66 |
2 | 929.51 | 159.13 | 770.38 | 8472.28 |
3 | 929.51 | 145.87 | 783.64 | 7688.64 |
4 | 929.51 | 132.38 | 797.13 | 6891.51 |
5 | 929.51 | 118.65 | 810.86 | 6080.65 |
6 | 929.51 | 104.69 | 824.82 | 5255.84 |
7 | 929.51 | 90.49 | 839.02 | 4416.82 |
8 | 929.51 | 76.05 | 853.46 | 3563.35 |
9 | 929.51 | 61.35 | 868.16 | 2695.19 |
10 | 929.51 | 46.40 | 883.11 | 1812.09 |
11 | 929.51 | 31.20 | 898.31 | 913.78 |
12 | 929.51 | 15.73 | 913.78 | 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%部分的利息的,人民法院应予支持。
所以,朋友们,下次银行再给你打电话,你知道怎么应付了吧?再也不用被所谓的手续费利率(表面现象)所迷惑了哦!
另外,请广大的程序猿朋友们思考一下前面留出的问题哈,看看大家都有什么方法来计算,欢迎留言讨论。
原创真心不易,希望你能帮我个小忙呗,如果本文内容你觉得有所启发,有所收获,请帮忙点个“在看”呗,或者转发分享让更多的小伙伴看到。
推 荐 阅 读
震惊! 阿里的程序员也不过如此,竟被一个简单的 SQL 查询难住
这 10 行比较字符串相等的代码给我整懵了,不信你也来看看
一行代码引来的安全漏洞就让我们丢失了整个服务器的控制权
大家都知道递归,尾递归呢?什么又是尾递归优化?
实战!我用“Wireshark”让你看见 TCP
码农@阿里云,清华学渣
用不同的视角分享高质量技术文章
欢迎关注,共同成长,共同进步!
- 加入互联网大厂内推群 & 技术交流群 -
程序猿石头|微信:tl3shi
欢迎 扫码 加群
备注“内推”/“交流”
程序猿石头
[1]
房贷/借款计算器: http://finance.sina.com.cn/calc/money_loan.html
[2]Excel IRR 函数说明: https://support.office.com/zh-cn/article/IRR-%E5%87%BD%E6%95%B0-64925EAA-9988-495B-B290-3AD0C163C1BC