当前位置: > 财经>正文

[MATLAB代码模板]固定收益证券计算 债券价格与到期收益率公式

2023-09-05 22:23:14 互联网 未知 财经

[MATLAB代码模板]固定收益证券计算

是否+2 论坛币k人 参与回答经管之家送您一份

应届毕业生专属福利!

求职就业群赵安豆老师微信:zhaoandou666经管之家联合CDA

送您一个全额奖学金名额~ !

立即领取感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

固定收益证券计算

转自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.0536CurveDates=   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.06580.05900.06480.06550.06060.06010.06420.06210.0627ZeroDates=729907730364730439730500730667730668730971731032731033731321731336现在执行prbyzeroBondsPrices=prbyzero(Bonds,Settle,ZeroRates,ZeroDates)得到BondsPrices=99.3898.80106.8396.88103.62101.13103.1299.36101.00101.2596.37102.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=12OutputBasis=3InputCompounding=1InputBasis=0MaxIrterations=50运行方程[ZeroRates,CurveDates]=pyld2zero(ParRates,CurveDates,Settle, OutputComping,OutputBasis,InputCompounding,InputBasis, MaxIrterations)返回ZeroRates=0.04610.04980.05190.05200.05100.05100.05080.05200.05430.0530CurveDates=730796730831730866730887730914730943730971731027731098731167复制代码

(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.06160.0609 0.06580.05900.06480.0655*0.06060.0601 0.06420.06210.0627Curvedates=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.04800.0577 0.09090.05290.06990.0724*0.05840.0716 0.06690.05260.0687Curvedates=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复制代码 扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

分享0收藏24回帖关键词:matlab代码MATLAB固定收益证券matlaatlab收益率

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。