一招看穿信用卡套路

使用Python解决实际问题

最近做了件有意思的事,虽没多少技术含量,但还是可以分享出来逗大家乐一乐。
因为穷,我需要向银行贷款,目前建设银行提供两个贷款:一个是利率为5.39%的房贷,等额本息,每个月还款固定金额;另一个是装修贷,月利率0.28%,本金分期偿还,类似于信用卡账单分期,每个月还款也是一个固定金额,贷款时间最长5年,额度30万。
建行经理说装修贷是该行最优惠的贷款了,一般信用卡分期的基础利率为0.68%,打骨折75折也要0.51%,装修贷月利率0.28%实在是太便宜了,乘以12个月,也才0.28%*12=3.38%的年利率,比房贷利率5.39%还低,简直便宜得不要命。
作为金融民工的我来说,忍不住要想:这么便宜,我要不要用装修贷来还房贷?这样不就能薅点羊毛?为了解决这个实际计算问题,我们需要用到有强大计算能力的Python。而且两个贷款每个月还款金额都是固定数,因此具有可比性和相互转化性。

公式

两钟贷款的计算公式:

  1. 房贷公式
    首先:房贷的计算公式为:
    在这里插入图片描述
    其中月还款额为X,贷款总额为A,银行月利率为β,总期数为m(个月)。
  2. 信用卡分期公式:
    每期还款金额= 贷款本金/还款期数 + 贷款本金*月利率。
    其中的贷款本金是初始贷款金额。
    话不多说,直接上代码,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,能让我们在面对银行分析师使用的各种套路(比如免利率只收手续费等)时更加的理智。免得身上的本身就不多的毛反倒被银行给薅走了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值