当前位置:首页 > 固定收益证券_久期与凸度的matlab计算
吴氏金融工程第一讲 固定收益证券的Matlab计算
Start-end date SIA 2007-2-27—4 2007-3-1 2007-2-28—1 2007-3-1 2008-2-28—3 2008-3-1 2008-2-28—363 2009-3-1
Act/360 2 PSA 4 ISDA 30E/360 4 4 1 3 1 3 2 3 3 3 367 363 363 363 参考答案:% 固定收益证券作业1参考代码
% SIA Act/360 PSA ISDA 30E/360的basis代码分别为1,2,4,5,6 >> StartDate=['2/27/2007'; '2/28/2007';'2/28/2008';'2/28/2008']; >> EndDate=['3/1/2007';'3/1/2007';'3/1/2008';'3/1/2009']; >> for Basis=1:1:6 if Basis==3 NumDays=[0;0;0;0]
else NumDays=daysdif(StartDate,EndDate,Basis) end end
% 将除0000之外的那几例依次填入表的1-5例即可. 如果你不会用程序控制语句,也可以一步步地求.
9
吴氏金融工程第一讲 固定收益证券的Matlab计算
第三节 应计利息、贴现与现金流
一.应计利息(Accrued interest)
公式略。 调用方式:
AccruInterest = acrubond(IssueDate, Settle, FirstCouponDate, Face, CouponRate, Period, Basis)
Period和Basis是可选项。Period指付息频率。Period=n表示一年付n次息。
例4:公司债券发行日是2000年3月1日,到期日为2006年3月1日,每年支付两次利息,交割日是2000年7月17日,息票率10%,面值100元,交割日和下一付息日(2000-09-01)之间的天数按30/360(European)计息。请计算应计利息。 解法一:
30E/360E制度下,半年是180天,交割日和下一付息日之间的天数,由于每月只算30天,所以是44天.
那么该债券在本次结算时,应算从上一个付息日到交割日之间的天数,即从2000-03-01至2000-7-17之间的天数,显然这是180=44=136天。
由于每半年付一次息,其利率实为10%/2=5%, 所以应该利息AI为:
AI= 100 × 5% × 136/180 =3.7778 解法二:
>>IssueDate='3/1/2000'; >> Settle = '17-jul-2000'; >> FirstCouponDate='1-sep-2000'; >> Face=100; >> CouponRate=0.1; >> Period= 2; >> Basis=6;
10
吴氏金融工程第一讲 固定收益证券的Matlab计算
AccruInterest=acrubond(IssueDate, Settle, FirstCouponDate, Face, CouponRate, Period, Basis)
出来的是错误信息。我查了一下help原来是这个7.0版的matlab这里的basis最高只支持到3。无赖之下,basis=6只好用1来代。因为1是30/360,与6的30E/360较接近。
AccruInterest=acrubond(IssueDate, Settle, FirstCouponDate, Face, CouponRate, Period,1) AccruInterest = 3.7778
二.贴现率计算
尚缺函数,或未找到相应函数.
三、计算内部收益率
内部收益率是使投资现金流现值等于价格的收益率,其计算公式为:
P?C1C3C1?r?C2(1?r)2?(1?r)3???n(1?r)n,其中: Ci为第i年度现金流,P为债券价格,N为年数,r为内部收益率。 Matlab计算函数: irr
调用方式: Return = irr(Cashflow)
例6:一项投资各期现金流如下表,请计算该投资的内部收益率是多少? 第0期 第1期 第2期 第3期 第4期 -5000 1000 2000 3000 4000 解:>> Cashflow=[-5000,1000,2000,3000,4000]; >> irr(Cashflow) ans = 0.2727
如果把这里的-5000改成-4000,那么ans=0.3825,这很容易理解。
四、现金流现值与终值
11
吴氏金融工程第一讲 固定收益证券的Matlab计算
1.现金流现值的计算 现金流现值的计算公式是:
PV?P0P1P2P3Pn????? n0123(1?r)(1?r)(1?r)(1?r)(1?r)matlab命令是:
PesentVal=pvvar(Cashflow, Rte)
PesentVal=pvvar(Cashflow,Rate,IrrCFDates)这里IrrCFDates是指现金流发生的日期,Rate是指的贴现率.
例7:一项投资各年的现金流如下表,贴现率为0.08,求其现值。 年份 当前 第1年 2 000 第2年 1 500 第3年 3 000 第4年 3 800 第5年 5 000 金额/元 -10 000 解:>> cashflow=[-10000,2000,1500,3000,3800,5000]; >> rate =0.08; >> pvvar(cashflow,rate)
ans = 1.7154e+003 即:现值为1715.4。 请说说这项投资划得来吗?
(划得来,因为现值在超过了投资10000元,1715.4就是超过投资的部分)
例8: 已知贴现率为0.09,投资各时期的现金流如下表,求其再值。
现金发放日期 金额/元 12-Jan-2007 14-Feb-2008 3-Mar-2008 14-Jun-2008 1-Dec-2008 -10 000 2500 200 3 000 4000 请学生思考 解:>> cashflow=[-10000, 2500, 2000, 3000, 4000]; >> rate=0.09;
>> irrcfdates=['01/12/2007' '02/14/2008' '03/03/2008' '06/14/2008' '12/01/2008'];
12
共分享92篇相关文档