MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx

上传人:b****6 文档编号:6710183 上传时间:2023-01-09 格式:DOCX 页数:26 大小:218.95KB
下载 相关 举报
MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx_第1页
第1页 / 共26页
MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx_第2页
第2页 / 共26页
MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx_第3页
第3页 / 共26页
MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx_第4页
第4页 / 共26页
MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx

《MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx(26页珍藏版)》请在冰豆网上搜索。

MATLAB程序设计 贷款按揭与保险产品现金流分析案例.docx

MATLAB程序设计贷款按揭与保险产品现金流分析案例

贷款按揭与保险产品---现金流分析案例

在商品经济中,货币的时间价值是客观存在的。

如将资金存入银行可以获得利息,将资金运用于公司的经营活动可以获得利润,将资金用于对外投资可以获得投资收益,这种由于资金运用实现的利息、利润或投资收益表现为货币的时间价值。

由此可见,货币时间价值是指货币经历一定时间的投资和再投资所增加的价值,也称资金的时间价值(货币时间价值是指货币随着时间的推移而发生的增值,也称为资金时间价值)。

由于货币的时间价值,今天的100元和一年后的100元是不等值的。

今天将100元存入银行,在银行利息率10%的情况下,一年以后会得到110元,多出的10元利息就是100元经过一年时间的投资所增加了的价值,即货币的时间价值。

显然,今天的100元与一年后的110元相等。

由于不同时间的资金价值不同,所以,在进行价值大小对比时,必须将不同时间的资金折算为同一时间后才能进行大小的比较。

点睛:

例如,某银行说某产品初始投资1万元,若使在最坏的情况下,该产品一年后到期保本即1万元,若不考虑货币的时间价值投资人没有亏损,但在年利率6%的情况下,根据货币的时间价值理论,投资则已经损失600元。

1货币时间价值的计算

计算货币时间价值量,首先引入“现值”和“终值”两个概念表示不同时期的货币时间价值。

现值,又称本金,是指资金现在的价值。

终值,又称本利和,是指资金经过若干时期后包括本金和时间价值在内的未来价值。

通常有单利终值与现值、复利终值与现值、年金终值与现值。

1.1单利终值与现值

单利是指只对借贷的原始金额或本金支付(收取)的利息。

我国银行一般是按照单利计算利息的。

在单利计算中,设定以下符号:

PV:

本金(现值);R:

利率;FV:

终值;T:

时间。

FV=PV+PV×R×T=PV(1+R×T)

PV=FV/(1+R×T)

例1:

假设银行存款利率为10%,为三年后获得20000现金,某人现在应存入银行多少钱?

R=10%,FV=20000;T=3;求PV

PV=20000/(1+10%×3)=15384.62(元)(四舍五入)

1.2复利终值与现值

金融分析中常用复利方法进行货币的贴现计算。

复利,就是不仅本金要计算利息,本金所生的利息在下期也要加入本金一起计算利息,即通常所说的“利滚利”。

在复利的计算中,PV:

本金(现值);R:

利率;FV:

终值;T:

时间。

FV=PV(1+R)^T

PV=FV/(1+R)^T

注释:

(1+R)^T表示(1+R)的T次方与Matlab表示方法一致;

在例子1中,使用复利计算现值

R=10%,FV=20000;T=3;求PV

PV=20000/(1+10%)^3=15026.30(元)

复利计息频数是指利息在一年中付利息多少次。

在前面的终值与现值的计算中,都是假定利息是每年支付一次的,因为在这样的假设下,最容易理解货币的时间价值。

但是在实际理财中,常出现计息期以半年、季度、月,甚至以天为期间的计息期,相应复利计息频数为每年2次、4次、12次、360次。

如贷款买房按月计息,计息为12个月。

1.3连续复利计算

连续复利则是指在期数趋于无限大的极限情况下得到的利率,此时不同期之间的间隔很短,可以看作是无穷小量

设本金为PV,年利率为R,当每年含有m个复利结算周期(若一个月为一个复利结算周期,则m=12,若以一季度为一个复利结算周期,则m=4)时,则n年后的本利和为:

当复利结算的周期数

(这意味着资金运用率最大限度的提高)时,

