python等额本息和等额本金_房贷利率有没有套路?这是我见过最透彻的Python版解读!...
原标题:房贷利率有没有套路?这是我见过最透彻的Python版解读!
作者 | xiaoyu,半路转行数据
来源 | Python数据科学(ID:PyDataScience)
可能很多买过房、贷过款的朋友大概都知道怎么回事,但是我相信大部分人也没细研究过,而绝大部分人买房时更是任由房屋中介摆布,因为给了中介费相信他们可以算的明明白白,自己也就不过多深究了。但我觉得买房不是小事,真的有必要花些时间弄明白,尤其是贷款利率。
要说算利率,很简单。网上有很多现成的计算工具可以直接用,不过就像学机器学习一样,我不甘心只做个调包侠,所以对于利率的底层算法我还是想和大家分享一下,最后通过手撸Python完成计算,让大家彻底明白房贷到底是怎么回事。
房贷利率
我们买房贷款时银行通常会提供两种还款方式:等额本息,等额本金。我们就以在商业贷款的背景下,分别介绍这两种还款方式,然后再进行对比和验证。
等额本金
等额本金指每个月还的本金都是一样的,但是利息是动态变化的,随着我们每期归还本金而不断递减。
比如我要在北京买一套房,商业贷款200万不过分吧!假设贷款年利率为6%,期限30年,那么等额本金情况下每个月需还款200万/360月,即约0.55万/月。刚才说了,利息是动态变化的,也就是说银行每月会在剩余应还本金的基础上去计算利率,是一个动态的过程。公式如下:
有的朋友说了觉得这样说也不是很直观,那我直接来撸一段代码以表我的respect。
importnumpy asnp
importpandas aspd
importmatplotlib.pyplot asplt
importseaborn assns
plt.style.use("fivethirtyeight")
sns.set_style({'font.sans-serif':['simhei','Arial']})
%matplotlib inline
loan = 2000000# 贷款金额
annualRate = 0.06# 贷款年利率
monthRate = annualRate/12# 贷款月利率
period = 30# 贷款期限30年
# 每月应还本金
monthPrincipalPayment = [loan/(period*12)]*period*12
# 每月应还利息
monthInterestPayment = [(loan - loan*n/(period*12))*monthRate+loan/(period*12) forn in1,period*12+1)]
# 还款期数
month = [n forn inrange(1,period*12+1)]
f,ax=plt.subplots(figsize=(20,8))
l1 = plt.bar(month,monthInterestPayment,color='b',width=0.4)
l2 = plt.bar(month,monthPrincipalPayment,color='r',width=0.4)
plt.xlabel(u'还款期数(月)', size=20)
# 设置y轴标签
plt.ylabel('还款金额(元)', size=20)
# 设置标题
plt.title(u'等额本金', size=20)
#刻度字体大小20
plt.tick_params(labelsize=20)
# 设置注解狂
plt.legend(handles = [l1, l2,], labels = ['利息', '本金'], loc = 'best',fontsize=20)
plt.show
等额本金方式下的利息总和为1795000元。以下是运行出来的结果,蓝色代表利息,红色代表本金。每月应还本金不变,应还利息逐渐较少。
等额本息
等额本息是指还款总额(本金+利息)均等地分摊到每个月,即每个月的本息还款额都是一样的。
那么分摊的每月还款额是怎么计算的呢?计算稍微有点复杂,但也不难,就是把均摊还款额作为一个未知参数,然后通过公式推导法推导出它的表达式,如下:
这种方式下,每个月的剩余还款额都是在上个月剩余应还本息和的基础上计算当月产生的本息和,再减掉每月应还等额款X而完成的。用Python计算结果如下:
# 首月应还利息
firstMonthInterest = loan*monthRate
# 每月应还本息
monthPayment = (loan*monthRate*(1+monthRate)**360)/((1+monthRate)**360-1)
print("等额本息每月应还{}".format(round(monthPayment,2)))
根据上面公式可以计算出等额本息下每月应还本息金额(X):11991.01元。
这11991.01元当中包括了本金和利息,那么我想知道利息到底是怎么收的,每月都是多少?该怎么算?
很简单,迭代肯定是有一个初始值的,因此我们就以第一个月的应付利率为基准计算并往后迭代就可以了,这样之后每月的本金和利息都可以迎刃而解。
第一个月应还利息为:2000000 x 0.06 / 12 = 10000元,因此第一个月应还本金为11991.01-10000 = 1991.01元。
第二个月应还利息为:(2000000-11991.01)x0.06/12=9940.04元,因此第二个月应还本金为11991.01-9940.04=2050.97元。后面循环迭代即可。
找到了这个规律,我们同样用Python计算,代码如下:
loanPI = [loan*(1+monthRate)-monthPayment]
# 每期应还利息
loanInterest = [loan*monthRate]
forn in1, period*12):
loanPI.append((loanPI[n-1]*(1+monthRate)-monthPayment))
loanInterest.append(round(loanPI[n-1]*monthRate,2))
# 每期应还本金
loanPrincipal = [monthPayment-loanInterest[n] forn inrange(0,len(loanInterest))]
f,ax=plt.subplots(figsize=(20,8))
l1 = plt.bar(month,monthPaymentList,color='b',width=0.4)
l2 = plt.bar(month,loanPrincipal,color='r',width=0.4)
plt.xlabel(u'还款期数(月)', size=20)
# 设置y轴标签
plt.ylabel('还款金额(元)', size=20)
# 设置标题
plt.title(u'等额本息', size=20)
#刻度字体大小20
plt.tick_params(labelsize=20)
# 设置注解狂
plt.legend(handles = [l1, l2,], labels = ['利息', '本金'], loc = 'best',fontsize=20)
plt.show
等额本息方式下的利息总和为2316763.73元。以下是运行出来的结果,蓝色代表利息,红色代表本金。每月应还本息和是不变的,应还利息逐渐较少,应还本金逐渐增多。
两种还款方式对比和验证
以下是两种计算方式的还款金额对比,可以看到在我们选择的参数条件下等额本金比等额本息少了52万。
为啥差这么多?
因为等额本金就好比急着给银行还款,前期还的较多,利息就相对少了很多。下面是通过计算器得出的结果,和我们用Python计算的一致。
哪种贷款方式更优呢?
看到上面的结果,大家肯定想我肯定选择等额本金,少了52万!52万!52万!
然而现实情况是大多数人还是选择等额本息,为什么呢?我们对比看一下每月还款的趋势图,蓝色为等额本金,红色为等额本息。
看完以后知道了吧,等额本金总还款虽少,但开始每月还款很多,大概要到第130个月,也就是10年后的时候两种方式才会达到相等。
为什么很多人明知道等额本金利息少还要选择等额本息呢?
因为等额本金需要忍受前10年的高额月供啊!当然不缺钱的除外,不过不缺钱也就用不着贷款了,说明资金还是不够的。我仔细想了想,假如一个月税后工资15000,算上公积金3000的话,一个月什么都不干,工资净流出12000,就只剩3000了。加上另一半的工资一共还能有多少,在一线城市真的很难受,所以大家宁愿想过得舒服点,哪怕多还点钱也忍了。
有人说了自己会挣得越来越多,不是我悲观,前段时间的cy大家都知道的,未来的风险我们还是有必须要考虑一下的,拖家带口的不能孤注一掷。可别小看了高出的这几千元,那可是净流出啊,压死骆驼的最后一根稻草,当你工资不足以支撑的时候,估计500元你都得想半天。
哪种更优还是要结合自己的实际情况来看的,也不能一概而论,不过一般资金不是很充裕的情况下还是建议选择等额本息。
房贷利率有没有套路?
通过上面分析就显而易见了,房贷利率没有什么套路,无论是等额本息还是等额本金都是一样的,它们会每月动态计算利息,而不像分期一样每月所还利息按照初期本金计算不随本金较少而变化。下面是两种方式的每月应还利息变化。
两种方式每月利息都是随着本金变化而动态减少,所以说房贷的年化利率是多少就是多少,没什么套路一说,只不过是贷款时间长,利息高,给人一种不安全的感觉罢了。
(*本文仅代表作者观点,转载请联系原作者)返回搜狐,查看更多
责任编辑:
python等额本息和等额本金_房贷利率有没有套路?这是我见过最透彻的Python版解读!...相关推荐
- python等额本息和等额本金_用Python解读房贷利率,要不要看随你
可能很多买过房.贷过款的朋友大概都知道怎么回事,但是我相信大部分人也没细研究过,而绝大部分人买房时更是任由房屋中介摆布,因为给了中介费相信他们可以算的明明白白,自己也就不过多深究了.但我觉得买房不是小 ...
- 财商训练(01)————等额本息和等额本金房贷的区别
文章目录 01 等额本息 每月还款数额计算公式 案例分析: 02 等额本金 每月还款额度计算公式 案例分析 03 计算工具 04 Python实现 01 等额本息 每月还款数额计算公式 M=P×R×( ...
- 等额本息和等额本金,哪个还款方式更划算?
贷款还款方式有很多种,其中等额本息和等额本金最常见的两种还款方式.但是有很多朋友对这两种还款方式没有概念,甚至分不清这两者到底有什么区别,所以今天我们就跟大家来详细解说下,什么是等额本金,什么是等额本 ...
- MATLAB等额还款代码,matlab算法实现对等额本息和等额本金两种还款方式的计算
matlab算法实现对等额本息和等额本金两种还款方式的计算 发布时间:2018-05-29 20:04, 浏览次数:1410 , 标签: matlab matlab算法实现对等额本息和等额本金两种还款 ...
- C++实现银行贷款等额本息和等额本金还款
C++实现银行贷款等额本息和等额本金还款 1.等额本金 概念:等额本金就是每个月还款的本金是相同的,即为贷款金额/贷款月数. 计算公式: B=Amonths+a∗rateB = \frac{A}{mo ...
- 等本等息,等额本息,等额本金,看懂再贷款,坑多!
转载于:https://www.sohu.com/a/195677736_590416 目前申请信用贷款,还款方式最常见的有那么几种:等额本息,等额本金,先息后本(按月付息,到期还本),等本等息. 作 ...
- matlab算法实现对等额本息和等额本金两种还款方式的计算
调查 随着房地产行业的蓬勃兴起,按揭贷款支付方式购买房产成为当前居民普遍采用的资金筹集方式,体现了我国人民理财意识的提高.然而在当下银行推荐的还款方式即:等额本息还款法和等额本金还款法下,(是否存在其 ...
- 等额本息和等额本金计算
背景:一直以来不清楚等额本息和等额本金的计算过程,也不明白孰优孰劣,这里做个记录汇总 知乎答案 https://www.zhihu.com/question/21745865 作者:金斧子 链接:ht ...
- Java Swing写简单计算器以及拓展贷款计算器(等额本息和等额本金计算可以单独拿出来用)
1. 简单计算器 纯手写 package com.jisuanqi;import com.sun.xml.internal.ws.util.StringUtils;import javax.swing ...
- 等额本息Vs等额本金
1:贷款种类一旦选择不能改变. 2:你提前还款的全部属于本金部分,若能一次性归还本金只需付清当月月息即可[不按年利率计算而是月利率],与你归还的本金违约金[设:提前还款10万*X.XXX%=违约金,具 ...
最新文章
- LogisticRegression_demo
- C# 以日期时间作为文件名学习总结
- Hibernate中基本概念
- 神策分析 1.10 推数据全景化,跨部门联动释放共享价值
- matlab 状态估计,基于_当前_统计模型的目标状态估计MATLAB 实现
- php 在对象中递归 坑,PHP递归问题,数据总是对不上
- 手把手教你写高质量Android技术博客,画图工具,录像工具,Markdown写法
- 清洁数据ploy n_清洁屋数据
- 子函数实现链式队列 的 操作,创建、入队、出队、退出。
- 官方版sublime Text3汉化和激活注册码
- linux创建添加用户脚本,Linux 脚本之用户创建
- 李宏毅机器学习2022-hw2
- 使用AJAX中的get请求中文乱码的问题
- 开心农场前端程序源码
- Linux中的系统语言包及UTF-8、en_US.UTF-8和zh_CN.UTF-8的区别
- 求职:本人从事3年工作流引擎开发,熟悉XPDL,.net3.5中WF,Biztalk,开源工作流引擎OBE,期望工作地点上海...
- Thinkphp5.0实战 仿百度糯米开发多商家电商平台视频中常见的命令(正在更新)
- 达梦培训总结及心得体会
- 【236】Python求列表最长字符串及lambda和最长公共子串
- 第六讲:STM32F4芯片解读