bondbyzero

从一组零条曲线价键

描述

[价格DirtyPriceCFlowAmountsCFlowDates] = bondbyzero(RateSpec优惠券比例解决到期价格从一组零条曲线的键。bondbyzero香草债券,加大息债券和摊销债券价格单位计算。

[价格DirtyPriceCFlowAmountsCFlowDates] = bondbyzero(___名称,值增加了额外的名称 - 值对的参数。

例子

全部收缩

用零利率曲线为4%的债券定价。

加载deriv.mat,它提供了ZeroRateSpec中,利率期限结构,以价债券需要。

加载deriv.mat;CouponRate = 0.04;定居=' 01 - 1月- 2000;成熟度='01 -Jan-2004';价格= bondbyzero(ZeroRateSpec,CouponRate,定居,成熟度)
价格= 97.5334

价格单步利用市场数据息债券。

定义的利率期限结构数据。

率= [0.035;0.042147;0.047345;0.052707];ValuationDate =“扬1-2010”;startdate可以= ValuationDate;EndDates = {“扬1-2011”;“扬1-2012”;“扬1-2013”;“扬1-2014”};复合= 1;

创建RateSpec

RS = intenvset('ValuationDate',ValuationDate,'StartDates'startdate可以,“EndDates”,EndDates,“利率”率,“复利”,复利)
RS =同场的结构:FinObj: 'RateSpec'复合:1光盘:[4x1双]率:[4x1双]结束时间:[4x1双]开始日期:[4x1双]结束日期:[4x1双]开始日期:734139价值日期:734139基础:0结束月规则:1

创建阶梯债券工具。

定居='01 -Jan-2010';成熟= {' 01 - 1月- 2011;' 01 - 1月- 2012;' 01 - 1月- 2013;' 01 - 1月- 2014};CouponRate = {{' 01 - 1月- 20120.0425;' 01 - 1月- 20140.0750}};周期= 1;

计算阶梯式息票债券的价格。

PZERO = bondbyzero(RS,CouponRate,沉降,成熟度,周期)
PZERO =4×1100.7246 100.0945 101.5900 102.0820

按摊销时间表对债券定价输入参数来定义调度。

定义的利率期限结构数据。

率= 0.065;ValuationDate =“1 - 1月- 2011”;startdate可以= ValuationDate;EndDates =“1月,2017年”;复合= 1;

创建RateSpec

RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates'startdate可以,“EndDates”,EndDates,“利率”率,“复利”,复利)
RateSpec =同场的结构:FinObj: 'RateSpec' 混配:1光盘:0.6853价格:0.0650 EndTimes:6个StartTimes:0 EndDates:736696个StartDates:734504 ValuationDate:734504个基础:0 EndMonthRule:1

创建和价格摊销债券工具。债券拥有7%的票面利率,期限为一年,并在到期1月 - 2017年。

CouponRate = 0.07;定居=“1 - 1月- 2011”;成熟度=“1月,2017年”;周期= 1;面= {{“1月,2015年”100;'1月-2016'90;“1月,2017年”80}};Price = bondbyzero(利率,优惠券,结算,到期,“时间”期,'面对'脸)
价格= 102.3155

比较与香草债券价格的结果。

PriceVanilla = bondbyzero(RateSpec,CouponRate,沉降,成熟度,周期)
PriceVanilla = 102.4205

对摊销债券和普通债券同时定价。

面= {{“1月,2015年”100;'1月-2016'90;“1月,2017年”80};100};PriceBonds = bondbyzero(RateSpec,CouponRate,沉降,成熟度,“时间”期,'面对'脸)
PriceBonds =2×1102.3155 102.4205

当第一次发行的债券,可与定价bondbyzero在这一天通过设置解决日期至发行日期。稍后,如果债券需要在发行日期和到期日之间的某一天进行交易,其新价格可以通过更新解决日期,还有RateSpec输入。

请注意,债券的价格是由其剩余的现金流和零利率期限结构决定的,这两者都可以随着债券的到期而改变。而bondbyzero自动更新相对于债券的剩余资金流向新解决日期,你必须提供一个新的RateSpec投入,以反映新的零利率期限结构的新解决日期。

使用以下债券信息。

IssueDate = datenum(“20 - 2014年5月- - - - - -”);CouponRate = 0.01;成熟= datenum(“20 - 2019年5月- - - - - -”);

确定可能20 - 2014年债券价格。

Settle1 = datenum(“20 - 2014年5月- - - - - -”);ZeroDates1 = datemnth(Settle1,12 * [1 2 3 5 7 10 20]');ZeroRates1 = [0.23 0.63 1.01 1.60 2.01 2.27 2.79]'/ 100;RateSpec1 = intenvset('开始日期'Settle1,“EndDates”ZeroDates1,“利率”,ZeroRates1);[Price1, ~, CFlowAmounts1, CFlowDates1] = bondbyzero(RateSpec1,CouponRate,Settle1,成熟,“IssueDate”,IssueDate);Price1
价格1 = 97.1899

确定10月 - 2015年债券价格。

Settle2 = datenum ('10 -Aug-2015');ZeroDates2 = datemnth(Settle2,12 * [1 2 3 5 7 10 20]');ZeroRates2 = [0.40 0.73 1.09 1.62 1.98 2.24 2.58]'/ 100;RateSpec2 = intenvset('开始日期',Settle2,“EndDates”ZeroDates2,“利率”,ZeroRates2);[Price2,〜,CFlowAmounts2,CFlowDates2] = bondbyzero(RateSpec2,CouponRate Settle2,成熟,“IssueDate”,IssueDate);Price2
Price2 = 98.9384

若要使用两条不同的曲线为三种债券定价,请定义RateSpec

StartDates =01日〜4月-2016';EndDates = [01日〜4月 -  2017' 年;01日〜4月-2018';01日〜4月,2019';01日〜4月-2020']。率= [[0.0356; 0.041185; 0.04489; 0.047741],[0.0325; 0.0423; 0.0437; 0.0465]];RateSpec = intenvset(“利率”率,'StartDates'startdate可以,“EndDates”,EndDates,“复利”,1)
RateSpec =同场的结构:FinObj: 'RateSpec' 配混:1张光盘:[4×2双]价格:[4×2双] EndTimes:[4X1双] StartTimes:[4X1双] EndDates:[4X1双] StartDates:736421 ValuationDate:736421基础:0 EndMonthRule:1

给3只债券同样的价格到期和不同的优惠券。

定居=01日〜4月-2016';成熟度=01日〜4月-2020';价格= bondbyzero(RateSpec,[0.025; 0.028; 0.035],沉降,成熟度)
价格=3×292.0766 92.4888 93.1680 93.5823 95.7145 96.1338

要调整现金根据应计量流,使用可选的输入参数AdjustCashFlowsBasis当调用bondbyzero

使用下面的数据来定义利率期限结构和创建RateSpec

率= 0.065;ValuationDate =“1 - 1月- 2011”;startdate可以= ValuationDate;EndDates =“1月,2017年”;复合= 1;RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates'startdate可以,“EndDates”,EndDates,“利率”,价格,“复利”、复合);CouponRate = 0.07;定居=“1 - 1月- 2011”;成熟度=“1月,2017年”;周期= 1;面= {{“1月,2015年”100;'1月-2016'90;“1月,2017年”80}};

使用cfamounts并通过循环基础013使用可选的参数AdjustCashFlowsBasis确定定于结算利息的现金流金额。

AdjustCashFlowsBasis = TRUE;CFlowAmounts = cfamounts(CouponRate,沉降,成熟度,“时间”期,'基础',0:13,“AdjustCashFlowsBasis”,AdjustCashFlowsBasis)
CFlowAmounts =14×70 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 0 7.0972 7.1167 7.0972 7.0972 7.0972 107.1167 0 7.0000 7.0192 7.0000 7.0000 7.0000 107.0192 0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 07.0000 7.0000 7.0000 7.0000 7.0000 107.0000 7.0000 0 7.0000 7.0000 7.0000 7.0000 107.0000 7.0972 0 7.1167 7.0972 7.0972 7.0972 107.1167⋮

请注意,现金流量金额已经根据进行了调整基础

使用所述输入参数价A香草键AdjustCashFlowsBasis

PriceVanilla = bondbyzero(RateSpec,CouponRate,沉降,成熟度,“时间”期,'基础',0:13,“AdjustCashFlowsBasis”,AdjustCashFlowsBasis)
PriceVanilla =14×1102.4205 102.4205 102.9216 102.4506 102.4205 102.4205 102.4205 102.4205 102.4205 102.9216⋮

输入参数

全部收缩

息结构,指定使用intenvset创建RateSpec年化零利率期限结构。

数据类型:结构

债券票面利率,指定为NINST-通过-1小数年率或NINST-通过-1单元阵列,其中每个元素是一个NumDates-通过-2单元阵列。的第一列NumDates-通过-2单元阵列是日期,第二栏是相关的速率。日期表示最后一天,票面利率是有效的。

数据类型:|细胞

结算日期,指定了作为一个标量或NINST-通过-1序列日期数字或日期字符向量的向量。

解决必须比早到期

数据类型:烧焦|

到期日,指定为aNINST-通过-1表示每个债券到期日序列日期数字或日期字符向量的向量。

数据类型:烧焦|

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和价值是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:价格= bondbyzero (RateSpec CouponRate、结算、成熟,“时期”,4,“脸”,10000年)

年票,指定为逗号分隔的对组成“时间”和一个NINST-通过-1向量。值12346,12

数据类型:

仪器的天数的基础上,指定为逗号分隔的一对组成的'基础'和一个NINST-通过-1向量。

  • 0 =实际/实际

  • 1 = 30/360(SIA)

  • 2 =实际/ 360

  • 3 =实际/ 365

  • 4 = 30/360(PSA)

  • 5 = 30/360(ISDA)

  • 6 = 30/360(欧洲的)

  • 7 =实际/ 365(日本)

  • 8 =实际/实际(ICMA)

  • 9 =实际/ 360(ICMA)

  • 10 =实际/ 365(ICMA)

  • 11 = 30/360E (ICMA)

  • 12 =实际/365 (ISDA)

  • 13 =总线/ 252

欲了解更多信息,请参阅基础

数据类型:

结束一个月的发生日期时,规则标志到期由具有30个或更少天结束每月日期了一个月,指定为逗号分隔的一对组成的'EndMonthRule'和一个非负整数[01] 用一个NINST-通过-1向量。

  • 0=忽略的规则,这意味着支付日期始终是该月的数字相同的日子。

  • 1=上设置的规则,这意味着支付日期始终是当月的最后一天实际。

数据类型:合乎逻辑

债券发行日期,指定为逗号分隔的对组成“IssueDate”和一个NINST-通过-1向量使用串行非负日期数字或日期字符向量。

数据类型:|烧焦

不规则的首次优惠券日期,指定为逗号分隔的对组成'FirstCouponDate'和一个NINST-通过-1向量使用串行非负日期数字或日期字符向量。

数据类型:|烧焦

不规则最后优惠券的日期,指定为逗号分隔的一对组成的'LastCouponDate'和一个NINST-通过-1向量使用串行非负日期数字或日期字符向量。

数据类型:|烧焦

前向支付起始日(考虑债券现金流的日期),由逗号分隔的对组成'开始日期'和一个NINST-通过-1使用序列号或日期字符向量的向量。

如果没有指定开始日期,有效起始日期为解决日期。

数据类型:烧焦|

面值,指定为逗号分隔的一对组成的'面对'和一个NINST-通过-1非负面值或标量NINST-通过-1单元阵列,其中每个元素是一个NumDates-通过-2单元阵列。的第一列NumDates-通过-2单元格数组是日期,第二列是相关的面值。日期表示面值有效的最后一天。

数据类型:细胞|

定价选项衍生物,指定为逗号分隔的一对组成的“选项”和一个被创造出来的结构derivset

数据类型:结构

标记根据实际期间日计数调整现金流,指定由逗号分隔的对组成“AdjustCashFlowsBasis”和一个NINST-通过-1值为的逻辑向量0(假)或1(真正)。

数据类型:合乎逻辑

工作日公约,指定为逗号分隔的一对组成的'BusinessDayConvention'和字符向量或ñ-通过-1(要么NINST-通过-2如果BusinessDayConvention每个分支是不同的)业务日约定字符向量的单元数组。选择营业日约定将决定如何处理非营业日。非营业日是指周末加上任何其他非营业日(例如法定假日)。值:

  • 实际-非工作时间实际上被忽略。在非营业日下降的现金流量被认为是在实际日期分配的。

  • 跟随- 现金流量在非营业日那年秋天被假定为对下一个工作日发布。

  • modifiedfollow- 现金流量在非营业日那年秋天被假定为对下一个工作日发布。但是,如果下一个工作日是不同的一个月,前一营业日改为采用。

  • 以前-假设在非营业日的现金流量是在上一个营业日分配的。

  • modifiedprevious-假设在非营业日的现金流量是在上一个营业日分配的。但是,如果一个营业日是在不同的月份,下一个工作日改为采用。

数据类型:烧焦|细胞

在计算工作日内使用节假日,指定为逗号分隔的一对组成的“假日”并使用MATLAB日期数字NHolidays-通过-1向量。

数据类型:

输出参数

全部收缩

浮动利率债券的价格,返回为(NINST)由(曲线的数NUMCURVES)基体。每一列产生于零条曲线中的一个。

肮脏的债券价格(清洁+应计利息),返回为NINST- 逐NUMCURVES矩阵。每一列产生于零条曲线中的一个。

现金流量金额,返回为NINST- 逐NUMCFS的现金矩阵对于每个键流动。

现金流日期,返回为NINST- 逐NUMCFS矩阵每张债券的付款日期。

更多关于

全部收缩

香草债券

“香草息票债券”是一种证券,代表在指定时间内偿还借款并定期支付利息的义务。

债券的发行人,使定期支付的利息,直到债券到期。在到期日,发行人支付给债券所欠的本金金额(面值)和最后支付利息的持有人。

阶梯息债券

甲升压和降压键是债务证券与预定优惠券结构随着时间的推移。

用这些仪器中,优惠券增加粘结的寿命期间在特定的时间(步骤向上)或减少(步骤向下)。

邦德与摊销附表

摊销债券被视为一种资产,贴息金额摊销利息费用超过债券的生活。

之前介绍过的R2006a