笔记内容来源于《金融数量分析-基于MATLAB编程(第4版)》。
按揭的通俗意义就是指用预购的商品房进行贷款抵押。它是指按揭人将预购的物业产权转让于按揭受益人(银行)作为还款保证,还款后,按揭受益人将物业的产权转让给按揭人。
具体地说,按揭贷款是指购房者以所预购的房屋作为抵押品而从银行获得贷款,购房者按照按揭契约中规定的归还方式和期限分期付款给银行;银行按一定的利率收取利息。如果贷款人违约,那么银行有权收走房屋。
1 按揭贷款还款方式
¶1)等额还款
借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截至日期前偿还全部本息。例如,贷款30万元,20年还款期,每月还款4000元。
¶2)等额本金还款
借款人每期需偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本金等于贷款总额除以贷款期数。实际每期还款总额为递减数列。
¶3)等额递增还款
借款人每期以等额还款为基础,以每次及那个固定期数还款额增加一个固定金额的方式还款(如三年期贷款,每隔12个月增加还款100元,若第一年每月还款1000元,则第二年每月还款1100元,第三年为1200元)。此种还款方式适用于当前收入较低,但收入曲线呈上升趋势的年轻客户。
¶4)等额递减还款
借款人每期以等额还款为基础,以每次间隔固定期数还款额减少一个固定金额的方式还款(如三年期贷款,每隔12个月减少还款100元,若第一年每月还款1000元,则第二年每年还款900元,第三年为800元)。此种还款方式适用于当前收入较高,或有一定积蓄可用于还款的客户。
¶5)按期付息还款
借款人按期还本,按一间隔期(还本间隔)等额偿还贷款本金,再按另一间隔期(还息间隔)定期结息,如每三个月偿还一次贷款本金,每月偿还贷款利息。此种还款方式适合使用季度、年度奖金进行还款的客户。
¶6)到期还本还款
借款人在整个贷款期间不归还任何本金,在贷款到期日一次全部还清贷款本金。贷款利息可按月、按季或到期偿还,也可以在贷款到期日一次性偿还。
等额还款和等额本金还款是最主要的两种还款方式,其余几种基本上都是从这两种方式的基础上衍生出来的。
2 等额还款模型
借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截止日前全部还清本息。
参数假设:
R:月贷款利率
B:总借款额
MP:月还款额(每月还款的钱,一部分还总借款额B,一部分还利息)
n:还款期
1.根据月初贷款余额计算该月还款额中的现金流,包括支付利息和偿还本金,月还款总额一定。
1 | YE(t + 1) = YE(t) -BJ(t) |
YE(t)为月初贷款余额;IR(t)为月利息偿还额;BJ(t)为本月金额偿还额;t = 1,……,n。
2.随着如期缴纳最后一期月供贷款,贷款全部还清,即YE(t) = 0。
通常情况下,贷款总额和利息是已知的,月还款额与还款期限未定,根据上述等额还款模型,月还款期限存在着关联关系,当YE(1) = B时,计算YE(t + 1) = YE(t) - BJ(t) = 0,得到MP的值,最后的还款余额为0。
通过MATLAB编程,等额还款模型的函数语法如下:
F = AJfixPayment(MP, Num, B, Rate)
输入参数:
MP:每月还款总额
Num:还款期数
B:贷款总额
Rate:贷款利率
输出参数:
F:最后的贷款余额
1 | function F = AJfixPayment(MP, Num, B, Rate) |
注:zeros(1, Num)表示预先设置一个Num维行零向量(注明零向量很有必要,因为最后要用sum函数,不能随便初始化,比如ones)。
例1:
贷款50万元,10年还款共120期,年贷款利率5%,若每月还款5000元,则贷款余额为多少?(月利率为年利率5%除以12):
1 | %还款次数 |
输出结果如下:
1 | F = |
结算结果为4709.3元,即贷款余额为4709.3元。
使用fsolve函数求出合适的MP值,使得在120次还款后,贷款余额为0(fsolve函数,即求解x,使得F(x) = 0,求任意贷款余额的方法,构建G(x) = F(x) + a, a为任意正数)。
代码如下:
1 | Num = 12 * 10; |
输出结果如下:
1 | MP = |
计算结果为5303.3元,即贷款50万元,10年还款总共120期,年贷利率5%,若每月还款5303.3元,则10年(即还款120期)后贷款余额为0。
注:fslove是MATLAB最主要的求解多变量方程与方程组的函数。
函数语法:
[x, fval, exitflag, output, jacobian] = fsolve(fun, x0, options)
输入参数:
fun:目标函数,一般使用M文件形式给出;
x0:优化算法初始迭代点;
options:参数设置。
输出参数:
x:最优点输出(或最后迭代点)。
fval:最优点(或最后迭代点)对应的函数值。
exitflag:函数结束信息(具体参见MATLAB Help)。
output:函数基本信息,包括迭代次数、目标函数最大计算次数、使用算法名称、计算规模;
jacobian:Jaobian矩阵(主要用来判断是否得到有效解)。
等额还款模型具有解析解:
MP为月还款额;R为月贷利率;B为总借款额;n为还款期限。
3 等额本金还款模型与计算
借款人每期需偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本金等于贷款总额除以贷款期数。
参数设置:
R:月贷款利率;
B:借款总额;
MB:月还本金;
n:还款期。
1.根据月初贷款余额计算该月还款额中的现金流,包括支付的利息和偿还得本金,月还款本金一定。
1 | MB = B / n |
式中:YE(t)为月初贷款余额;IR(t)为月利息偿还额;MP(t)为月还款总额;t = 1,……,n。
2 随着如期缴纳最后一期月供贷款,贷款全部还清,即YE(n) = 0.
等额本金还款得计算比较简单,函数语法如下:
MP = AJvarPayment(Num, B, Rate)
输入参数:
Num:还款期数;
B:贷款总额;
Rate:贷款利率。
输出参数:
1 | function MP = AJvarPayment(Num, B, Rate) |
cumsum(X)函数是累加函数,例如若X = [1, 2, 3, 4, 5, 6],则cumsum(X) = [1, 3, 6, 10, 15, 21]。
例2:
假设贷款50万元,10年还款工120期,年贷款利率5%,采用等额本金还款方式,则每月还款总额为多少?
求解代码如下:
1 | Num = 12 * 10; |
输出结果如下:
1 |
|
4 还款方式比较
通过上两例可以画出等额本金以及等额本息还款得对比图:
1 | ... ... %例2中等额本金程序 |
以贷款50万元,10年还款工120期,年贷款利率5%为例,等额还款方式得还款总额为636390元,等额本金还款方式得总额为626040元,从数量上讲等额本金方式的总还款额较少。
但是如果考虑到货币得时间价值,PV(MPFix) = PV(MPVar) = 5000元,两种还款方式得现值都是相等的。
5 提前还款违约金估算
商业银行的盈利模式之一为吸收存款,放出贷款后的存贷差。以上述贷款案例为例,若贷款50万元,10年还款共120期,年贷款利率5%,则采用等额还款方式计算出MP = 5303.3元,银行的贷款利率为5%,如果其存款利率为4%(仅为假设数据),则现金流现值MATLAB计算代码如下:
1 | RATE = 0.04 / 12; |
输出结果如下:
1 | pv = |
若按照4%的年化利率贴现,则现值为523810元,即若不考虑运营成本,则银行侧壁贷款的利润为23810元。
若在第5年末提前还款,即提前60期还款,则每期5303.3元,贴现率分别为4%、5%,现金流现值MATLAB计算代码如下:
1 | RATE1 = 0.04 / 12; |
输出结果如下:
1 | pv1 = |
结果分析:贴现率分别为4%、5%的现金流现值为287960元,281030元,提前还款给银行造成的损失为6938.6元。
以上计算均为示例计算,贴现率均为假设。
注:60期并未把款全部还完,还需在第5年末把剩余的额度用完,如果存贷款利率不同,最后还款也将给银行带来损失。