一招看穿信用卡套路
作者:互联网
一招看穿信用卡套路
使用Python解决实际问题
最近做了件有意思的事,虽没多少技术含量,但还是可以分享出来逗大家乐一乐。
因为穷,我需要向银行贷款,目前建设银行提供两个贷款:一个是利率为5.39%的房贷,等额本息,每个月还款固定金额;另一个是装修贷,月利率0.28%,本金分期偿还,类似于信用卡账单分期,每个月还款也是一个固定金额,贷款时间最长5年,额度30万。
建行经理说装修贷是该行最优惠的贷款了,一般信用卡分期的基础利率为0.68%,打骨折75折也要0.51%,装修贷月利率0.28%实在是太便宜了,乘以12个月,也才0.28%*12=3.38%的年利率,比房贷利率5.39%还低,简直便宜得不要命。
作为金融民工的我来说,忍不住要想:这么便宜,我要不要用装修贷来还房贷?这样不就能薅点羊毛?为了解决这个实际计算问题,我们需要用到有强大计算能力的Python。而且两个贷款每个月还款金额都是固定数,因此具有可比性和相互转化性。
公式
两钟贷款的计算公式:
- 房贷公式
首先:房贷的计算公式为:
其中月还款额为X,贷款总额为A,银行月利率为β,总期数为m(个月)。 - 信用卡分期公式:
每期还款金额= 贷款本金/还款期数 + 贷款本金*月利率。
其中的贷款本金是初始贷款金额。
话不多说,直接上代码,Python的可读性非常好,每行我也加了注释,变量用拼音,非常好懂。代码片
.
// An highlighted block
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#定义基本参数
benJin=300000 #本金30万
nianXian=5 #贷款年限
zongYueShu=nianXian*12 #贷款总月份数
##房贷计算参数
fangDaiLiLv=0.0539 #房贷利率
yueLiLv=fangDaiLiLv/12 #月利率
##房贷计算公式
meiYueHuanKuan=(benJin*yueLiLv*(1+yueLiLv)**zongYueShu)/((1+yueLiLv)**zongYueShu-1)
print('每月房贷还款额度为:',meiYueHuanKuan)
fangDaiZongHuan=meiYueHuanKuan*zongYueShu #房贷总还款金额
print('房贷总计还款额为:',fangDaiZongHuan)
##信用卡利息计算参数
yueLiXi = 0.0028 #信用卡月利率
meiYueliXi=benJin*yueLiXi #信用卡月利息
meiYueHuanBenJin = benJin/zongYueShu #信用卡每月归还本金
meiYueHuanKuanZongE = meiYueliXi+meiYueHuanBenJin #信用卡每月归还额
print('信用卡每月还款额:',meiYueHuanKuanZongE)
huanKuanZongE = meiYueHuanKuanZongE*zongYueShu #信用卡总计还款金额
print('信用卡总计还款额为:',huanKuanZongE)
#两种贷款归还金额差额
chaE= huanKuanZongE-fangDaiZongHuan #信用卡比房贷多还款的金额
print('信用卡比房贷多还款金额:',chaE)
运行结果
运行结果如下:
每月房贷还款额度为: 5715.1292964977965
房贷总计还款额为: 342907.7577898678
信用卡每月还款额: 5840.0
信用卡总计还款额为: 350400.0
信用卡比房贷多还款金额: 7492.242210132186
初步结论
What???看似便宜的信用卡贷款比用房贷利率多还7千多元?是我薅银行羊毛还是银行薅我羊毛。大写的WO CHA!!!
我不甘心,凭感觉那个信用卡贷款应该便宜啊,于是我画了一个图,把贷款年限拉长到40年,结果如下:
可以看出,年限为30年的时候,房贷首次超过了信用卡,所以如果贷款年限能超过30年,那么信用卡贷款就是划算了,当然银行有一帮专门研究这种策略的数据分析师,我们能想到的薅羊毛手段,对方早就烂熟于心,所以早就设定了贷款年限最长5年,等你上钩呢。
还没完,那么接着问,那5年的信用卡贷款,相当于什么利率水平的5年期房贷呢?
非线性方程的求解
这是个非线性方程的求解,我们需要使用到scipy.optimize 中的fsolve,专门来解这些高维方程的。fsolve通过梯度下降法,可以快速的找到指定范围内的局部最优解。
所以为了求解上面的问题,我们需要改写一下程序,写成方程式的形式,进行求解,代码如下:
// An highlighted block
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
#定义基本参数
benJin=300000 #本金30万
nianXian=5 #贷款年限
zongYueShu=nianXian*12 #贷款总月份数
#房贷计算公式,输入年利率,输出每月还款额
def fangDaiJiSuan(fangDaiLiLv):
yueLiLv = fangDaiLiLv / 12 # 月利率
meiYueHuanKuan = (benJin * yueLiLv * (1 + yueLiLv) ** zongYueShu) / ((1 + yueLiLv) ** zongYueShu - 1)
print('每月房贷还款额度为:', meiYueHuanKuan)
fangDaiZongHuan = meiYueHuanKuan * zongYueShu # 房贷总还款金额
print('房贷总计还款额为:', fangDaiZongHuan)
return meiYueHuanKuan
#信用卡利息计算公式,输入月利率,输出每月还款额
def xinYongKaJiSuan(yueLiXi):
meiYueliXi = benJin * yueLiXi # 信用卡月利息
meiYueHuanBenJin = benJin / zongYueShu # 信用卡每月归还本金
meiYueHuanKuanZongE = meiYueliXi + meiYueHuanBenJin # 信用卡每月归还额
print('信用卡每月还款额:', meiYueHuanKuanZongE)
huanKuanZongE = meiYueHuanKuanZongE * zongYueShu # 信用卡总计还款金额
print('信用卡总计还款额为:', huanKuanZongE)
return meiYueHuanKuanZongE
#定义差额函数,也就是求非线性方程的解,输入房贷年利率,输出房贷和信用卡的还款差额
def chaE(x):
##信用卡利息参数
yueLiXi = 0.0028 # 信用卡月利率
return fangDaiJiSuan(x)-xinYongKaJiSuan(yueLiXi)
#主函数
solve = fsolve(chaE,[0.5]) #求解房贷年利率
#打印求解结果
print(solve)
#验证结果是否真的是方程的解
print(np.isclose(chaE(solve), [0.0],atol=1e-3)) #检验解是否是符合方程组的近似解
运行结果
程序的结果如下:
[0.06287284]
结论2
也就是5年的信用卡贷款,相当于6.29%利率的5年期房贷。所以信用卡贷款才会更贵。
反过来,利率5.39%的房贷换算成信用卡分期利率是0.238%,上述代码稍微改一下就可求解,感兴趣的同学可以动手试试。如果银行愿意用这种利率给我们分期,那么果断分期。当然这是做梦,该醒醒了。
SO,学会使用Python,能让我们在面对银行分析师使用的各种套路(比如免利率只收手续费等)时更加的理智。免得身上的本身就不多的毛反倒被银行给薅走了。
标签:贷款,信用卡,套路,还款额,房贷,zongYueShu,print,一招,看穿 来源: https://blog.csdn.net/weixin_43290383/article/details/111979461