信用卡分期手续费率与贷款利率间的相互转换

来源:互联网 发布:沃特沃德 知乎 编辑:程序博客网 时间:2024/04/28 17:07

背景

近期遇到的一个真实事件:
中信银行给我打电话,说我的信用卡欠款可以分期归还,手续费折算到每月大约是0.57%。手续费需要在第一个月全额支付。比如我分期12000元,则第一个月应还:
1000+(12000×0.0057×12)=1820.8
从第二个月开始,每个月还1000

另一方面,蚂蚁花呗贷款日息是万2,也就是10000块钱每日利息2块钱,月利率大约是0.6%。

问题来了,中信银行的信用卡欠款,是分期比较划算,还是从蚂蚁花呗借款(12个月,按月等额本息还款)来还划算?

我第一感觉是手续费率较低,当时正好钱荒,所以当场就办理了分期。回头一想似乎不对,于是拿出手机打开支付宝算了算:
蚂蚁借呗

总利息是480.03元,而前述手续费是820.80元,比较下来等额本息要少还不少利息。
其实仔细想想就能明白,无论等额本金还是等额本息还款,用来计算利息的本金都是逐月减少,但用来计算分期手续费的本金则是始终等于借款总额,这个差异点使得分期手续费率与贷款利率之间不能直接比较。

既然不能直接比较,它们之间应如何转换?本文就这个问题做了些探讨。先说下结论,在分期手续费率不高(月费率小于1%)的情况下,通常可以直接按照2倍来估算对应的贷款利率(此时等额本金、等额本息差别不大)。此结论有助于在不同资金操作方式间进行比较。

约定

月手续费率:x
月贷款利率:y
月份数:m
总利息:P
借款总数:A
等效贷款数:A
解释下借款总数与等效贷款数之间的关系:一般银行的手续费分为首月付清或者末月付清,而不是逐月支付
- 如果是首月付清手续费,则用户实际可用款项是借款总数减去手续费,而不是全部借款,此时相当于贷款A=AA×m×x
- 如果是末月付清手续费,则等效贷款数等于借款总数A=A
基于以上讨论,引入“贷借比”k=AA

k={1mx1

推导

所谓手续费率与贷款利率的“等效关系”是基于以下条件:双方所计算出来的应付总利息相等
分期手续费率总利息:

P=A×m×x

等额本金

如果是贷款且使用等额本金方式还款,则应付利息为:

  • 第1个月:Ay=Aymm
  • 第2个月:(AAm)y=Ay(m1)m
  • 第n个月:(AA(n1)m)y=Ay(m+1n)m
  • 总利息:P=Ay[m+(m1)+...+1]m=Ay(m+1)2

所以应有:

Amx=Aym+12


y=2mxk(m+1)

等额本息

等额本息下,每月还款额是

X=Ay(1+y)m[(1+y)m1]

推导过程不赘述,参考这里
总利息:
P=mXA=A{my(1+y)m[(1+y)m1]1}


Amx=A{my(1+y)m[(1+y)m1]1}


kmy(1+y)mk[(1+y)m1]mx[(1+y)m1]=0


kmy(1+y)m(k+mx)(1+y)m+(k+mx)=0(1)

我数学知识忘得差不多了…以上表达式无法直观的看出符号解y=f(x),只好求助于matlab。

代码

matlab是处理数学问题和绘制函数图像首选。

等额本金

function [y] = principal(x, m, pre_pay)%Matching principalif pre_pay    k = 1 - x .* m;else    k = ones(1, length(x));endy = 2 * m .* x ./ (k .* (m + 1));end

等额本息

等额本息换算公式较为复杂,(1)并非标准的多项式形式,我们做个转换:
t=1+y,则(1)转换为

km(t1)tm(k+mx)tm+(k+mx)=0


kmtm+1(km+k+mx)tm+(k+mx)=0(2)

(2)是标准的多项式形式,可以用matlab的roots函数求解,需要过滤掉复数解以及t=1的解(注意到roots是求数值解,有一定误差,所以实际代码中采用了更宽松的判断条件)。

function [y] = interest(x, m, pre_pay)%Matching interestif pre_pay    k = 1 - x .* m;else    k = ones(1, length(x));endrows = length(x);p = zeros(rows, m + 2);p(:, 1) = k .* m;p(:, 2) = -(k .* m + k + x .* m);p(:, m + 2) = k + x .* m;y = [];for i = 1:rows    t = roots(p(i, :));    t_rows = 1;    for j = 1:length(t)        if isreal(t(j)) && t(j) > 1 + x(i)            y(t_rows, i) = t(j) - 1;            t_rows = t_rows + 1;        end    endendend

结论

以分12期为例。在matlab中使用以下代码来看y=f(x)图形变化趋势

x = linspace(0, 0.04);y1 = principal(x, 12, 1);y2 = principal(x, 12, 0);y3 = interest(x, 12, 1);y4 = interest(x, 12, 0);y5 = x .* 2;figure;plot(x, y1, 'r', x, y2, 'g', x, y3, 'b', x, y4, 'c', x, y5, 'k.'), grid;xlabel('手续费率');ylabel('等效利率');legend('等额本金,手续费首月付清', '等额本金,手续费末月付清', '等额本息,手续费首月付清', '等额本息,手续费末月付清', '2倍手续费率', 'Location', 'northwest');

b=f(a)
可以看到,等效的贷款利率通常远高于对应的分期手续费率。在分期手续费率较小时,等效贷款利率约2倍于手续费率。

开篇提到中信银行的分期月手续费率为0.57%(首月支付),那么对应的等额本息等效月利率是

>> interest(0.0057, 12, 1)ans =    0.0111

即1.11%。

0 0