笔记内容来源于《金融数量分析-基于MATLAB编程(第4版)》。
按揭的通俗意义就是指用预购的商品房进行贷款抵押。它是指按揭人将预购的物业产权转让于按揭受益人(银行)作为还款保证,还款后,按揭受益人将物业的产权转让给按揭人。</br>
具体地说,按揭贷款是指购房者以所预购的房屋作为抵押品而从银行获得贷款,购房者按照按揭契约中规定的归还方式和期限分期付款给银行;银行按一定的利率收取利息。如果贷款人违约,那么银行有权收走房屋。</br>
1 按揭贷款还款方式
1)等额还款
借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截至日期前偿还全部本息。例如,贷款30万元,20年还款期,每月还款4000元。</br>
2)等额本金还款
借款人每期需偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本金等于贷款总额除以贷款期数。实际每期还款总额为递减数列。</br>
3)等额递增还款
借款人每期以等额还款为基础,以每次及那个固定期数还款额增加一个固定金额的方式还款(如三年期贷款,每隔12个月增加还款100元,若第一年每月还款1000元,则第二年每月还款1100元,第三年为1200元)。此种还款方式适用于当前收入较低,但收入曲线呈上升趋势的年轻客户。</br>
4)等额递减还款
借款人每期以等额还款为基础,以每次间隔固定期数还款额减少一个固定金额的方式还款(如三年期贷款,每隔12个月减少还款100元,若第一年每月还款1000元,则第二年每年还款900元,第三年为800元)。此种还款方式适用于当前收入较高,或有一定积蓄可用于还款的客户。</br>
5)按期付息还款
借款人按期还本,按一间隔期(还本间隔)等额偿还贷款本金,再按另一间隔期(还息间隔)定期结息,如每三个月偿还一次贷款本金,每月偿还贷款利息。此种还款方式适合使用季度、年度奖金进行还款的客户。</br>
6)到期还本还款
借款人在整个贷款期间不归还任何本金,在贷款到期日一次全部还清贷款本金。贷款利息可按月、按季或到期偿还,也可以在贷款到期日一次性偿还。</br>
等额还款和等额本金还款是最主要的两种还款方式,其余几种基本上都是从这两种方式的基础上衍生出来的。</br>
2 等额还款模型
借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截止日前全部还清本息。</br>
参数假设:</br>
R:月贷款利率</br>
B:总借款额</br>
MP:月还款额(每月还款的钱,一部分还总借款额B,一部分还利息)</br>
n:还款期</br>
1.根据月初贷款余额计算该月还款额中的现金流,包括支付利息和偿还本金,月还款总额一定。</br>1
2
3YE(t + 1) = YE(t) -BJ(t)
BJ(t) = MP - IR(t)
IR(t) = YE(t) * R
YE(t)为月初贷款余额;IR(t)为月利息偿还额;BJ(t)为本月金额偿还额;t = 1,……,n。</br>
2.随着如期缴纳最后一期月供贷款,贷款全部还清,即YE(t) = 0。
通常情况下,贷款总额和利息是已知的,月还款额与还款期限未定,根据上述等额还款模型,月还款期限存在着关联关系,当YE(1) = B时,计算YE(t + 1) = YE(t) - BJ(t) = 0,得到MP的值,最后的还款余额为0。 </br>
通过MATLAB编程,等额还款模型的函数语法如下:</br>
F = AJfixPayment(MP, Num, B, Rate)</br>
输入参数:</br>
MP:每月还款总额</br>
Num:还款期数</br>
B:贷款总额</br>
Rate:贷款利率</br>
输出参数:</br>
F:最后的贷款余额</br>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21function F = AJfixPayment(MP, Num, B, Rate)
%初始化相关变量,初始值为0
IR = zeros(1, Nums);
YE = zeros(1, Nums);
BJ = zeros(1, Nums);
%第1期贷款本金
YE(1) = B;
for i = 1 : Num
%第1期应还利息
IR(i) = Rate * YE(i);
%第i期归还的本金 = 第i期还款 - 第i期利息
BJ(i) = MP - IR(i);
%非最后一次还款
if i < Num
%第i + 1期本金 = 第i期本金 - 第i期归还的本金
YE(i + 1) = YE(i) - BJ(i);
end
end
%目标函数
F = B - sum(BJ);
end
注:zeros(1, Num)表示预先设置一个Num维行零向量(注明零向量很有必要,因为最后要用sum函数,不能随便初始化,比如ones)。</br>
例1:</br>
贷款50万元,10年还款共120期,年贷款利率5%,若每月还款5000元,则贷款余额为多少?(月利率为年利率5%除以12):</br>1
2
3
4
5
6
7
8
9%还款次数
Num = 12 * 10;
%贷款余额
B = 5e5;
%月利率
Rate = 0.05/12;
%每次还款5000元
MP =5000;
F = AJfixPayment(MP, Num, B, Rate)
输出结果如下:</br>1
2
3
4F =
4.7093e+04
结算结果为4709.3元,即贷款余额为4709.3元。</br>
使用fsolve函数求出合适的MP值,使得在120次还款后,贷款余额为0(fsolve函数,即求解x,使得F(x) = 0,求任意贷款余额的方法,构建G(x) = F(x) + a, a为任意正数)。</br>
代码如下:</br>1
2
3
4
5
6
7Num = 12 * 10;
B = 5e5;
Rate = 0.05 / 12;
%搜索初始值
MPo = 1000;
%调用fsolve函数求解
MP = fsolve(@(MP)AJfixPayment(MP, Num, B, Rate), MPo)
输出结果如下:1
2
3
4MP =
5.3033e+03
计算结果为5303.3元,即贷款50万元,10年还款总共120期,年贷利率5%,若每月还款5303.3元,则10年(即还款120期)后贷款余额为0。</br>
注:fslove是MATLAB最主要的求解多变量方程与方程组的函数。</br>
函数语法:</br>
[x, fval, exitflag, output, jacobian] = fsolve(fun, x0, options)</br>
输入参数:</br>
fun:目标函数,一般使用M文件形式给出;</br>
x0:优化算法初始迭代点;</br>
options:参数设置。</br>
输出参数:</br>
x:最优点输出(或最后迭代点)。</br>
fval:最优点(或最后迭代点)对应的函数值。</br>
exitflag:函数结束信息(具体参见MATLAB Help)。</br>
output:函数基本信息,包括迭代次数、目标函数最大计算次数、使用算法名称、计算规模;</br>
jacobian:Jaobian矩阵(主要用来判断是否得到有效解)。</br>
等额还款模型具有解析解:</br>
MP为月还款额;R为月贷利率;B为总借款额;n为还款期限。</br>
3 等额本金还款模型与计算
借款人每期需偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本金等于贷款总额除以贷款期数。</br>
参数设置:</br>
R:月贷款利率;</br>
B:借款总额;</br>
MB:月还本金;</br>
n:还款期。</br>
1.根据月初贷款余额计算该月还款额中的现金流,包括支付的利息和偿还得本金,月还款本金一定。</br>
1 | MB = B / n |
式中:YE(t)为月初贷款余额;IR(t)为月利息偿还额;MP(t)为月还款总额;t = 1,……,n。</br>
2 随着如期缴纳最后一期月供贷款,贷款全部还清,即YE(n) = 0.</br>
等额本金还款得计算比较简单,函数语法如下:</br>
MP = AJvarPayment(Num, B, Rate)</br>
输入参数:</br>
Num:还款期数;</br>
B:贷款总额;</br>
Rate:贷款利率。</br>
输出参数:</br>1
2
3
4
5
6function MP = AJvarPayment(Num, B, Rate)
MP = zeros(1, Num);
YE = zeros(1, Num);
MB = B / Num;
YE = B - cumsum([0, MB * ones(1, Num - 1)]);
MP = MB + Rate * YE;
cumsum(X)函数是累加函数,例如若X = [1, 2, 3, 4, 5, 6],则cumsum(X) = [1, 3, 6, 10, 15, 21]。</br>
例2:</br>
假设贷款50万元,10年还款工120期,年贷款利率5%,采用等额本金还款方式,则每月还款总额为多少?</br>
求解代码如下:</br>1
2
3
4Num = 12 * 10;
B = 5e5;
Rate = 0.05 / 12;
MP = AJvarPayment(Num, B, Rate)
输出结果如下:</br>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
MP =
1.0e+03 *
1 至 14 列
6.2500 6.2326 6.2153 6.1979 6.1806 6.1632 6.1458 6.1285 6.1111 6.0938 6.0764 6.0590 6.0417 6.0243
15 至 28 列
6.0069 5.9896 5.9722 5.9549 5.9375 5.9201 5.9028 5.8854 5.8681 5.8507 5.8333 5.8160 5.7986 5.7813
29 至 42 列
5.7639 5.7465 5.7292 5.7118 5.6944 5.6771 5.6597 5.6424 5.6250 5.6076 5.5903 5.5729 5.5556 5.5382
43 至 56 列
5.5208 5.5035 5.4861 5.4688 5.4514 5.4340 5.4167 5.3993 5.3819 5.3646 5.3472 5.3299 5.3125 5.2951
57 至 70 列
5.2778 5.2604 5.2431 5.2257 5.2083 5.1910 5.1736 5.1563 5.1389 5.1215 5.1042 5.0868 5.0694 5.0521
71 至 84 列
5.0347 5.0174 5.0000 4.9826 4.9653 4.9479 4.9306 4.9132 4.8958 4.8785 4.8611 4.8438 4.8264 4.8090
85 至 98 列
4.7917 4.7743 4.7569 4.7396 4.7222 4.7049 4.6875 4.6701 4.6528 4.6354 4.6181 4.6007 4.5833 4.5660
99 至 112 列
4.5486 4.5312 4.5139 4.4965 4.4792 4.4618 4.4444 4.4271 4.4097 4.3924 4.3750 4.3576 4.3403 4.3229
113 至 120 列
4.3056 4.2882 4.2708 4.2535 4.2361 4.2187 4.2014 4.1840
>>
4 还款方式比较
通过上两例可以画出等额本金以及等额本息还款得对比图:</br>1
2
3
4
5
6
7
8
9 ... ... %例2中等额本金程序
plot(m,(5.3033e+03)*ones(1,Num), 'r-');%例1中求得等额本息
hold on
plot(m, MP, 'b-');
xlabel('还款序列t');
ylabel('还款金额/元');
legend('MPFix','MPVar');
以贷款50万元,10年还款工120期,年贷款利率5%为例,等额还款方式得还款总额为636390元,等额本金还款方式得总额为626040元,从数量上讲等额本金方式的总还款额较少。</br>
但是如果考虑到货币得时间价值,PV(MPFix) = PV(MPVar) = 5000元,两种还款方式得现值都是相等的。</br>
5 提前还款违约金估算
商业银行的盈利模式之一为吸收存款,放出贷款后的存贷差。以上述贷款案例为例,若贷款50万元,10年还款共120期,年贷款利率5%,则采用等额还款方式计算出MP = 5303.3元,银行的贷款利率为5%,如果其存款利率为4%(仅为假设数据),则现金流现值MATLAB计算代码如下:</br>1
2
3
4RATE = 0.04 / 12;
N = 10 * 12;
Payment = 5303.3;
pv = pvfix(RATE, N, Payment)
输出结果如下:1
2
3pv =
5.2381e+05
若按照4%的年化利率贴现,则现值为523810元,即若不考虑运营成本,则银行侧壁贷款的利润为23810元。</br>
若在第5年末提前还款,即提前60期还款,则每期5303.3元,贴现率分别为4%、5%,现金流现值MATLAB计算代码如下:</br>1
2
3
4
5
6
7RATE1 = 0.04 / 12;
RATE2 = 0.05 / 12;
N = 5 * 12;
Payment = 5303.3;
pv1 = pvfix(RATE1, N, Payment)
pv2 = pvfix(RATE2, N, Payment)
pv1 - pv2
输出结果如下:</br>1
2
3
4
5
6
7
8
9
10
11
12
13pv1 =
2.8796e+05
pv2 =
2.8103e+05
ans =
6.9386e+03
结果分析:贴现率分别为4%、5%的现金流现值为287960元,281030元,提前还款给银行造成的损失为6938.6元。</br>
以上计算均为示例计算,贴现率均为假设。</br>
注:60期并未把款全部还完,还需在第5年末把剩余的额度用完,如果存贷款利率不同,最后还款也将给银行带来损失。</br>