的极限为e,即

  

所以当

连续复利本利和公式为:

        

时间

即:

在例子1中,使用复利计算现值

R=10%,FV=20000;T=3;求PV

PV=20000*exp(-0.1*3)=14816.36(元)

注释:

同样的20000元钱,采不同的贴现或计息方式得到的现值分别为15384.6、15026.30、14816.36元。

我们发现在利率一定时,连续复利的计算方式,对于投资者最优的。

2固定现金流计算

在实际金融产品中,通常不是简单的一次存入(取出),例如国债、住房贷款分期贷款、养老保险等都是以现金流的方式存在的。

例2这里以国债为例,10年期面值为1000元的国债,票面利率为5%,国债投资者每年在付息日都会受到50元利息,并在第10年(最后一年)收到1000元本金。

假设;Rate:

贴现率为6%,(贴现率不一定等于票面利率)

NumPeriods:

贴现周期为10年;

Payment:

利息为50元(周期现金流)

ExtraPayment:

本金1000元(最后一次非周期现金流)

则现值与终值的计算公式分别为:

2.1固定现金流现值计算函数pvfix

PresentVal=pvfix(Rate,NumPeriods,Payment,ExtraPayment,Due)

输入参数:

Rate:

贴现率;

NumPeriods:

贴现周期;

Payment:

周期现金流,正表示流入,负表示流出

ExtraPayment:

最后一次非周期现金流,函数默认为0

Due:

现金流计息方式(0为周期末付息,1为周期初付息)

输出参数:

PresentVal:

现金流现值

例:

利用pvfix函数计算例2.2的现值PV,M文件pvfixtest.m

%债券面值

FaceValue=1000;

%债券付息(面值*利率),假设每年付息一次

Payment=0.05*FaceValue;

%市场利率

Rate=0.06;

%到期还本,ExtraPayment额外现金流为本金

ExtraPayment=FaceValue;

%债券期限为10年

NumPeriods=10;

%每年年末付息,0为周期末付息

Due=0;

%调用pvfix函数

PresentVal=pvfix(Rate,NumPeriods,Payment,ExtraPayment,Due)

>>PresentVal=926.3991

注释:

债券的定价理论基本采用的现金流贴现的技术,假设目前市场合理的利率为6%(利率是货币的市场价格,随着市场情况变化的),若该债券的价格低于926.4,则债券价格被低估,若该债券的价格高于926.4,则债券的价格被高估。

2.2固定现金流终值计算函数fvfix

函数语法:

FutureVal=fvfix(Rate,NumPeriods,Payment,PresentVal,Due)

输入参数:

Rate:

贴现率;

NumPeriods:

贴现周期;

Payment:

周期现金流,正表示流入,负表示流出;

Due:

现金流计息方式(0为周期末付息,1为周期初付息);

PresentVal:

现金流现值。

输出参数:

FutureVal:

现金流终值。

例:

利用fvfix函数计算例2.2的终值FVM文件fvfixtest.m

%债券面值

FaceValue=1000;

%债券付息(面值*利率),假设每年付息一次

Payment=0.05*FaceValue;

%市场利率

Rate=0.06;

%到期还本,ExtraPayment额外现金流为本届

ExtraPayment=FaceValue;

%债券期限为10年

NumPeriods=10;

%每年年末付息,0为周期末付息

Due=0;

%调用pvfix函数

FutureVal=fvfix(Rate,NumPeriods,Payment,ExtraPayment,Due)

>>FutureVal=2.4499e+003

注释:

在实际经济运行中,常常需要现金流匹配(例如,多期投资项目、保险公司等),现金流匹配的计算通常使用现金流贴现方法计算。

3变化现金流计算

在实际项目投资中,每期的现金流可能是变化的,比如投资购买了一套设备,该设备每年带来收入不是固定(收入的数量或收入的时间不定),测算投资是否合适。

例3:

购买设备A,花费8000元,设备使用年限5年,现金流依次为[-8000,2500,1500,3000,1000,2000],如果对于企业来说投资的必要收益率为8%,该投资是否合适?

通常有两种方式净现值(NPV)与内部收益率(IRR)方法,净现值将现金流利用必要收益率贴计算NPV值,若NPV>0则可行;否则,不可行。

