在我们买房子的时候,如果手上的现金不够,可以选择通过向银行借钱的方式来得到缺少部分的购房现金。一般来说,我们以房子本身作为抵押来向银行借钱,借到钱之后我们就可以用手上的钱向开发商购买房屋,之后只需要按月向银行还钱即可。如果我们单方面对银行进行债务违约,则银行有权利收回借贷抵押物即该套房屋。

当然天下没有免费的午餐,在我们向银行借钱的时候,是需要向银行支付利息的。以中国人民银行 2020 年 12 月 21 日的 5 年期以上全国银行间同业拆借中心 LPR 公布价为例,该值为 4.65%,其决定了 2021 年一整年的房贷利率。当然,商业银行在真正进行贷款发放时可能会对利率进行一定的上浮或打折。

基准利率与 LPR

LRP 是央行在最近几年刚刚推出的一个新的利率计算方式,在以前,购房的利率主要参考的是央行基准利率,基准利率的当前值为 4.9%。央行在 2020 年 8 月之前也推出了基准利率转 LPR 利率的途径,如果你之前的利率是锚定在基准利率上的,那边将锚改为 LPR 的计算方式如下

实际购房的房贷利率 - 4.9% + 当前LPR利率

例如你在 2015 年买房,但是当前的利率是有折扣,我们假设是 9 折,则贷款的真实利率为 4.9% x 0.9 = 4.41%,即最终的贷款利率是 4.41%。那么你的利率转化为 LPR 之后的值则为 4.41% - 4.9% + 4.65% = 4.16%

央行之所以在基准利率之外又推出了一个 LPR,本质上是因为基准利率是由央行直接制定的,而 LPR 则还会参考一些商业银行的意见。商业银行直接面对了贷款人,对市场行情的了解显然比央行更加及时,所以 LPR 相比于基准利率也更加能代表市场的真实利率。就好像汽车厂商一般都会给 4S 店一定的汽车售价变更权利,最终的汽车成交价会在厂商的销售指导价周围产生一定的上升或下降。因为 4S 店比汽车厂商更加了解市场的真实需求,如果车子好卖就会提升价格获得更多的收益,如果车子不好卖那么也会在一定程度上降低车的售价。LPR 就好像是除了给 4S 店修改售价的权利之外,厂商还会每个月抽取一些 4S 店来参与产商的报价,最终决定当月的汽车厂商指导价。LPR 是每月进行一次报价,而房贷利率是每年一变并且只决定于前一年 12 月份的 LPR 报价。LPR 的变化不仅影响新增的贷款,也影响已经存在的贷款。

LPR 的推出表明我国在近一步的深入市场化改革,摒弃计划经济的一些遗留问题。至于 LPR 以后会上升还是会下降的问题,这个我认为目前还没有人能够预测。前面扯了一堆 LPR 的相关问题,只是为了告诉读者 LPR 是如何出现、如何决定的,在有了贷款利率之后,下面我我们就来了解一下银行是如何根据利率和贷款本金计算贷款人的月供的。这就涉及到两种月供计算方式:等额本金和等额本息。我们以 100 万贷款为例,假设借贷人借款 20 年且利率为当前的 LPR 值即 4.65%。

等额本金

等额本金的计算方式十分简单,就是每个月还的本金是等额的。以 100 万为例,借贷 20 年就是 240 个月,那么每个月需要还的本金就是 1000000 ÷ 240 = 4166.6666666667,即每个月需要还本金 4166.67 块钱。

计算完本金我们再计算利息,因为我们每个月还一次本金,那么每个月的利息其实都是不一样的。每个月需要还的利息计算公式如下

借贷本金 x 年利率 ÷ 12

对于第一个月,需要还的利息为 1000000 x 4.65% ÷ 12 = 3875,那么第一个月要还的本金和利息加起来就是 4166.67 + 3875 = 8041.67

对月第二个月,因为我们已经还了一个月的本金了,所以需要还的利息为 (1000000 - 4166.67) x 4.65% ÷ 12 = 3858.85,那么第二月的月供就为 4166.67 + 3858.85 = 8025.52

通过以上的规律我们就能算出每一个的月供了,我们也可以观察到,等额本金这种方式一开始每个月的月供是比较高的,但是随着本金的降低,利息也会逐月降低,那么月供也是同样会逐月降低的。

具体每个月的月供我们可以通过如下的代码计算得到

1
2
3
4
5
for i in range(240):
    principal = 4166.67                               # 本金
    interest = (1000000 - 4166.67 * i) * 0.0465 / 12  # 利息
    total = principal + interest                      # 月供
    print('{:>3}月 {:.2f}(元)'.format(i + 1, total))

以上代码得到结果如下

code block

我们也可以计算总利息

1
2
3
4
5
interest_total = 0
for i in range(240):
    interest = (1000000 - 4166.67 * i) * 0.0465 / 12  # 利息
    interest_total += interest
print(interest_total)

得到总利息:466937.13

等额本息

等额本息的计算方式要稍微复杂一些,等额本息就是每个月还的本金 + 利息的和是等额的,也就是每个月的月供是不变的。

我们先假设我们每个月的月供是 A,其中 A = 本金 + 利息。我们假设我们每个月还完月供之后还欠银行的本金 an,则有 a1a2a3…a240。其中 a0=1000000,a240=0。

并且我们知道,下一个月所欠的本金 = 这个月所欠的本金 + 这个月本金产生的利息 - 这个月的月供,即如下公式

an = an-1 + an-1 x (0.0465 / 12) - A

因此我们可以知道如下等式,其中 N 的值为 (0.0465 / 12) + 1 = 1.003875,即利率

a1 = N x a0 - A
a2 = N x a1 - A = N x (N x a0 - A) - A = N2 x a0 - (N + 1) x A
a3 = N x a2 - A = N x (N2 x a0 - (N + 1) x A) - A = N3 x a0 - (N2 + N + 1) x A

根据以上的的规律,我们可以总结得到一个表达式

am = Nm x a0 - (Nm-1 + Nm-2 + … + N + 1) x A

通过观察可以发现,Nm-1 + Nm-2 + … + N + 1 是一个等比数列,回忆一下我们高中就已经学过的等比数列的求和公式如下:

其中 a 为首项,n 为项数,r 为公比且 r 不等于 1(求和公式取自维基百科)。那么我们把上面的式子带入求和公式就可以得到

am = Nm x a0 - ( ( 1 - Nm ) / ( 1 - N ) ) x A

令 m=240 且将 a0=1000000、a240=0、N=1.003875 带入等式可以得到

0 = 1.003875240 x 1000000 - ( ( 1 - 1.003875240 ) / ( 1 - 1.003875 ) ) x A

求解如上公式可以得到 A 的值为:6407.75,即等额本息每个月需要还 6407.75 元。

总结

在等额本金中,我们最终还的总金额是 1000000 + 466937.13 = 1466937.13;而等额本息最终的还款金额是 6407.75 x 240 = 1537860.0。可见等额本息的方式总还款会稍微多一些,这也很容易理解,因为等额本息一开始还的本金更少,那么最终产生的利息也就会更多一些。

参考


等额本息计算公式推导

https://zhuanlan.zhihu.com/p/36677027