固定收益证券计算
转自http://wenku.baidu.com/view/bc8a45c1bb4cf7ec4afed0ba.html
1 固定收益债券定价
(1)bndprice函数
目的: 给固定收益债券定价
格式:
- [Price,AccruedInt]=bndprice(Yield,CouponRate,Settle,Maturity)
- [Price,AccruedInt]=bndprice(Yield,CouponRate,Settle,Maturity,Period,Basis,EndMonthRule,
- IssueDate,FirstCouponDate,LastCouponDate,StartDate,Face)
参数:Yield 半年为基础的到期收益
CouponRate 分红利率
Settle 结算日期,时间向量或字符串,必须小于等于到期日
Maturity 到期日,日期向量
Period 选择项,年分红次数,缺省值2,可为0,1,2,3,4,6,12
Basis 选择项,债券的天数计算法。缺省值为0=实际值/实际值,1=30/360,2=实际值/360,3=实际值/365
EndMonthRule 可选项,月未规则,应用在到期日是在小于等于30天的月份.0代表债券的红利发放日总是固定的一天,缺省1代表是在实际的每个月未
IssueDate 可选项,发行日期
FirstCouponDate 可选项,第一次分红日。当FirstCouponDate和LastCouponDate同时出现时,FirstCouponDate优先决定红利发放结构
LastCouponDate可选项,到期日的最后一次红利发放日。当FirstCouponDate没标明时,LastCouponDate决定红利发放结构。红利发放结构无论LastCouponDate是何时,都以其为准,并且紧接着债权到期日.
StarDate 可选项,债权实际起始日(现金流起始日)。当预计未来的工具时,用它标明未来的日期,如果没有特别说明StarDate,起始日是settlement date
Face 面值,缺省值是100
上面所有的参数必须是1*NUMBONDS或是NUMBONDS*1的向量。当为可选项时,用(〔〕)代替,在向量用NaN填写没说明的输入项。
描述:本函数表明给定日期和半年收益后,计算价格和利息。其中Price是价格,AccruedInt是结算日的利息。Price和Yield有如下公式:
Price+Accrued—Interest=sum(CashFlow*(1+Yield/2)^(-Time))
例
- Yield=[0.04;0.05;0.06]
- CouponRate=0.05
- Settle=’20-Jan-1997’
- Maturity=’15-Jun-2002’
- Period=2
- Basis=0
- [Price,AccruedInt]=bndprice(Yield,CouponRate,Settle,Maturity,Period,Basis)
- Price=104.8106 99.9951 95.4384
- AccruedInt=0.4945 0.4945 0.4945
参阅:cfamounts,bndyield
(2)prdisc 函数
目的 折价债券的价格
格式 Price=prdisc(Settle,Maturity,Face,Discount,Basis)
参数 Settle 作为序列时间号或日期串进入,必须早于或等于到期日。
Maturity 作为日期串进入。
Face 票面价值。
Discount 债券的银行折现率,是分数。
Basis 计算日期的基础
描述 本函数表示返回债券的价格,它的收益率是银行要求的折现率。
例
- Settle=’10/14/2000’;
- Maturity =’03/17/2001’;
- Face=100;
- Discount=0.087;
- Basis=2;
- price=prdisc(Settle,Maturity,Face,Discount,Basis)
返回
Price=96.2783
(3) prmat 函数
目的 到期支付利息的债券的价格,与到期利率有关的价格
格式 [Price,AccruInterest]=prmat(Settle,Maturity,Issue,Face,CouponRate,Yield,Basis)
参数 Settle作为序列时间号或日期串进入,必须早于或等于到期日。
Maturity作为日期串进入。
Issue作为序列时间号或日期串进入。
Face票面价值。
CouponRate作为分数进入。
Yield年收益率。是分数。
Basis计算日期的基础。
描述 本函数表示返回价格和在到期支付债券的精确利率。这个函数也应用于零息票债券或纯折现债券,通过使
例
- Settle=’02/07/2002’;
- Maturity =’04/13/2002’;
- Issue=’10/11/2002’;
- Face=100;
- CouponRate=0.0608;
- Yield=0.0608;
- Basis=1;
- [Price,AccruInterest]=prmat(Settle,Maturity,Issue,Face,CouponRate,Yield,Basis)
回车
Price=99.9784
AccruInterest=1.9591
(4)prtbill
目的 国库券的价格,ZF债券的定价
格式 Price=prtbill(Settle,Maturity,Face,Discount)
参数 Settle 作为序列时间号或日期串进入。必须早于或等于到期日。
Maturity 作为日期串进入。
Face 票面价值。
Discount 债券的银行折现率。是分数。
描述 本函数表示返回国库券的价格。
例 2002年2月10日发行,2002年8月6日到期,折现率3.77%,并且平价是1000$。则使用这些数据有
- Price=prtbill(‘2/10/2002’,’8/6/2002’,1000,0 .0377)
返回 Price=981.4642
2 利率期限结构
(1)Disc2zero函数
目的 给定贴现曲线的零曲线,用Zero曲线描述贴现曲线
格式
- (ZeroRates,CurveDates)=disc2zero(Discrates,CurveDates,Settle,OutputCompounding,OutputBasis)
参数 DiscRates 贴现要素的列向量,其要素构成投资领域的贴现曲线
CurveDates 对应的到期日列向量
Settle DiscRates里的贴现率的结算时间
OutputCompounding
1 年复利
2 半年复利
3 每年三次复利
4 季度复利
6 两月复利
12 月复利
365 日复利
-1 连续复利
Output basis
0 实际值/实际值(缺省值)
1 30/360,
2 实际值/360
3 实际值/365
描述
(ZeroRates,CurveDates)=disc2zero(discRates,CurveDates,Settle,OutputCompounding,OutputBasis)
ZeroRates 十进制列向量
CurveDates 对应的zero rates列向量这个向量与输入的CurveDates相量相似
例
- DiscRates=[0.9996
- 0.9947
- 0.9896
- 0.9866
- 0.9826
- 0.9786
- 0.9745
- 0.9665
- 0.9552
- 0.9466]
- CurveDates=[datenum(06-Nov-2000)
- datenum(11-Dec-2000)
- datenum(15-jan-2001)
- datenum(05-Feb-2001)
- datenum(04-Mar-2001)
- datenum(02-Apr-2001)
- datenum(30-Apr-2001)
- datenum(25-Jun-2001)
- datenum(04-Sep-2001)
- datenum(12-Nov-2001)]
- Settle=datenum(03-Nov-2000)
- Set daily compounding for the output zero curve, on an actual/365 basis.
- OutputCompounding=365
- OutputBasis=3
- 执行方程
- [Zerorates,CurveDates]=disc2zero(DiscRates,CurveDates,Settle,Outputcompounding,outputBasis)
- ZeroRates=
- 0.0487
- 0.0510
- 0.0523
- 0.0524
- 0.0530
- 0.0526
- 0.0530
- 0.0532
- 0.0549
- 0.0536
- CurveDates=
- 730796
- 730831
- 730866
- 730887
- 730914
- 730943
- 730971
- 731027
- 731098
- 731167
注意 zero2disc和其它的利率期限结构函数
实际上,DiscRates,ZeroRates只是基点。然而,MATLAB完全精确的计算出它们。如果你如上输入DisvRates,ZeroRates可能会有所不同。
(2)fwd2zero
目的 给定远期曲线的零曲线
格式
[ZeroRates,CurveDates]=fwd2zero(ForwardRates, CurveDates, Settle, OutputCompounding,
OutputBasis,InputCompounding, InputBasis)
参数 ForwardRates 一组债券的远期利率。总之,中的利率构成了投资领域的远期曲线。
CurveDates 对应远期利率的到期日向量.
Settle 远期利率的一般结算日.
OutputCompounding
1 年复利
2 半年复利
3 每年三次复利
4 季度复利
6 两月复利
12 月复利
365 日复利
-1 连续复利
Output basis
0 实际值/实际值(缺省值)
1 30/360,
2 实际值/360
3 实际值/365
InputCompounding
InputBasis
描述 计算了给定远期曲线的Zero曲线以及到期日
ZeroRates A NUMBONDS-by-1 vector of decimal fractions. In aggregate, the rates in ZeroRates constitute a zero curve for the investment horizon represented by CurveDates.
CurveDates A NUMBONDS-by-1 vector of maturity dates(as serial date numbers) that correspond to the zero rates in
ZeroRates. This vector is the same as the input vector CurveDates.
例 Given an impliede forward curveForwardRates over a set of maturity dates CurveDates, and a settlement dateSettle:
- FowardRates= [0.0469
- 0.0519
- 0.0549
- 0.0535
- 0.0558
- 0.0508
- 0.0560
- 0.0545
- 0.0615
- 0.0486];
- CurveDates= [datenum(’06-Nov-2000’)
- datenum(’11-Dec-2000’)
- datenum(’15-Jan-2001’)
- datenum(’05-Feb-2001’)
- datenum(’04-Mar-2001’)
- datenum(’02-Apr-2001’)
- datenum(’30-Apr-2001’)
- datenum(’25-Jun-2001’)
- datenum(’04-Sep-2001’)
- datenum(’12-Nov-2001’)
- Settle= datenum(’03-Nov-2000’)
- Set daily compounding for the zero curve, on an actual/365 basis. The forward curve was compounded annually on an actual/actual basis.
- OutputCompounding= 365;
- OutputBasis= 3;
- InputCompounding= 1;
- InputBasis= 0;
- Execute the function
- [ZeroRates, CurveDates]=fwd2zero(ForwardRates, CurveDates, Settle, OutputCompounding, OutputBasis, InputCompounding, InputBasis)
- Which returns the zero curve ZeroRates at the maturity dates CurveDates:
- ZeroRates=
- 0.0457
- 0.0501
- 0.0516
- 0.0517
- 0.0523
- 0.0517
- 0.0521
- 0.0523
- 0.0540
- 0.0528
- CurveDates =
- 730796
- 730831
- 730866
- 730887
- 730914
- 730943
- 730971
- 731027
- 731098
- 731167
实际上,ForwardRates 和ZeroRates只是基点。但是,用MATLAB 可以完全准确的计算。如果你如上输入ForwardRates, ZeroRates可能于到期日的不同。
注意 zero2fwd and other functions for TermStructure of Interest Rates.
(3)Prbyzero函数
目的 一组零曲线证券组合的债券价格,零息票债券的价格
格式 BondsPrices=prbyzero(Bonds,Settle,ZeroRates,ZeroDates)
参数
Bonds 用于计算价格的债券信息。六阶债券矩阵每一行代表一种债券。
首先的两列是被要求的;剩下的是可选的但必须按顺序添加。证券中的行必须有相同的列。
Maturity 到期日是序列日期数。
CouponRate 小数指示能支付的息票
Face 票面利率
Period 债券付息期
Basis 债券日期计算基础
EndMonthRule 这个规则只适用于到期日的月末是三十天或小于三十天。
Settle 建立日期的序列日期值。
ZeroRates 观察到的零率的日期曲线矩阵。每一列代表曲线率。每一行代表观察日期。
ZeroDates 第一列的观察值为零。
描述 BondsPrices=prbyzero(Bonds,Settle,ZeroRates,ZeroDates)计算证券组合中债券的价格。
债券价格是光票债券曲线数目矩阵。每一列来自相应的零利率曲线。
例
- Bonds=[datenum(‘6/1/1998’) 0.0475 100 200;
- datenum(‘7/1/2000’)0.06 100 200;
- datenum(‘7/1/2000’)0.09375 100 610;
- datenum(‘6/30/2001)0.05125 100 131;
- datenum(‘4/15’2002’)0.07125 100 410;
- datenum(‘1/15/2000’)0.065 100 200;
- datenum(‘9/1/1999’)0.08 100 330;
- datenum(‘4/30/2001’)0.05875 100 200;
- datenum(‘11/15/1999’)0.07125 100 200;
- datenum(‘6/30/2000’)0.07 100 231;
- datenum(‘7/1’2001’)0.0525 100 230;
- datenum(‘4/30/2002’)0.07 100 200];
- Prices=[99.375;
- 99.875;
- 105.75;
- 96.875;
- 103.625;
- 101.125;
- 103.125;
- 99.375;
- 101.0;
- 101.25;
- 96.375;
- 102.75];
- Settle=datenum(‘12/18/1997’)
- OutputCompounding=2;
- OutputBasis=3;
- MaxIterations=50;
- 执行zbtprice
- [ZeroRates,ZeroDates]=zbtprice(Bonds,Price,Settle,…OutputCompounding, OutputBasis, MaxIterations)
- ZeroRates=0.0616
- 0.0690
- 0.0658
- 0.0590
- 0.0648
- 0.0655
- 0.0606
- 0.0601
- 0.0642
- 0.0621
- 0.0627
- ZeroDates=729907
- 730364
- 730439
- 730500
- 730667
- 730668
- 730971
- 731032
- 731033
- 731321
- 731336
- 现在执行prbyzero
- BondsPrices=prbyzero(Bonds,Settle,ZeroRates,ZeroDates)
- 得到
- BondsPrices=
- 99.38
- 98.80
- 106.83
- 96.88
- 103.62
- 101.13
- 103.12
- 99.36
- 101.00
- 101.25
- 96.37
- 102.74
(4)pyld2zero函数
目的 给定平价收益曲线的零曲线
语法 [ZeroRates,CurveDates]=pyld2zero(ParRates,CurveDates,Settle,OutputComping,OutputBasis,
InputCompounding,InputBasis,MaxIrterations)
参数
ParRates 年隐含的平价收益率向量水平线代表曲线日期平价利率中的收益绿构成隐含平价收益曲线。
CurveDates 与平价利率相对应的日期向量。
Settle 平价利率制定是的日期向量。
OutputComping 输出的复利。复利频率标量。遵守以下规则:
1 年复利
2 半年复利
3 每年三次复利
4 季度复利
6 两月复利
12 月复利
365 日复利
-1 连续复利
OutputBasis 输出年零利率的日期计算基础
0 实际值/实际值(缺省值)
1 30/360,
2 实际值/360
3 实际值/365
InputCompounding 表示年输入平价利率的标量。缺省值=输出复利。
InputBasis 计算输入平价利率的日期基础。
MaxIrterations 得出零利率集的最大重复次数。
描述 返回给定平价收益曲线和到期日的零曲线。
ZeroRates 分数纵量。它组成代表曲线日期的投资横轴。
CurveDates 与零利率相应的到期日。
例 给定一组到期日和签定日的平价利率曲线:
- ParRates=[0.0479
- 0.0522
- 0.0540
- 0.0540
- 0.0536
- 0.0532
- 0.0532
- 0.0539
- 0.0558
- 0.0543]
- CurveDates=[datenum(06-11-2000)
- Datenum(11-12-2000)
- Datenum(15-12-2001)
- Datenum(05-02-2001)
- Datenum(04-03-2001)
- Datenum(02-04-2001)
- Datenum(30-04-2001)
- Datenum(25-06-2001)
- Datenum(04-09-2001)
- Datenum(12-11-2001)
- Settle=datenum(03-11-2000)
- 50次重复
- OutputComping=12
- OutputBasis=3
- InputCompounding=1
- InputBasis=0
- MaxIrterations=50
- 运行方程[ZeroRates,CurveDates]=pyld2zero(ParRates,CurveDates,Settle, OutputComping,OutputBasis,
- InputCompounding,InputBasis, MaxIrterations)
- 返回
- ZeroRates=
- 0.0461
- 0.0498
- 0.0519
- 0.0520
- 0.0510
- 0.0510
- 0.0508
- 0.0520
- 0.0543
- 0.0530
- CurveDates=
- 730796
- 730831
- 730866
- 730887
- 730914
- 730943
- 730971
- 731027
- 731098
- 731167
(5)zbtprice函数
目的:从给定价格的付息证券数据中得到Zero曲线,给定价格息票债券的零曲线
格式:
[zerorates, curvedates] = zbtprice( bonds, price,settle,…
outputcompounding,outbasis ,maxiterations )
参数:
bonds 可以推导Zero曲线的付息证券的信息。一个n行2列的矩阵,每一行代表一种证券,前两列是必须有的;其他的可以 任选到必须按照顺序增加。Bonds中每一种证券具有相同的行数和列数。列包括:
maturity 证券的到期日,连续的日期数字。使用datenum将日期字符串转化为连续的日期型数字。
Coupondate 证券的利息率,小数。
Face (任选的)证券的偿还值或面值。默认值=100
Period (任选的)每年利息,整数。既定值=0,1,2,3,4,6,12。默认值=2
Basis (任选的)计数基础 : 0=实际天数/实际天数(默认值), 1=30/360,2=实际值/360,3=实际值/365
Endmonthrule (任选的)月末标识。只有一个月是30天或少于30天且到期日为月末日时使用标识。0表示忽略标识,意味着证券付息日总是每月的同一天。1表示设置标识(默认值),证券付息日总是每月的最后一天。
Prices 包括Bonds中每一证券各自的公平价格(无息价格)的列向量,行数必须与Bonds的行数一致。
Settle 偿债日(日期型数字或字符串),这表示Zero曲线的0时点,它通常是所有证券的常见偿还日。
Outputcompounding (任选的)Zerorates中年付息频率间隔标量。
既定值包括;
1.按年付息,2.每年付息(默认值),3.一年3次付息,4.按季付息,6.隔月付息,12.按月付息
Outputbasis(任选的)计算Zerorates数值过程中使用的与现金流量日期相一致的计数基础,标量。0=实际天数/实际天数(默认值), 1=30/360,2=实际值/360,3=实际值/365
Maxiterations (任选的)求解Zerorates数值中重复的次数的最大值,标量。默认值=50,大于50的数值会减慢处理过程。
描述:[zerorates,curvedates] = zbtprice( bonds, price, settle, outputcompounding ,outbasis ,maxiterations )
使用bootstrap方法得出既定付息证券组合及其价格下的Zero曲线。
Zero曲线由输入的Bonds投资组合中推导的无息证券组合的到期收益组成。
这个方程所使用的bootstrap方法不需要调整输入投资组合证券的现金流日期。
它使用理论上的平价证券套利,并通过插入得到的zerorates ,为了得到更好的结果,使用投资范围内均匀间隔且至少是30种证券的投资组合。
Zerorates m行1列的各值为小数的向量,它是Curverates表示的投资范围内每一点的zerorate ;m是有相同到期日的证券的数量。通常,Zerorates的数值构成了Zero曲线。当多于一种的证券有相同的到期日时,Zbtprice得到那个到期日的平均值。
Curvedates 表示相同到期日(日期数字串)的一个m行1列的向量,它与Zerorates中的zerorate相一致; m是不同到期日的证券的数量。这些日期开始于Bonds矩阵中Maturity的最早的到期日,终止于Maturity的最晚的到期日。
例
- Bonds=[datenum(‘6/1/1998) 0.0475 100 2 0 0;
- datenum(‘7/1/2000) 0.06 100 2 0 0;
- datenum(‘7/1/2000) 0.09375 100 6 1 0;
- datenum(‘6/30/2001) 0.05125 100 1 3 1;
- datenum(‘4/15/2002) 0.07125 100 4 1 0;
- datenum(‘1/15/2000) 0.065 100 2 0 0;
- datenum(‘9/1/1999) 0.08 100 3 3 0;
- datenum(‘4/30/2001) 0.05875 100 2 0 0;
- datenum(‘11/15/1999) 0.07125 100 2 0 0;
- datenum(‘6/30/2000) 0.07 100 2 3 0;
- datenum(‘7/1/2001) 0.0525 100 2 3 0;
- datenum(‘4/30/2002) 0.07 100 2 0 0;]
- Prices=[99.375;
- 99.875;
- 105.75;
- 96.875;
- 103.625;
- 101.125;
- 103.125;
- 99.375;
- 101.0;
- 101.25;
- 96.375;
- 102.75];
- Settle=datenum(‘12/18/1997’);
给出12种付息证券的价格和数据,其中两种有相同的到期日;并给出常见的偿还日:
在实际天数365的计数基础上,为曲线设定半年付息。重复50次操作得到曲线。
Outputcompounding=2;
Outputbasis=3;
Maxiterations=50;
执行函数
[zerorates,curvedates] = zbtprice( bonds, price, settle, outputcompounding ,outbasis ,maxiterations )得到到期日的Zero曲线。
注意,具有相同到期日的两种证券的平均Zerorate。
- Zerorates=0.0616
- 0.0609
- 0.0658
- 0.0590
- 0.0648
- 0.0655*
- 0.0606
- 0.0601
- 0.0642
- 0.0621
- 0.0627
- Curvedates=729907 (1998年1月1日的日期型数字)
- 730364 (01-Sep-1999)
- 730439 (15-Nov-1999)
- 730500 (15-Jan-2000)
- 730667 (30-Jun-2000)
- 730668 (01-Jul-2000)
- 730971 (30-Apr-2001)
- 731032 (30-Jun-2001)
- 731033 (01-Jul-2001)
- 731321 (15-Apr-2002)
- 731336 (30-Apr-2002)
(6)zbtyield
目的:用bootstrap方法从给定收益的付息证券信息中导出Zero曲线,给定收益时票债券的零曲线
格式:[zerorates, curvedates] = zbtyield( bonds, yield, settle, …
outputcompounding ,outbasis ,maxiterations )
参数:
bonds 可以推导Zero曲线的付息证券的信息。一个n行2列的矩阵,每一行代表一种证券,前两列是必须有的;其他的可以任选到必须按照顺序增加。Bonds中每一种证券具有相同的行数和列数。列包括:
maturity 证券的到期日,连续的日期数字。使用datenum将日期字符串转化为连续的日期型数字。
Coupondate 证券的利息率,小数。
Face (任选的)证券的偿还值或面值。默认值=100
Period (任选的)每年利息,整数。既定值=0,1,2,3,4,6,12。默认值=2
Basis (任选的)计数基础 : 0=实际天数/实际天数(默认值), 1=30/360,2=实际值/360,3=实际值/365
Endmonthrule (任选的)月末标识。只有一个月是30天或少于30天且到期日为月末日时使用标识。0表示忽略标识,意味着证券付息日总是每月的同一天。1表示设置标识(默认值),证券付息日总是每月的最后一天。
Yields一个矩阵向量,包括Bonds中每一证券各自的到期收益,行数必须与Bonds的行数一致。
Settle偿债日(日期型数字或字符串),这表示Zero曲线的0时点,它通常是所有证券的常见偿还日。
Outputcompounding (任选的)Zerorates中年付息频率间隔标量。既定值包括;
1.按年付息,2.每年付息(默认值),3.一年3次付息,4.按季付息,6.隔月付息,12.按月付息
Outputbasis(任选的)计算Zerorates数值过程中使用的与现金流量日期相一致的计数基础,标量。0=实际天数/实际天数(默认值), 1=30/360,2=实际值/360,3=实际值/365
Maxiterations (任选的)求解Zerorates数值中重复的次数的最大值,标量。默认值=50,大于50的数值会减慢处理过程。
描述:[zerorates,curvedates] = zbtprice( bonds, price, settle, outputcompounding ,outbasis ,maxiterations )
使用bootstrap方法得出既定付息证券组合及其价格下的Zero曲线。Zero曲线由输入的Bonds投资组合中推导的无息证券组合的到期收益组成。这个方程所使用的bootstrap方法不需要调整输入投资组合证券的现金流日期。它使用理论上的平价证券套利,并通过插入得到的zerorates ,为了得到更好的结果,使用投资范围内均匀间隔且至少是30种证券的投资组合。
Zerorates m行1列的各值为小数的向量,它是Curverates表示的投资范围内每一点的zerorate ;m是有相同到期日的证券的数量。通常,Zerorates的数值构成了Zero曲线。当多于一种的证券有相同的到期日时,Zbtprice得到那个到期日的平均值。
Curvedates 表示相同到期日(日期数字串)的一个m行1列的向量,它与Zerorates中的zerorate相一致; m是不同到期日的证券的数量。这些日期开始于Bonds矩阵中Maturity的最早的到期日,终止于Maturity的最晚的到期日。
使用datestr将日期型数字串转化为日期型字符串。
例:给出12种付息证券的价格和数据,其中两种有相同的到期日;并给出常见的偿还日:
- Bonds=[datenum(‘6/1/1998) 0.0475 100 2 0 0;
- datenum(‘7/1/2000) 0.06 100 2 0 0;
- datenum(‘7/1/2000) 0.09375 100 6 1 0;
- datenum(‘6/30/2001) 0.05125 100 1 3 1;
- datenum(‘4/15/2002) 0.07125 100 4 1 0;
- datenum(‘1/15/2000) 0.065 100 2 0 0;
- datenum(‘9/1/1999) 0.08 100 3 3 0;
- datenum(‘4/30/2001) 0.05875 100 2 0 0;
- datenum(‘11/15/1999) 0.07125 100 2 0 0;
- datenum(‘6/30/2000) 0.07 100 2 3 0;
- datenum(‘7/1/2001) 0.0525 100 2 3 0;
- datenum(‘4/30/2002) 0.07 100 2 0 0;]
- Yield=[0.048;
- 0.06;
- 0.089;
- 0.053;
- 0.069;
- 0.064;
- 0.078;
- 0.059;
- 0.071;
- 0.069;
- 0.057;
- 0.068};
- Settle=datenum(‘12/18/1997’);
在实际天数365的计数基础上,为曲线设定半年付息。重复50次操作得到曲线。
Outputcompounding=2;
Outputbasis=3;
Maxiterations=50;
执行函数
[zerorates,curvedates] = zbtyield( bonds, yield, settle, outputcompounding ,outbasis ,maxiterations )得到到期日的Zero曲线。
注意,具有相同到期日的两种证券的平均Zerorate。
- Zerorates=0.0480
- 0.0577
- 0.0909
- 0.0529
- 0.0699
- 0.0724*
- 0.0584
- 0.0716
- 0.0669
- 0.0526
- 0.0687
- Curvedates=729907 (1998年1月1日的日期型数字)
- 730364 (01-Sep-1999)
- 730439 (15-Nov-1999)
- 730500 (15-Jan-2000)
- 730667 (30-Jun-2000)
- 730668 (01-Jul-2000)
- 730971 (30-Apr-2001)
- 731032 (30-Jun-2001)
- 731033 (01-Jul-2001)
- 731321 (15-Apr-2002)
- 731336 (30-Apr-2002)
类同:zbtprice和其他利率期限结构函数
3 收益
(1)beytbill函数
目的 短期国库券的债券等价产出。ZF债券的等价收益
格式 yield=beytbill(settle,maturity,discount)
参数 settle 输入连续日期数或日期流。交割日必须等于或早于到期日。
Maturity输入连续日期数或日期流。
Discount 短期国库券的贴息率。输入小数。
描述yield=beytbill(settle,maturity,discount) 得出短期国库券的债券等价产出。
例11 短期国库券的交割日是Feb 11,2000,到期日是Aug 7,2000,贴息率是5.77%.债券的等价产出是
- yield=beytbill(‘2/11/2000’,’8/7/2000’,0.0577)
- yield= 0.0602
(2)bndyield函数
目的:固定利率债券的到期收益
格式:Yield=bndyield(Price,CouponRate,Settle,Maturity,Period,Basis,EndMonthRule,IssueDate,
FirstCouponDate,LastCouponDate,StartDate,Face)
参数: 所有说明的参数必须是1*NUMBONDS或是NUMBONDS*1的向量.当是可选项时,用(〔〕)代替.在向量用NaN填写没说明的输入项.
Price 净值
CouponRate 分红利率
Settle 结算日期.时间向量或字符串.必须小于等于到期日
Maturity 到期日,日期向量.
Period 选择项.年分红次数缺省值2,可为0,1,2,3,4,6,12.
Basis 选择项.债券的天数计算法.缺省值为0=实际值/实际值.1=30/360,2=实际值/360,3=实际值/365
EndMonthRule 可选项.月未规则,应用在到期日实在小于等于30天的月份.0代表债券的红利发放日总是固定的一天,缺省1代表是在实际的每个月未
IssueDate 可选项.发行日期
FirstCouponDate 可选项.第一次分红日。当FirstCouponDate和LastCouponDate同时出现时,FirstCouponDate优先决定红利发放结构
LastCouponDate 可选项.到期日的最后一次红利发放日。当FirstCouponDate没标明时,LastCouponDate决定红利发放结构.红利发放结构无论LastCouponDate是何时,都以其为准,并且紧接着债权到期日.
StarDate:可选项.债权实际起始日(现金流起始日).当预计未来的工具时,用他标明是个未来的日期,如果没有特别说明StarDate,起始日是settlement date.
Face:面值.缺省值是100.
描述: 给定日期和净值后,计算到期收益。Yield是1*NUMBONDS向量,Price和Yield有如下公式:
Price+Accrued—Interest=sum(CashFlow*(1+Yield/2)^(-Time))
例12:
- Price=[95;100;105]
- CouponRate=0.05
- Settle=’20-Jun-1997’
- Maturity=’15-Jun-2002’
- Period=2
- Basis=0
- [Yield]=bndyield(Price=CouponRate=Settle=Maturity=Period=Basis)
- Yield=0.0610 0.0500 0.0396
(3)discrate函数
目的 货币市场证券的银行贴现率
格式 DiscRate=discrate(Settle,Maturity,Face,Price,Basis)
参数
Settle 以时间序列输入。结算日必须早于或等于到期日
Maturity 以时间序列输入
Face 赎回价值
Price 证券价格
Basis 缺省值为0=实际值/实际值.1=30/360,2=实际值/360,3=实际值/365
描述 DiscRate=discrate(Settle,Maturity,Face,Price,Basis)表明了证券的银行贴现率。银行贴现率基于证券的赎回价值计算并且体现了投资者的所得。
例13
- DiscRate=discrate(12-Jan-2000,25-Jun-2000,100,97.74,0)
- Returns
- DiscRate=
- 0.0501
贴现率为5.01 %
(4)ylddisc函数
目的:计算折价债券的收益,贴现证券的收益
格式: yield=ylddisc(settle,maturity,face,price,basis)
参数: settle 偿债日(日期型数字或字符串),其必须早于或等于到期日
maturity 到期日(日期型数字或字符串)
face 赎回价(平价,面值)
price 债券的折价
basis (任选的)计数基础 : 0=实际天数/实际天数(默认值), 1=30/360,2=实际值/360,3=实际值/365
描述: yield=ylddisc(settle,maturity,face,price,basis) 计算折价债券的收益
例14:
- settle=’10/14/2000’;
- maturity=’03/17/2001’;
- face=100;
- price=96.28;
- basis=2;
- yield=ylddisc(settle,maturity,face,price,basis)
- yield=0.0903(or9.03%)
- 同样 acrudisc,bndprice,bndyield,prdisc,yldtbill
(5)yldmat函数
目的:计算到期付息债券的收益率
格式 yield=yldmat(settle, maturity, issue, face,price, couponrate, basis)
参数: settle 偿债日,日期型数字或字符串,其必须早于或等于到期日
maturity 到期日,日期型数字或字符串
issue 发行日,日期型数字或字符串
face 赎回价(平价,面值)
price 债券的折价
couponrate 利息率,小数
basis (任选的)计数基础 : 0=实际天数/实际天数(默认值), 1=30/360,2=实际值/360,3=实际值/365
描述:yield=yldmat(settle, maturity, issue, face,price, couponrate, basis) 计算到期付息债券的收益率
例15:使用下列数据
- settle=’02/07/2000’;
- maturity=’04/13/2000’;
- issue=’10/11/1999’;
- face=100;
- price=99.98;
- couponrate=0.0608;
- basis=1;
- yield=yldmat(settle, maturity, issue, face, price, couponrate, basis)
得出 yield=0.0607(or6.07%)
同样:acrubond,bndprice,bndyield,prmat,ylddisc,ylbtbill
(6)yldtbill函数
目的:计算短期国库券的收益
格式:yield=yldtbill (settle, maturity, face, )
参数:settle 偿债日,日期型数字或字符串,其必须早于或等于到期日
maturity 到期日,日期型数字或字符串
face 赎回价(平价,面值)
price 债券的折价
描述:yield=yldmat(settle, maturity, face, ) 计算短期国库券的收益
例16:短期国库券清偿日期为2000年2月10日,到期日式2000年8月6日,面值是1000美元,价格是981.36美元。使用这一数据,
- yield=yldtbill(‘2、10、2000’,‘8、6、2000’,1000,981036)
得到 yield=0.0384(3.84%)
类同:beytbill,bndyield,prtbill,yldmat
4 利息率敏感性
(1)bndconvp函数
目的: 给定价格的债券凸性
格式:[YearConvexity,PerConvexity]=bndconvp(Price,CouponRate,Settle,Maturity,Period,Basis,
EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate,StarDate,Face)
参数:Price : 净价(不包括利息)
CouponRate:分红利率
Settle: 结算日期.时间向量或字符串.必须小于等于到期日
Maturity: 到期日,日期向量.
Period: 选择项.年分红次数缺省值2,可为0,1,2,3,4,6,12.
Basis: 选择项.债券的天数计算法.缺省值为0=实际值/实 际 值.1=30/360,2=实际值/360,3=实际值/365
EndMonthRule:可选项.月未规则.应用在到期日实在小于等于30 天的月份.0代表债券的红利发放日总是固定的一天,缺省1代表是在实际的每个月未
IssueDate:可选项.发行日期
FirstCouponDate:可选项.第一次分红日.当FirstCouponDate和LastCouponDate同时出现时,FirstCouponDate优先决定红利发放结构
LastCouponDate:可选项.到期日的最后一次红利发放日.当FirstCouponDate没标明时,LastCouponDate决定红利发放结构.红利发放结构无论LastCouponDate是何时,都以其为准,并且紧接着债权到期日.
StarDate:可选项.债权实际起始日(现金流起始日).当预计未来的工具时,用他标明是个未来的日期,如果没有特别说明StarDate,起始日是settlement date.
Face:面值.缺省值是100.
所有说明的参数必须是1*NUMBONDS或是NUMBONDS*1的向量.当时可选项是,用[〔〕]代替.在向量用NaN填写没说明的输入项.
描述 当给定每一个债券的价格时,计算固定收益NUMBONDS的凸性,无论红利结构中的最先或最后的红利期长或短(即红利结构是否和到期日一致).这个函数也决定零收益债券的凸性.
YearConvexity按照年PerConvexity按照半年计算,符合SIA的协议. 所有的输出是NUMBONDS*1的向量.
例17:
- Yield=[106;100;98]
- CouponRate=0.055
- Settle=‘02-Aug-1999’
- Maturity=‘15-Jun-2004’
- Period=2
- Basis=0
- [YearConvexity,PerConvexity]=bndconvp(Price,CouponRate,Settle,Maturity,Period,Basis)
- YearConvexity=21.4447 21.0363 20.8951
- PerConvexity=85.7788 84.1454 83.5803
参阅:bndconvp,bndconvy,bnddury,cfconv,cfdur
(2)bndconvy函数
目的:给定收益的债券凸性
格式:[YearConvexity,PerConvexity]=bndconvy(Yield,CouponRate,Settle,Maturity,Period,Basis,
EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate,StarDate,Face)
参数:Yield : 半年为基础得到期收益
CouponRate: 分红利率
Settle: 结算日期.时间向量或字符串.必须小于等于到期日
Maturity: 到期日,日期向量.
Period: 选择项.年分红次数缺省值2,可为0,1,2,3,4,6,12.
Basis: 选择项.债券的天数计算法.缺省值为0=实际值/实际值.1=30/360,2=实际值/360,3=实际值/365
EndMonthRule: 可选项.月未规则.应用在到期日实在小于等于30天的月份.0代表债券的红利发放日总是固定的一天,缺省1代表是在实际的每个月未
IssueDate: 可选项.发行日期
FirstCouponDate: 可选项.第一次分红日.当FirstCouponDate和lastCouponDate同时出现时,FirstCouponDate优先决定红利发放结构
LastCouponDate:可选项.到期日的最后一次红利发放日.当FirstCouponDate没标明时,LastCouponDate决定红利发放结构.红利发放结构无论LastCouponDate是何时,都以其为准,并且紧接着债权到期日.
StarDate:可选项.债权实际起始日(现金流起始日).当预计未来的工具时,用他标明是个未来的日期,如果没有特别说明StarDate,起始日是settlement date.
Face:面值.缺省值是100.
所有说明的参数必须是1*NUMBONDS或是NUMBONDS*1的向量.当时可选项是,用[〔〕]代替.在向量用NaN填写没说明的输入项.
说明:当给定每一个债券的收益时,计算NUMBONDS的凸性,无论红利结构中的最先或最后的红利期长或短(即红利结构是否和到期日一致).这个函数也决定零收益债券的凸性.
YearConvexity按照年PerConvexity按照半年计算,符合SIA的协议.所有的输出是NUMBONDS*1的向量.
例18:
- Yield=[0.04;0.055;0.06]
- CouponRate=0.055
- Settle=‘02-Aug-1999’
- Maturity=‘15-Jun-2004’
- Period=2
- Basis=0
- [YearConvexity,PerConvexity]=bndconvy (Yield,CouponRate,Settle,Maturity,Period,Basis)
- YearConvexity=21.4825 21.0358 20.8885
- PerConvexity=85.9298 84.1434 83.5541
参阅:bndconvp,bndconvy,bnddury,cfconv,cfdur
(3)bnddurp函数
目的:给定价格的债券平均期限,价格一定的债券久期
格式:[ModDuration,YearDuration,PerDuration]=bnddurp(Price,CouponRate,Settle,Maturity,Period,Basis,
EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate,StarDate,Face)
参数: Price: 净值
CouponRate: 分红利率
Settle: 结算日期.时间向量或字符串.必须小于等于到期日
Maturity: 到期日,日期向量.
Period : 选择项.年分红次数缺省值2,可为0,1,2,3,4,6,12.
Basis: 选择项.债券的天数计算法.缺省值为0=实际值/实际值.1=30/360,2=实际值/360,3=实际值/365
EndMonthRule: 可选项.月未规则.应用在到期日实在小于等于30天的月份.0代表债券的红利发放日总是固定的一天,缺省1代表是在实际的每个月未
IssueDate: 可选项.
FirstCouponDate: 发行日期,可选项.第一次分红日.当FirstCouponDate和LastCouponDate同时出现时,FirstCouponDate优先决定红利发放结构
LastCouponDate:可选项.到期日的最后一次红利发放日.当FirstCouponDate没标明时,LastCouponDate决定红利发放结构.红利发放结构无论LastCouponDate是何时,都以其为准,并且紧接着债权到期日.
StarDate:可选项.债权实际起始日(现金流起始日).当预计未来的工具时,用他标明是个未来的日期,如果没有特别说明StarDate,起始日是settlement date.
Face:面值.缺省值是100.
所有说明的参数必须是1*NUMBONDS或是NUMBONDS*1的向量.当时可选项是,用(〔〕)代替.在向量用NaN填写没说明的输入项.
说明: 当给定每一个债券的价格时,计算NUMBONDS的平均期限,无论红利结构中的最先或最后的红利期长或短(即红利结构是否和到期日一致).这个函数也决定零收益债券的凸性.
YearConvexity按照年PerConvexity按照半年计算,符合SIA的协议.所有的输出是NUMBONDS*1的向量.
例19:
- Price=[106;100;98]
- CouponRate=[0.055]
- Settle=‘02-Aug-1999’
- Maturity=‘15-Jun-2004’
- Period=2
- Basis=0
- [ModDuration,YearDuration,PerDuration]=bnddurp (Price,CouponRate,Settle,Maturity,Period,Basis)
- ModDuration=4.2400 4.1925 4.1759
- YearDuration=4.3275 4.3077 4.3077
- PerDuration=8.6549 8.6154 8.6014
参阅:bndconvp,bndconvy,bnddury
(4)bnddury函数
目的:给定收益的债券的平均期限,固定收益债券的久期
格式:[ModDuration,YearDuration,PerDuration]=bnddury(Yield,CouponRate,Settle,Maturity,Period,Basis,
EndMonthRule,IssueDate,FirstCouponDate,LastCouponDate,StarDate,Face)
参数:Yield : 半年为基础得到期收益
CouponRate: 分红利率
Settle: 结算日期.时间向量或字符串.必须小于等于到期日
Maturity: 到期日,日期向量.
Period : 选择项.年分红次数缺省值2,可为0,1,2,3,4,6,12.
Basis: 选择项.债券的天数计算法.缺省值为0=实际值/实际值.1=30/360,2=实际值/360,3=实际值/365
EndMonthRule: 可选项.月未规则.应用在到期日实在小于等于30天的月份.0代表债券的红利发放日总是固定的一天,缺省1代表是在实际的每个月未
IssueDate:可选项.发行日期
FirstCouponDate:可选项.第一次分红日.当FirstCouponDate和LastCouponDate同时出现时,FirstCouponDate优先决定红利发放结构
LastCouponDate:可选项.到期日的最后一次红利发放日.当FirstCouponDate没标明时,LastCouponDate决定红利发放结构.红利发放结构无论LastCouponDate是何时,都以其为准,并且紧接着债权到期日.
StarDate:可选项.债权实际起始日(现金流起始日).当预计未来的工具时,用他标明是个未来的日期,如果没有特别说明StarDate,起始日是settlement date.
Face:面值.缺省值是100.
所有说明的参数必须是1*NUMBONDS或是NUMBONDS*1的向量.当时可选项是,用(〔〕)代替.在向量用NaN填写没说明的输入项.
描述: 当给定每一个债券的收益时,计算NUMBONDS的平均期限,无论红利结构中的最先或最后的红利期长或短(即红利结构是否和到期日一致).这个函数也决定零收益债券的凸性.
YearConvexity按照年PerConvexity按照半年计算,符合SIA的协议.所有的输出是NUMBONDS*1的向量.
例20:
- Yield=[0.04;0.055;0.06]
- CouponRate=0.055
- Settle=’02-Aug-1999’
- Maturity=’15-Jun-2004’
- Period=2
- Basis=0
- [ModDuration,YearDuration,PerDuration]=bnddury(Yield,CouponRate,Settle,Maturity,Period,Basis)
- ModDuration=4.2444 4.1924 4.1751
- YearDuration=4.3292 4.3077 4.3004
- PerDuration=8.6585 8.6154 8.6007




雷达卡
京公网安备 11010802022788号