内部收益率,假设NPV=0计算必要贴现率,若IRR>必要收益率可行;否则不可行。

假设:

CashFlow:

现金流;Rate:

贴现率;

CashFlow=[-8000,2500,1500,3000,1000,2000],Rate=0.08

净现值(NPV):

内部收益率(IRR,公式中用r代替)

3.1净现值NPV计算函数pvvar

函数语法:

PresentVal=pvvar(CashFlow,Rate,IrrCFDates)

输入参数:

CashFlow:

现金流序列向量;

Rate:

必要收益率;

IrrCFDates:

可选项,CF时间,默认为等间隔,例如每年一次。

输出参数:

PresentVal:

现金流现值。

例:

利用pvvar函数计算例2.3的NPVM文件pvvarest.m

%现金流

CashFlow=[-8000,2500,1500,3000,1000,2000];

%利率

Rate=0.08;

%现金流结构[日期+金额]

IrrCFDates=['01/12/2009'%初始投资CF0=-8000

'02/14/2010'%CF1=2500

'03/03/2011'%CF2=1500

'06/14/2012'%CF3=3000

'12/01/2013'%CF4=1000

'12/31/2014'];%CF5=2000

%等间隔现金流计算现值

%PresentVal1=-8000+2500/1.08+1500/1.08^2+3000/1.08^3+1000/1.08^4+2000/1.08^5

PresentVal1=pvvar(CashFlow,Rate)

%时间变化的现金流计算现值

PresentVal2=pvvar(CashFlow,Rate,IrrCFDates)

>>PresentVal1=78.5160

PresentVal2=-172.5356

两个结果不同是由于现金流入贴现时间间隔不一致造成。

3.2内部收益率计算函数irr

函数语法:

Return=irr(CashFlow)

输入参数:

CashFlow:

现金流。

输出参数:

Return:

内部收益率;

例:

利用irr函数计算例3.3的内部收益率M文件irrest.m

%现金流(等间隔)

CashFlow=[-8000,2500,1500,3000,1000,2000];

%调用irr函数计算内部收益率

Return=irr(CashFlow)

>>Return=0.0839

计算结果,该项目的内部收益率IRR=8.39%

4年金现金流计算

年金,国外叫annuity,并不单是我们理解企业年金或养老金,而是定期或不定期的时间内一系列的现金流入或流出。

年金终值包括各年存入的本金相加以及各年存入的本金所产生的利息,但是,由于这些本金存入的时间不同,所以所产生的利息也不相同,按揭贷款本质上是年金的一种。

例4:

(1)比如投资人贷款50W买房,还款期20年,每月还3000元,则贷款利率为多少?

(2)若改为每月换4000元,则贷款利不变,还贷期限为多长?

4.1年金利率annurate

函数语法:

Rate=annurate(NumPeriods,Payment,PresentValue,FutureValue,Due)

输入参数:

NumPeriods:

现金流周期;

Payment:

现金流收入(支出);

PresentValue:

现金流现值;

FutureValue:

现金流终止,默认为0;

Due:

现金流计息方式(0为周期末付息,1为周期初付息);

输出参数:

Rate:

利息率(贴现率)。

例:

利用annurate函数求解例4.1的贷款利率M文件annuratetest.m

%贷款现值

PresentValue=500000;

%每次还款金额

Payment=3000;

%还款次数

NumPeriods=20*12;

%现金流终值为0,即还款完成

FutureValue=0;

%每周期末还款一次,0为周期末付息(还款)

Due=0;

%调用annurate计算,贷款利率

Rate=annurate(NumPeriods,Payment,PresentValue,FutureValue,Due)

>>Rate=0.0032(月利率)

>>年利率:

3.89%

4.2年金周期annuterm

函数语法:

NumPeriods=annuterm(Rate,Payment,PresentValue,FutureValue,Due)

输入参数:

Rate:

利息率(贴现率);

Payment:

现金流收入(支出);

PresentValue:

现金流现值;

FutureValue:

现金流终止,默认为0;

Due:

现金流计息方式(0为周期末付息,1为周期初付息)。

输出参数:

