计算久期matlab,[MATLAB代码模板]固定收益证券计算
固定收益证券计算
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复制代码
计算久期matlab,[MATLAB代码模板]固定收益证券计算相关推荐
- 江西理工大学matlab考试,Matlab在《固定收益证券》课堂教学中的应用
1. 计算公式 1.1. 债券价格计算 [3] 1) 一次还本付息债券的定价公式 V = P ( 1 + r c ) T ( 1 + r ) T (1) 其中,P为债券面值,V为债券价格,r为到期收益 ...
- 债券价格和到期收益率的关系_金融学笔记:久期与凸性,衡量债券价格风险的常用指标...
关于久期,一篇科普性质的文章可见: 当我们谈论久期时,我们在谈论什么zhuanlan.zhihu.com 本文将稍显晦涩. 关于债券价格,首先明确,债券的价格是其产生的未来现金流按到期收益率贴现的现 ...
- oracle 加权久期,久期 - MBA智库百科
久期(Duration) [编辑] 什么是久期(Duration) 久期有许多不同的形式和解释.几种尤为重要的种类是麦考莱久期(Macaulay duration).修正久期(Modified dur ...
- 基于NS模型+久期衡量利率风险(Julia)
今天刚刚交完金融风险管理的作业,我是觉得这次作业可以综合体现我上大学以来学到的东西,甚至可以代表我的水平了(让大家见笑了). 首先,我们利用NS模型计算国债的利率期限结构. 假设顺势远期利率形式满足下 ...
- matlab 固定收益证券,matlab计算固定收益证券学习(二)
来吧,土鳖扛铁牛! 计算一下天数,持有固定收益证券的时间不同,收益自然不同,时间很关键. 应计天数是指,债券起息日或上一付息日至结算日的天数,在此期间发生的利息称为应计利息,方法如下: 1.Act/A ...
- 【机械仿真】基于matlab GUI直齿圆柱齿轮应力计算【含Matlab源码 2077期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab GUI直齿圆柱齿轮应力计算[含Matlab源码 2077期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...
- 【天体学】基于matlab GUI太阳天顶角计算【含Matlab源码 2229期】
一.⛄获取代码方式 获取代码方式1: 完整代码已上传我的资源:[天体学]基于matlab GUI太阳天顶角计算[含Matlab源码 2229期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...
- 基于matlab的图解粒度参数计算,基于MATLAB的图解粒度参数计算-热带地理.PDF
基于MATLAB的图解粒度参数计算-热带地理 第 26卷 第 3期 热 带 地 理 Vol26,No3 2006年 8月 TROP ICAL GEO GRA PHY Aug. , 2006 基于 MA ...
- 电气潮流运算Matlab怎么编程,基于Matlab的电力系统潮流编程计算
计算技术 信息发展 与 64 -- 科协论坛 · 2011 年第 6 期(下) -- 基于 Matlab 的电力系统潮流编程计算 □ 黄扬威 吴喜春 郭志峰 张斯翔 (三峡大学电气与新能源学院 湖北· ...
最新文章
- 编写优质代码的 6 大关键方法
- 如何查看linux动态链接库文件的版本等其他信息
- With在sql server 2005中的用法
- android 点击字体,图片背景效果一起变换Demo
- 这 8 篇文章告诉你:未来的软件研发是怎样的?
- 关于UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa6 in position 9737: 的解决
- php如何防止超发,PHP+redis实现的限制抢购防止商品超发功能详解
- ESP8266-01/01S配对阿里云生活物联网教程(超详细)
- 有趣的算法(四)最通俗易懂的KMP算法解析
- 图片标注工具LabelImg安装与使用
- Excel·VBA数组冒泡排序函数
- Unity StanderShader系列1---ForwardBase源码解析
- 可以下载全球气象资料的网站
- built a JNCIS LAB系列:Chapter 4 BGP
- vim之快速查找功能
- elementui icon图标
- HCIE-Cloud Computing v2.0 lab机考全讲解
- POI对word文档中的指定内容添加批注
- BeautifulSoup是什么?如何使用?
- Java Agent:通灵之术
热门文章
- Java爬虫.HttpClient
- android电话本导入iphone,换手机之后安卓通讯录怎么导入iphone手机
- c中double型比较大小
- 初学古琴怎么学?古琴入门基础知识
- python猜单词游戏实验原理_猜单词游戏课程设计报告
- linux 安装Mysql步骤
- 基于matlab模拟心电信号,附赠代码
- 天顶围棋 8 zenith 8_女子围甲联赛来到太原 马晓春王元“书海专场”推广围棋与文化...
- torch.diag() 取矩阵对角线元素,torch.diag_embed() 指定值变成对角矩阵
- s7填表指令att_S7-200PLC 表操作指令