《金融数量分析——基于MATLAB编程 》
第5章 货款按揭与保险产品
——现金流分析案例
在商品经济中,货币的时间价值是客观存在的。
货币时间价值是指货币经历一定时间的投资和再投资所增加的价值,也称为资
金的时间价值(货币时间价值是指货币随着时间的推移而发生的增值,也称为资金
时间价值)。
由于货币的时间价值,今天的100元和一年后的100元是不等值的。今天将100
元存入银行,在银行利息率10%的情况下,一年以后会得到110元,多出的10元利息
就是100元经过一年时间的投资所增加的价值,即货币的时间价值。显然,今天的
100元与一年后的110元相等。由于不同时间的资金价值不同,所以,在进行价值大
小对比时,必须将不同时间的资金折算为同一时间后才能进行大小的比较。
点睛: 例如,某银行说某产品初始投资1万元,若是在最坏的情况下,该
产品一年后到期保本即1万元,若不考虑货币的时间价值投资人没有亏损,但
在年利率6%的情况下,根据货币的时间价值理论,投资人则已经损失了600元。
货币时间价值计算
计算货币时间价值量,首先引入 “现值”和“终值”两个概念表示不
同时期的货币时间价值。
现值,又称本金,是指资金现在的价值。
终值,又称本利和,是指资金经过若干时期后包括本金和时间价值在内
的未来价值。通常有单利终值与现值、复利终值与现值、年金终值与现值。
单利终值与现值
单利是指只对借贷的原始金额或本金支付(收取)的利息。我国银行一般是按照
单利计算利息的。
在单利计算中,设定以下符号:
PV:本金(现值);R:利率; FV:终值;T:时间。
FV=PV+PV×R×T=PV (1+R×T)
PV=FV /(1+R×T)
例 假设银行存款利率为10%,为3年后获得20 000元现金,某人现在应存入
银行多少钱?
R=10%,FV=20 000元,T=3; 求PV?
PV=20 000元/(1+10%×3)=元(四舍五入)
.2 复利终值与现值
金融分析中常用复利方法进行货币的贴现计算。复利,就是不仅本金要计算
利息,本金所生的利息在下期也要加入本金一起计算利息,即通常所说的“利滚
利”。
在复利的计算中,PV:本金(现值);R:利率; FV:终值;T:时间。
FV=PV (1+ R)^T
PV=FV /(1+ R)^T
注: (1+ R )^T表示(1+R )的T 次方,与MATLAB表示方法一致。
在例中,使用复利计算现值。
R=10%,FV=20 000元;T =3;求PV?
PV=20 000元/(1+10%)3=15 元
复利计息频数是指利息在一年中付利息多少次。在前面的终值与现值的计算
中,都是假定利息是每年支付一次的,因为在这样的假设下,最容易理解货币的
时间价值。但是在实际理财中,常出现计息期以半年、季度、月,甚至以天为期
间的计息期,相应复利计息频数为每年2次、4次、12次、360次。如贷款买房按
月计息,1年计息为12个月。
连续复利计算
连续复利则是指在期数趋于无限大的极限情况下得到的利率,此时不同期
之间的间隔很短,可以看作是无穷小量。
设本金为PV,年利率为R,当每年含有m个复利结算周期(若一个月为一个
复利结算周期,则m=12,若以一季度为一个复利结算周期,则m=4)时,则n年
后的本利和为
当复利结算的周期数m→∞ (这意味着资金运用率最大限度的提高)时,
的极限为e,即
在例中,使用连续复利计算现值。
R=10%,FV=20 000元,T=3; 求PV?
PV=20 000元×exp(×3)=14 元
注:同样的20 000元,年利率为10%,采用不同的贴现或计息方式得到的现值
分别为15 元、15 元和14 元。由此发现,在利率一定时,连续
复利的计算方式,对于投资者是最优的。
所以当m→∞连续复利本利和公式为
FVnm=PVenR
时间n = t,即
FV=PVeRt 或 PV=FVe-Rt
连续复利计算
固定现金流计算
在实际金融产品中,通常不是简单的一次存入(取出),例如国债、住房贷
款、分期贷款、养老保险等都是以现金流的方式存在的。
例 这里以国债为例,10年期面值为1 000元的国债,票面利率为5%,国
债投资者每年在付息日都会收到50元利息,并在第10年(最后一年)收到1 000元
本金。
假设:Rate(贴现率)为6%(贴现率不一定等于票面利率);
NumPeriods(贴现周期)为10年;
Payment(利息)为50元(周期现金流);
ExtraPayment(本金)为1 000元(最后一次非周期现金流)。
则现值与终值的计算公式分别为:
固定现金流现值计算函数pvfix
函数语法:
PresentVal = pvfix(Rate, NumPeriods, Payment, ExtraPayment, Due)
输入参数:
Rate:贴现率;
NumPeriods:贴现周期;
Payment:周期现金流,正表示流入,负表示流出;
ExtraPayment:最后一次非周期现金流,函数默认为0;
Due:现金流计息方式(0为周期末付息,1为周期初付息)。
输出参数:
PresentVal:现金流现值。
函数语法:
FutureVal = fvfix(Rate, NumPeriods, Payment, PresentVal, Due)
输入参数:
Rate:贴现率;
NumPeriods:贴现周期;
Payment:周期现金流,正表示流入,负表示流出;
Due:现金流计息方式(0为周期末付息,1为周期初付息);
PresentVal:现金流现值。
输出参数:
FutureVal:现金流终值。
固定现金流现值计算函数fvfix
变化现金流计算
例 购买设备A,花费8 000元,设备使用年限5年,现金流依次为[-8
000, 2 500, 1 500, 3 000, 1 000, 2 000],如果对于企业来说投资的必要收益率为8%
,该投资是否合适?
通常有两种方法:净现值(NPV)法与内部收益率(IRR)法, 净现值法将
现金流利用必要收益率贴现计算NPV值,若NPV>0则可行;否则,不可行。
内部收益率法假设NPV=0计算必要贴现率,若IRR大于必要收益率可行;否
则不可行。
参数:CashFlow(CF)现金流;Rate贴现率。
CashFlow=[ -8000,2500,1500,3000,1000,2000 ], Rate=
1. 净现值NPV计算函数pvvar
函数语法:
PresentVal = pvvar(CashFlow, Rate, IrrCFDates)
输入参数:
CashFlow:现金流序列向量;
Rate:必要收益率;
IrrCFDates:可选项,CF时间,默认为等间隔,例
如每年一次。
输出参数:
PresentVal:现金流现值。
变化现金流计算
2. 内部收益率计算函数irr
函数语法:
Return = irr(CashFlow)
输入参数:
CashFlow:现金流。
输出参数:
Return:内部收益率。
变化现金流计算
年金,国外叫annuity,是在定期或不定期的时间内一系列的现金流入或流出。
年金终值包括各年存入的本金相加以及各年存入的本金所产生的利息,但是,由于
这些本金存入的时间不同,所以所产生的利息也不相同,按揭贷款本质上是年金的
一种。
例 (1)比如投资人贷款50万元买房,还款期20年,每月还3 000元,则
贷款利率为多少?(2)若改为每月还4 000元,贷款利率不变,则还贷期限为多长
?
NumPeriods:现金流周期。
年金现金流计算
1. 年金利率函数annurate
函数语法:
Rate = annurate(NumPeriods, Payment, PresentValue, FutureValue, Due)
输入参数:
NumPeriods:现金流周期;
Payment:现金流收入(支出);
PresentValue:现金流现值;
FutureValue:现金流终值,默认为0;
Due:现金流计息方式(0为周期末付息,1为周期初付息)。
输出参数:
Rate:利息率(贴现率)。
年金现金流计算
利用annurate函数求解例的贷款利率 M文件
%贷款现值
PresentValue=500000;
%每次还款金额
Payment=3000;
%还款次数
NumPeriods=20*12;
FutureValue=0; %现金流终值为0,即还款完成
Due=0;%每周期末还款一次,0为周期末付息(还款)
%调用annurate计算,贷款利率
Rate = annurate(NumPeriods, Payment, PresentValue, FutureValue, Due)
>> Rate = (月利率)
>> 年利率:%
年金现金流计算
2. 年金周期函数annuterm
函数语法:
NumPeriods = annuterm(Rate, Payment, PresentValue, FutureValue, Due)
输入参数:
Rate:利息率(贴现率);
Payment:现金流收入(支出);
PresentValue:现金流现值;
FutureValue:现金流终值,默认为0;
Due:现金流计息方式(0为周期末付息,1为周期初付息)。
输出参数:
NumPeriods:现金流周期。
年金现金流计算
5. 5 商业按揭贷款分析
“按揭”的通俗意义是指用预购的商品房进行贷款抵押。它是指按
揭人将预购的物业产权转让于按揭受益人(银行)作为还款保证,还款后,
按揭受益人将物业的产权转让给按揭人。
具体地说,按揭贷款是指购房者以所预购的楼宇作为抵押品而从银
行获得贷款,购房者按照按揭契约中规定的归还方式和期限分期付款给
银行;银行按一定的利率收取利息。如果贷款人违约,银行有权收走房
屋。
按揭贷款还款方式
1. 等额还款
借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截止日
期前偿还全部本息。例如,贷款30万元,20年还款期,每月还款4 000元。
2. 等额本金还款
借款人每期须偿还等额本金,同时付清本期应付的贷款利息,而每期归还
的本金等于贷款总额除以贷款期数。实际每期还款总额为递减数列。
3. 等额递增还款
借款人每期以等额还款为基础,每次间隔固定期数还款额增加一个固定金
额的还款方式(如三年期贷款,每隔12个月增加还款100元,若第一年每月还
款1 000元,则第二年每月还款额为1 100元,第三年为1 200元)。此种还款方
式适用于当前收入较低,但收入曲线呈上升趋势的年轻客户。
4. 等额递减还款
借款人每期以等额还款为基础,每次间隔固定期数还款额减少一个固定金额
的还款方式(如三年期贷款,每隔12个月减少还款100元,若第一年每月还款1
000元,则第二年每月还款额为900元,第三年为800元)。此种还款方式适用于
当前收入较高,或有一定积蓄可用于还款的客户。
5. 按期付息还款
借款人按期还本,按一间隔期(还本间隔)等额偿还贷款本金,再按另一间
隔期(还息间隔)定期结息,如每三个月偿还一次贷款本金,每月偿还贷款利息。
此种还款方式适合使用季度、年度奖金进行还款的客户。
6. 到期还本还款
借款人在整个贷款期间不归还任何本金,在贷款到期日一次全部还清贷款本
金。贷款利息可按月、按季或到期偿还,也可在贷款到期日一次性偿还。
按揭贷款还款方式
等额还款模型与计算
借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截止日
期前全部还清本息。
参数假设:
R:月贷款利率;
B:总借款额;
MP:月还款额;
n:还款期。
① 根据月初贷款余额计算该月还款额中的现金流,包括支付的利息和偿还
的本金,月还款总额一定。
YE(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。
② 随着如期缴纳最后一期月供款,贷款全部还清,即YE(n)=0。
通常情况下,贷款总额与利息是已知的,月还款额与还款期限未定,根据上述等
额还款模型,月还款额与还款期限存在着关联关系,即MP为合适值时,当YE(1)=B,
计算得到YE(t+1)=YE(t)-BJ(t)=0,最后的还款余额为0。
在建立上述模型的基础上,通过MATLAB编程实现,根据不同还款期限计算还款
金额,等额还款模型的M程序为。
F=AJfixPayment(MP,Num,B,Rate)
输入参数:
MP:每期还款总额;
Num:还款期数;
B:贷款总额;
Rate:贷款利率。
输出参数:
F:最后贷款余额。
等额还款模型与计算
例 假设,贷款50万元,10年还款共120期,年贷款利率5%,若每月还
款5 000元,则贷款余额为多少?(月利率为年利率5%除以12。)
测试AJfixPayment 函数,如下:
%还款次数
Num=12*10;
%贷款金额
B=5e5;
%月利率
Rate=
%每次还款5000元
MP=5000;
F=AJfixPayment(MP,Num,B,Rate)
>>F =
+004
等额还款模型与计算
使用fsolve函数求出合适的MP值,使得在120次还款后,贷款余额为0(fsolve函数,
即求解x,使得F(x)=0,求任意贷款余额的方法,即构建G(x)=F(x)+a,a 为任意正数)。
M文件如下:
注:fsolve是MATLAB最主要求解多变量方程与方程组的函数。
Num=12*10;
B=5e5;
Rate=
%初始搜索值
MPo=1000;
%调用fsolve函数求解
MP= fsolve(@(MP) AJfixPayment(MP,Num,B,Rate),MPo)
>>Optimization terminated: first-order optimality is less than .
%计算结果
MP =
+003
等额还款模型与计算
函数语法:
[x,fval,exitflag,output,jacobian] = fsolve(fun,x0,options)
输入参数:
fun:目标函数,一般用M文件形式给出;
x0:优化算法初始迭代点;
options:参数设置。
输出参数:
x:最优点输出(或最后迭代点);
fval:最优点(或最后迭代点)对应的函数值;
exitflag:函数结束信息 (具体参见MATLAB help );
output:函数基本信息,包括迭代次数、目标函数最大计算次数、使用的算法名称、
计算规模;
jacobian:Jacobian矩阵(主要用来判断是否得到有效解)。
点睛: 等额还款模型具有解析解
等额还款模型与计算
等额本金还款
借款人每期须偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本
金等于贷款总额除以贷款期数。
参数假设:
R:月贷款利率;
B:总借款额;
MB:月还本金;
n:还款期。
① 根据月初贷款余额计算该月还款额中的现金流,包括支付的利息和偿还的本金,月
还本金一定。
MB=B/n
YE(1)=B
YE(t+1)=YE(t)-MB
MP(t)=MB+R×YE(t)
其中:YE(t)为月初贷款余额;IR(t)为月利息偿还额;MP(t)为月还款总额;t =1,…,n
。
② 随着如期缴纳最后一期月供款,贷款全部还清,即YE(n)=0。
等额本金还款的计算比较简单,编写模型的M程序为。
注:“Bcumsum([0,MB*ones(1,Num-1)]);”使用的cumsum(X)函数是累加函数,若
X=[1,2,3,4,5,6],则cumsum(X)=[1,3,6,10,15,21]。
function MP=AJvarPayment(Num,B,Rate)
%code by ariszheng@
%2009-6-18
MP=zeros(1,Num);
YE=zeros(1,Num);
MB=B/Num;
YE=B-cumsum([0,MB*ones(1,Num-1)]);
MP=MB+Rate*YE;
程序代码:
等额本金还款
例 假设贷款50万元,10年还款共120期,年贷款利率5%,采用等额本金还款
方式则每月还款总额为多少?
M 文件 如下:
Num=12*10;
B=5e5;
Rate=
MP=AJvarPayment(Num,B,Rate)
等额本金还款
5. 还款方式比较
以贷款50万元,10年还款共120期,年贷款利率5%为例,等额还款方式的
还款总额为636 390元,等额本金方式的还款总额为626 040元,从数量上讲等
额本金方式的总还款较少。
但是如果考虑到货币的时间价值,PV(MPFix)=PV(MPVar)=500 000元,
两种还款方式的现值都是相等的。
商业银行的盈利模式之一为吸收存款、放出贷款获得存贷差。以上述案
例贷款为例,若贷款50万元,10年还款共120期,年贷款利率5%,采用等额
还款方式计算出MP=5 元 。
5. 提前还款违约金估算
商业养老保险分析
目前,我国的养老保险由三个部分组成:
① 基本养老保险。基本养老保险是国家根据法律、法规的规定,强制
建立和实施的一种社会保险制度。
② 企业补充养老保险(企业年金)。企业年金源于自由市场经济比较
发达的国家,是一种属于企业雇主自愿建立的员工福利计划。企业年金,即
由企业退休金计划提供的养老金。其实质是以延期支付方式存在的职工劳动
报酬的一部分或者是职工分享企业利润的一部分。
③ 商业养老保险个人储蓄性养老保险。个人储蓄性养老保险是由职工
根据个人收入情况自愿参加的一种养老保险形式。个人储蓄性养老保险由职
工个人自愿选择经办机构,个人、储蓄性养老保险基金由个人所有。
5. 商业养老保险案例
以下为某公司养老保险示例(简称产品A),以此案例进行商业养老保险的现
金流分析。
例 某30岁男性,投保养老保险产品A,10年交费,基本保险金额10万元,
60岁的保单周年日开始领取,按年领取,只要被保险人生存,可以一直领取到100
周岁的保单周年日,如下图所示。
产品现金流序列(非贴现)
1. 保费支出
投保人30岁到40岁10年期间,每年交保费15 940元。
2. 基本保险利益
① 养老保险金:60岁开始,每年到达保单周年日可领取养老保险金,一直到100周
岁的保单周年日被保险人生存,可按表领取养老保险金。
表 养老保险金金额表
② 在20年的保证领取期内,被保险人身故,领取金额为234 200元减去已经领取的金额。
③ 祝寿金:被保险人生存至88周岁的保单周年日,领取10万元祝寿金。
5. 商业养老保险案例
3. 产品分红
在养老保险主险合同有效期间内,并且在约定养老金领取年龄的保单周
年日前,按照保险监管机关的有关规定,保险公司将根据分红保险业务的实
际经营状况确定红利的分配。分红是不确定的,若保险公司确定有红利分配,
则该红利将于保单周年日分配给被保险人。
④ 身故保险金:被保险人于60岁的保单周年日前身故,按所交保费与10万
元之和,同身故当时主险合同的现金价值(不包括因红利分配产生的相关
利益)相比较,按较大者领取身故保险金。
5. 商业养老保险案例
5. 6.2 产品结构分析
现金流是个人或企业的现金支出与收入的汇总,商业养老保险本质上
根据产品说明书在一定条件下确定现金流的金融产品。
商业养老保险产品构成要素为:
① 投保人的初期保费支出,支出确定;
② 被保人的后期养老金收入,收入确定(收入金额确定,收入期数是
寿命的函数);
③ 被保人获得产品分红,收入不确定;
④ 附加的被保人额外收益,收入不确定(例如祝寿金)。
5. 现金流模型
假设保险公司投资收益率与投保人投资收益率相等为R,为方便比较将产
品的现金流贴现到30岁时进行比较,由于被保人可能获得产品分红,收入不
确定,本次分析假定产品分红为零。
模型建立:
① 设贴现利率(保险公司投资收益率)为R;
② 被保险人身故时期为X:30~100岁;
根据被保险人身故时期年龄为X,分析如下:
① 若X大于30岁小于等于40岁
现金支出为(X30)次的保费支出outCF;现金收入为所交保费与10万元之和
与身故当时主险合同的现金价值(不包括因红利分配产生的相关利益)的较大者
领取的身故保险金,即max(sum(outCF)+100 000, PV(outCF))。
② 若X大于40岁小于60岁
现金支出为10次的保费支出outCF;现金收入为所交保费与10万元之和与身故
当时主险合同的现金价值(不包括因红利分配产生的相关利益)的较大者领取的
身故保险金,即max(sum(outCF)+ 100 000,PV(outCF))。
③ 若X大于等于60岁小于80岁
现金支出为10次的保费支出outCF;现金收入为(X60)次的产品年金inCF,
加上234 200sum(inCF)。
5. 现金流模型
④ 若X大于等于80岁小于88岁
现金支出为10次的保费支出outCF;现金收入为(X60)次的产品年金inCF
。
⑤ 若X大于等于88岁小于等于100岁
现金支出为10次的保费支出outCF;现金收入为(X60)次的产品年金inCF
,加上88岁时领取的10万元祝寿金。
点睛: 由于上述情况中,现金流入或流出的时间不同则时间价值不同,例
如在30岁末(31岁初)交的15 940元与在35岁末(36岁初)交的15 940元的价
值是不同的。在进行现金流计算的时候必须考虑货币的时间价值。
5. 现金流模型
5. 保险支出现值函数
根据函数计算投保人的保费支出现值,分析编写InsureOutFlowPV函数,语法为:
PV=InsureOutFlowPV(StartPayAge,EndPayAge,DeadAge,OutPayment,Rate)
输入参数:
StartPayAge:保费支出起始年龄,本案例为30岁;
EndPayAge:保费支出结束年龄,本案例为40岁;
DeadAge:被保险人身故年龄;
OutPayment:保费支出金额;
Rate:保费贴现率。
输出函数:
PV:投保人的保费支出现值。
注:根据产品条款将保费支出分成两种情况:被保险人身故年龄大于30岁小于
等于40岁;被保险人身故年龄大于40岁。
5. 保险收入现值函数
根据函数计算被保人的保费收入现值,分析编写InsureInFlowPV
函数,语法为:
PV=InsureInFlowPV(StartPayAge,DeadAge,OutPayment,Rate)
输入参数:
StartPayAge:保费支出起始年龄,本案例为30岁;
DeadAge:被保险人身故年龄;
OutPayment:保费支出金额;
Rate:保费贴现率。
输出函数:
PV:被保人的保费收入现值。
5. 案例数值分析
由于商业养老保险产品期限为几十年,而且案例分析中使用的是复利的贴现方
法,致使产品的现金流现值对贴现率极为敏感。
假设贴现利率为3%时的分析程序如下:
StartPayAge=30;
EndPayAge=40;
OutPayment=15940;
Rate=;
%PV=InsureOutFlowPV(StartPayAge,EndPayAge,DeadAge,OutPayment,Rate)
%%
%DeadAge=[35,45,61,75,89,95];
%假设情景,死亡年龄为31,32,33,……100
DeadAge=31:100;
%保险收入现金流
PVI=zeros(1,length(DeadAge));
%保险支出现金流
PVO=zeros(1,length(DeadAge));
5. 案例数值分析
%根据每种情景分别计算
for i=1:length(DeadAge)
PVI(i)=InsureInFlowPV(StartPayAge,DeadAge(i),OutPayment,Rate);
PVO(i)=InsureOutFlowPV(StartPayAge,EndPayAge,DeadAge(i),...
OutPayment,Rate)
End
%画图比较,现金流的支出与收入
plot(31:100,PVI,'-*',31:100,PVO,'-o')
%标记线形
legend('InsureInFlowPV','InsureOutFlowPV')
产品的现金流现值情景
分析图(利率为3%)
5. 案例分析结果
如果在没有额外分红的情况下,贴现率为3%时, 投保人的保费支出现值与被保
人的保费收入现值关系如图1所示;贴现率为2%时, 投保人的保费支出现值与被保人
的保费收入现值关系如图2所示。
从图1可以分析出若被保险人在60~88岁间身故,则投保人与被保人的净收入现
值(净收入现值=被保人的保费收入现值-投保人的保费支出现值)为负值,从图2可以分
析出,保险人同样在60~88岁间身故,投保人与被保人的净收入现值仍为负值。
点睛: 保险的本质是分散风险,并不额外创造超额收益。保险公司作为商业养
老保险的管理与销售机构,其经营目标为风险中性且有管理费收入需求,保险产品的
风险需要在投保人之间进行分配,在贴现利率一定的前提下,购买养老保险的所有投
资者的净收入现值之和为零,所以在购买养老保险的投资者中必将有部分投资者的净
收入现值为负。