NumPeriods:

现金流周期。

例:

利用annuterm函数求解例4.2的还贷周期M文件annutermtest.m

%贷款的现值

PresentValue=500000;

%在annuterm函数支出为负数

Payment=-4000;

%现金流终值为0,即还款完成

FutureValue=0;

Due=0;

%月利率,银行的现行计息方式

Rate=0.0389/12;

%调用annuterm计算还款周期

NumPeriods=annuterm(Rate,Payment,PresentValue,FutureValue,Due)

>>NumPeriods=160.5303(月)13.3775(年)

注释:

在annuterm函数中Payment支出为负数

5商业按揭贷款分析

“按揭”的通俗意义是指用预购的商品房进行贷款抵押。

它是指按揭人将预购的物业产权转让于按揭受益人(银行)作为还款保证,还款后,按揭受益人将物业的产权转让给按揭人。

具体地说,按揭贷款是指购房者以所预购的楼宇作为抵押品而从银行获得贷款,购房者按照按揭契约中规定的归还方式和期限分期付款给银行;银行按一定的利率收取利息。

如果贷款人违约,银行有权收走房屋。

5.1按揭贷款还款方式

1.等额还款:

借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截止日期前偿还全部本息。

例如,贷款30万,20年还款期,每月还款4000元。

2.等额本金还款:

借款人每期须偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本金等于贷款总额除以贷款期数。

实际每期还款总额为递减数列。

3.等额递增还款:

借款人每期以等额还款为基础,每次间隔固定期数还款额增加一个固定金额的还款方式(如三年期贷款,每隔12个月增加还款100元,若第一年每月还款1000元,则第二年每月还款额为1100元,第三年为1200元)。

此种还款方式适用于当前收入较低,但收入曲线呈上升趋势的年轻客户。

4.等额递减还款:

借款人每期以等额还款为基础,每次间隔固定期数还款额减少一个固定金额的还款方式(如三年期贷款,每隔12个月减少还款100元,若第一年每月还款1000元,则第二年每月还款额为900元,第三年为800元)。

此种还款方式适用于当前收入较高,或有一定积蓄可用于还款的客户。

5.按期付息还款:

借款人按期还本,按一间隔期(还本间隔)等额偿还贷款本金,再按另一间隔期(还息间隔)定期结息,如每三个月偿还一次贷款本金,每月偿还贷款利息。

此种还款方式适合使用季度、年度奖金进行还款的客户。

6.到期还本还款:

借款人在整个贷款期间不归还任何本金,在贷款到期日一次全部还清贷款本金。

贷款利息可按月、按季或到期偿还,也可在贷款到期日一次性偿还。

等额还款与等本金还款是最主要的两种还款方式,其余几种基本上都是从这两种方式的基础上衍生出来的,本节主要对等额还款与等本金还款进行数量分析.

5.2等额还款模型与计算

借款人每期以相等的金额偿还贷款,按还款周期逐期归还,在贷款截止日期前全部还清本息。

参数假设:

R为月贷款利率;B:

为总借款额;MP:

为月还款额;n:

为还款期

Step1:

根据月初贷款余额计算该月还款额中的现金流包括支付的利息和偿还的本金,月还总额一定。

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

Step2:

随着如期缴纳最后一期月供款,贷款全部还清,即YE(n)=0

通常情况下,贷款总额与利息是已知的,月还款额与还款期限未定,根据上述等额还款模型,月还款额与还款期限存在着关联关系,即MP为合适值时,当YE

(1)=B计算等到YE(t+1)=YE(t)-BJ(t)=0,最后的还款余额为0。

在建立上述模型的基础上,通过matlab编程实现根据不同还款期限计算还款金额,等额还款的模型M编码,M程序AJfixPayment.m

F=AJfixPayment(MP,Num,B,Rate)

输入参数:

MP:

每期还款总额

Num:

还款期数

B:

贷款总额

Rate:

贷款利率

输出参数:

F:

最后贷款余额

程序源码:

functionF=AJfixPayment(MP,Num,B,Rate)

%codebyariszheng@

%2009-6-18

%初始化相关变量,初始值为0

IR=zeros(1,Num);

YE=zeros(1,Num);

