唐磊的个人博客

信用卡分期年化利率计算方法

背景

经常收到各个银行电话推销可以办理小额贷款/信用卡账单分期/万用金, 或者其他乱七八糟的名字的产品. 遂问电销人员, 你们这个最后年化利息多少? 这个时候, 一般销售人员都直接回避这个问题, 美其名曰: “我们不收利息, 我们只收取一定的手续费, 基于您这边的良好信用, 现在您有一笔5万的额度是可以立即提现的, 可以分12期还, 每月只需要XXXX元”

可能不太懂的同学, 听到电销的宣传, 感觉这利率还不算贵, 缺钱急用还挺划算的啊. 有可能直接被套路, 就接受了忽悠, 办理了这个贷款/分期产品.

下面我以浦发银行实际例子来算一下, 类似产品最后年化利率到底是多少.

如上图所示, 是浦发银行的贷款产品(万用金), 可以看到, 提现10000元, 分12期即分12个月还钱, 等额本息的还款方式, 每月需还款929.51元. 初略地看, 你可以会简单的认为这个利率就是, 一共还的钱为929.51*12, 然后借款本金为10000元, 那么年化利率即为: (929.51*12 - 10000)/10000*100%=11.54% 感觉似乎不那么高.

然而, 事实上, 这种算法是有问题的, 因为你借款的本金10000元, 并没有享受到1年的期限, 以后每个月都还了本金呀.

实际年化利率

我们用网上常见的房贷/借款计算器来算一下, 如果按照年化11.54%来计算, 每月的还款情况应该如下, 即每个月只需要等额本息还款886.34, 比929.51元少不少.

而如果每个月还款929.51元的话, 其利率远远不止11.54%, 直接仍然用那个借款计算器大概估计一下. 貌似现有的网上的工具都只能正向算, 即已知利率和贷款本金计算还款计划表, 没有一个工具能从每月还款额反推贷款利率, 初步多次尝试得到如下逼近的结果.

可以看到, 年化利率达到了20.66%, 比之前预想想象中多了太多了.
所以电话销售在推销的时候, 往往不会直接告诉你这个年化利率, 因为太高了, 说了你可能不太会接受.
而这个利率到底是怎么计算来的呢? 为啥会有前后这么大的差别?
实际上, 你借款本金1W并没有享受整年, 而是只享受到了1个月, 因为1个月之后, 你就有归还部分本金(和利息).

推导方法

我们来正向推到一下这个等额本息利率的计算过程.
假设借款总额为A, 月利率为R, 每月还款额为M, 抓住一点, 欠款总额为本金*(1+月利率)则有:

本来是markdown渲染的公式, 无奈结合table转成html之后太丑了, 于是就用截图的方式了, 点开后查看大图.

所以, 能得到第i个月的欠款情况, 上面的公式可以简化一下, 因为被减数M后边的是一个等比数列, 得到第i个月后, 欠款总额为

\begin{align}
Qi &= A(1+R)^{i} - M[(1+R)^{i-1} + (1+R)^{i-2} + … + (1+R)^2 + (1+R) + 1] \\
&= A(1+R)^{i} - M(1 * \frac{1-(1+R)^{i}}{1-(1+R)}) \\
&= A(1+R)^{i} - M\frac{(1+R)^{i}-1}{R}
\end{align}

如果知道月利率R, 要计算每个月还款额也可以直接通过上面这个公式得到,

$$
M = \frac{A*R(1+R)^i}{(1+R)^i-1}
$$

以上述浦发银行的这个例子为准, 其中A=10000, M=929.51, 代入上面的公式就可以算出R的值.
不太好直接解方程, 自己写了段小代码迭代搜索一下能算出来.

貌似这里能出一道给程序猿的面试题目了, 哈哈. 码农朋友们, 看看有哪些方法能够算出来? 我这边暂时不公布自己写的这段代码, 看看大家有思路? (敲黑板)
后面有空可以写个小程序, 供大家使用.

通过计算得到, 借款10000元, 每月还款额度为929.51元的情况下, 月利率为0.0171.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

所以, 朋友们, 不要被表面现象所迷惑. 另外, 码农朋友们, 思考一下前面留出的问题哈, 看看大家都有什么方法来算.
欢迎留言讨论.

tanglei wechat
欢迎扫码加入互联网大厂内推群 & 技术交流群,一起学习、共同进步