BJ=zeros(1,Num);

%第1期贷款本金

YE

(1)=B;

fori=1:

Num

%第i期应还利息

IR(i)=Rate*YE(i);

%第i期归还的本金=第i期还款-第i期利息

BJ(i)=MP-IR(i);

%非最后一次还款

ifi

%第i+1期本金=第i期本金-第i期归还的本金

YE(i+1)=YE(i)-BJ(i);

end

end

%目标函数

F=B-sum(BJ);

注释:

zeros(1,Num);表示预先设置一个Num维的行零向量(注明零向量很必要,因为最后有用sum函数,不能随便初始化,如用ones)

测试AJfixPayment函数,testAJfixPayment.m

假设,贷款50万元,10年还款共120期,年贷款利率5%,若每月还款5000元,则贷款余额为多少?

注释:

月利率为年利率5%除以12。

%还款次数

Num=12*10;

%贷款金额

B=5e5;

%月利率

Rate=0.05/12;

%每次还款5000元

MP=5000;

F=AJfixPayment(MP,Num,B,Rate)

>>F=

4.7093e+004

计算结果为4709.3元,即贷款余额为4709.3。

使用fsolve求出合适的MP值,使得在120次还款后,贷款余额为零(fsolve函数,即求解x,使得F(x)=0,求任意贷款余额的方法。

即构建G(x)=F(x)+a,a为任意正数)。

M代码SolveAJfixPayment.m

Num=12*10;

B=5e5;

Rate=0.05/12;

%初始搜索值

MPo=1000;

%调用fsolve函数求解

MP=fsolve(@(MP)AJfixPayment(MP,Num,B,Rate),MPo)

>>Optimizationterminated:

first-orderoptimalityislessthanoptions.TolFun.

%计算结果

MP=

5.3033e+003

计算结果为5303.3,即贷款50万元,10年还款共120期,年贷款利率5%,若每月还款5303.3元,则10年(即还款120期)后贷款余额为0。

注释:

fsolve是matlab最主要求解多变量方程与方程组的函数

函数语法

[x,fval,exitflag,output,jacobian]=fsolve(fun,x0,options)

输入参数:

Fun:

目标函数一般用M-文件形式给出

X0:

优化算法初始迭代点

Options:

参数设置

函数输出:

X:

最优点输出(或最后迭代点)

Fval:

最优点(或最后迭代点)对应的函数值

Exitflag:

函数结束信息(具体参见matlabhelp)

Output:

函数基本信息包括迭代次数,目标函数最大计算次数,使用的算法名称,计算规模

Jacobian:

Jacobian矩阵(主要用来判断是否得到有效解)

点睛:

等额还款模型的具有解析解

MP:

为月还款额;R:

为月贷款利率;B:

为总借款额;MP:

为月还款额;n为还款期限

代入,贷款50万元,10年还款共120期,年贷款利率5%,计算出MP=5303.3

5.3等额本金还款

借款人每期须偿还等额本金,同时付清本期应付的贷款利息,而每期归还的本金等于贷款总额除以贷款期数。

参数假设:

R:

为月贷款利率;B:

为总借款额;MB:

月还本金;n为还款期;

Step1:

根据月初贷款余额计算该月还款额中的现金流包括支付的利息和偿还的本金,月还本金一定。

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

Step2:

随着如期缴纳最后一期月供款,贷款全部还清,即YE(n)=0

等额本金还款的计算比较简单,编写模型的M程序AJvarPayment.m

MP=AJvarPayment(Num,B,Rate)

输入参数:

Num:

还款期数

B:

贷款总额

Rate:

贷款利率

输出参数:

MP:

每期还款总额

程序源码:

functionMP=AJvarPayment(Num,B,Rate)

%codebyariszheng@

%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;

程序说明:

B-cumsum([0,MB*ones(1,Num-1)]);使用的cumsum(X)函数是累加函数,例如

X=[1,2,3,4,5,6],cumsum(X)=[1,3,6,10,15,21]

程序测试:

假设,贷款50万元,10年还款共120期,年贷款利率5%,采用等额本金还款方式则每月还款总额为多少?

M文件testAJvarPayment.m

Num=12

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1