主要内容

bondbyzero

从一组零曲线中定价债券

描述

例子

价格DirtyPriceCFlowAmountsCFlowDates= bondbyzero(RateSpecCouponRate解决成熟根据一组零曲线为债券定价。bondbyzero计算普通债券、阶梯息票债券和摊销债券的价格。

请注意

或者,您也可以使用FixedBond反对定价固定利率债券工具。有关更多信息,请参见开始使用基于对象的框架为金融工具定价的工作流程

例子

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

例子

全部折叠

用0曲线为4%的债券定价。

负载deriv.mat,提供ZeroRateSpec这一利率期限结构需要为债券定价。

负载deriv.mat;CouponRate = 0.04;set = datetime(2000,1,1);成熟度= datetime(2004,1,1);价格=零债券(ZeroRateSpec, CouponRate,结算,到期)
价格= 97.5334

利用市场数据为单级息票债券定价。

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

比率= [0.035;0.042147;0.047345;0.052707);ValuationDate = datetime(2010,1,1);StartDates = ValuationDate;EndDates = [datetime(2011,1,1);datetime(20102年,1,1);datetime(2013年,1,1);datetime(2014年,1,1)]; Compounding = 1;

创建RateSpec

RS = intvset (“ValuationDate”ValuationDate,startdate可以的startdate可以,...“EndDates”EndDates,“利率”率,“复合”复合)
RS =带有字段的结构:FinObj: 'RateSpec'复合:1盘:[4x1 double]利率:[4x1 double] EndTimes: [4x1 double] StartTimes: [4x1 double] EndDates: [4x1 double] StartDates: 734139估值日期:734139基础:0 EndMonthRule: 1

创建阶梯式键合工具。

Settle = datetime(2010,1,1);成熟度= [datetime(2011,1,1);datetime(2012年,1,1);datetime(2013年,1,1);datetime(2014年,1,1)];CouponRate = {{datetime(2012,1,1) .0425;datetime(2014,1,1) .0750}};周期= 1;

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

p0 =债券逐零(RS,债券利率,结算,到期,期限)
PZero =4×1100.7246 101.4247 101.6442 102.1362

根据分期偿还计划为债券定价输入参数定义调度。

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

比率= 0.065;ValuationDate = datetime(2011,1,1);StartDates = ValuationDate;EndDates = datetime(2017、1、1);复利= 1;

创建RateSpec

RateSpec = intenvset(“ValuationDate”ValuationDate,startdate可以的startdate可以,...“EndDates”EndDates,“利率”率,“复合”复合)
RateSpec =带有字段的结构:FinObj: 'RateSpec'复合:1 Disc: 0.6853 Rates: 0.0650 EndTimes: 6 StartTimes: 0 EndDates: 736696 StartDates: 734504 ValuationDate: 734504 Basis: 0 EndMonthRule: 1

创建摊销债券工具并为其定价。该债券票面利率为7%,期限为一年,于2017年1月1日到期。

CouponRate = 0.07;Settle = datetime(2011,1,1);成熟度= datetime(2017,1,1);周期= 1;Face = {{datetime(2015,1,1) 100;datetime(2016,1,1) 90;datetime(2017,1,1) 80}};利率,息票利率,结算,到期,“时间”...期间,“脸”脸)
价格= 102.3155

将结果与普通债券的价格进行比较。

PriceVanilla =零利率债券(利率,息票利率,结算,到期,期限)
PriceVanilla = 102.4205

对摊销债券和普通债券进行定价。

Face = {{datetime(2015,1,1) 100;datetime(2016,1,1) 90;datetime(2017,1,1) 80};100};PriceBonds = bondby0(利率,息票率,结算,到期,“时间”...期间,“脸”脸)
PriceBonds =2×1102.3155 - 102.4205

当债券首次发行时,它可以被定价bondbyzero在那天通过设置解决日期至发行日期。之后,如果债券需要在发行日和到期日之间的某一天进行交易,则可以通过更新解决日期,以及RateSpec输入。

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

使用以下Bond信息。

IssueDate = datetime(2014,5,20);CouponRate = 0.01;成熟度= datetime(2019,5,20);

在2014年5月20日确定债券价格。

sette1 = datetime(2014,5,20);ZeroDates1 = datemnth(sett1,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(StartDate可以的Settle1,“EndDates”ZeroDates1,“利率”, ZeroRates1);[pric1, ~, CFlowAmounts1, CFlowDates1] = bondbyzero(RateSpec1,...息票率,结算1,期限,“IssueDate”, IssueDate);Price1
Price1 = 97.1899

在2015年8月10日确定债券价格。

sette2 = datetime(2015,8,10);ZeroDates2 = datemnth(sett2,12*[1 2 3 5 7 10 20]');ZeroRates2 = [0.40 0.73 1.09 1.62 1.98 2.24 2.58]'/100;= intvset (StartDate可以的Settle2,“EndDates”ZeroDates2,“利率”, ZeroRates2);[Price2, ~, CFlowAmounts2, CFlowDates2] = bondbyzero(RateSpec2,...息票率,结算2,期限,“IssueDate”, IssueDate);Price2
Price2 = 98.9384

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

StartDates = datetime(2016,4,1);EndDates = [datetime(2017,4,1);datetime (2018 4 1);datetime (2019 4 1);datetime (2020 4 1)];率= [[0.0356;0.041185;0.04489;0.047741],[0.0325;0.0423;0.0437;0.0465]];RateSpec = intenvset(“利率”率,startdate可以的startdate可以,...“EndDates”EndDates,“复合”, 1)
RateSpec =带有字段的结构:FinObj: 'RateSpec'复合:1盘:[4x2 double]率:[4x2 double] EndTimes: [4x1 double] StartTimes: [4x1 double] EndDates: [4x1 double] StartDates: 736421估值日期:736421基础:0 EndMonthRule: 1

给三种债券定价成熟还有不同的优惠券。

Settle = datetime(2016,4,1);成熟度= datetime(2020,4,1);价格= bondby0 (RateSpec,[0.025;0.028;0.035],结算,到期)
价格=3×292.00766 92.4888 93.1680 93.5823 95.7145 96.1338

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

使用以下数据定义利率期限结构并创建一个RateSpec

比率= 0.065;ValuationDate = datetime(2011,1,1);StartDates = ValuationDate;EndDates = datetime(2017、1、1);复利= 1;RateSpec = intenvset(“ValuationDate”ValuationDate,startdate可以的startdate可以,...“EndDates”EndDates,“利率”率,“复合”、复合);CouponRate = 0.07;Settle = datetime(2011,1,1);成熟度= datetime(2017,1,1);周期= 1;Face = {{datetime(2015,1,1) 100;datetime(2016,1,1) 90;datetime(2017,1,1) 80}};

使用cfamounts然后循环基础013,使用可选参数AdjustCashFlowsBasis确定结算时应计利息的现金流量。

AdjustCashFlowsBasis = true;cflowamount = cfamounts(CouponRate,结算,到期,“时间”期,“基础”0:13,“AdjustCashFlowsBasis”AdjustCashFlowsBasis)
CFlowAmounts =14×70 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 7.0972 7.1167 7.0972 7.0972 7.0972 107.1167 0 0 7.0000 7.0192 7.0000 7.0000 7.0000 107.0192 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 0 0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000 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⋮

请注意,现金流金额已根据基础

使用输入参数为普通债券定价AdjustCashFlowsBasis

利率,息票利率,结算,到期,“时间”期,“基础”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——- - - - - -1Vector,使用日期时间数组、字符串数组或日期字符向量。

要支持万博1manbetx现有代码,bondbyzero也接受序列号作为输入,但不建议使用。

解决必须早于成熟

到期日期,指定为NINST——- - - - - -1向量,使用日期时间数组、字符串数组或日期字符向量表示每个债券的到期日。

要支持万博1manbetx现有代码,bondbyzero也接受序列号作为输入,但不建议使用。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:价格=零债券(利率,息票率,结算,期限,'期限',4,'面',10000)

每年的优惠券,以逗号分隔的对所组成“时间”和一个NINST——- - - - - -1向量。值123.46,12

数据类型:

仪器的日计数基,指定为逗号分隔的对,由“基础”和一个NINST——- - - - - -1向量。

  • 0 = actual/实际的

  • 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 = bus /252

有关更多信息,请参见基础

数据类型:

生成日期的月末规则标志成熟一个月的月底日期是否有30天或更少的天,指定为逗号分隔的对,由“EndMonthRule”和一个非负整数[01使用aNINST——- - - - - -1向量。

  • 0= Ignore规则,这意味着付款日期总是当月的同一天。

  • 1=设置规则,这意味着支付日期总是每月的最后一天。

数据类型:逻辑

债券发行日期,以逗号分隔的对所组成“IssueDate”和一个NINST——- - - - - -1Vector,使用日期时间数组、字符串数组或日期字符向量。

要支持万博1manbetx现有代码,bondbyzero也接受序列号作为输入,但不建议使用。

不规则的第一次优惠券日期,指定为逗号分隔的对“FirstCouponDate”和一个NINST——- - - - - -1Vector,使用日期时间数组、字符串数组或日期字符向量。

要支持万博1manbetx现有代码,bondbyzero也接受序列号作为输入,但不建议使用。

不规则的最后优惠券日期,指定为逗号分隔的一对,由“LastCouponDate”和一个NINST——- - - - - -1Vector,使用日期时间数组、字符串数组或日期字符向量。

要支持万博1manbetx现有代码,bondbyzero也接受序列号作为输入,但不建议使用。

转发支付开始日期(债券现金流考虑的日期),指定为逗号分隔的对,由StartDate可以的和一个NINST——- - - - - -1Vector,使用日期时间数组、字符串数组或日期字符向量。

要支持万博1manbetx现有代码,bondbyzero也接受序列号作为输入,但不建议使用。

如果不指定StartDate可以的生效起始日期为解决日期。

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

数据类型:细胞|

衍生品期权定价,指定为逗号分隔的对组成“选项”这个结构是用derivset

数据类型:结构体

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

数据类型:逻辑

工作日约定,指定为逗号分隔的对,由“BusinessDayConvention”还有一个字符向量aN——- - - - - -1(或NINST——- - - - - -2如果BusinessDayConvention对每个分支不同)工作日约定的字符向量单元格数组。营业日约定的选择决定了如何处理非营业日。非营业日的定义是周末加上任何其他不营业的日期(如法定假日)。值:

  • 实际-非工作日被有效地忽略。非营业日的现金流假定在实际日分配。

  • 遵循-非营业日的现金流假定在下一个营业日分配。

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

  • 以前的-非营业日的现金流假定在前一个营业日分配。

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

数据类型:字符|细胞

假日用于计算工作日,指定为逗号分隔的对,由“假期”和MATLAB数据使用NHolidays——- - - - - -1向量。

数据类型:datetime

输出参数

全部折叠

浮动利率票据价格,返回为(NINST)按曲线数目(NUMCURVES)矩阵。每一列都来自于零曲线中的一条。

肮脏的债券价格(干净+应计利息),返回作为NINST-, -NUMCURVES矩阵。每一列都来自于零曲线中的一条。

现金流量金额,返回为NINST-, -NUMCFS每个债券的现金流矩阵。

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

更多关于

全部折叠

香草债券

普通息票债券是一种证券,代表在指定时间偿还借款金额的义务,并在指定时间之前定期支付利息。

债券的发行人定期支付利息,直到债券到期。到期时,发行人向债券持有人支付所欠本金(票面价值)和最后支付的利息。

阶梯式息票债券

增减债券是一种债券证券,随着时间的推移票面结构是预先确定的。

通过这些工具,票息在债券存续期内的特定时间增加(上升)或减少(下降)。

债券与摊销计划

摊销债券被视为一种资产,贴现金额在债券存续期内摊销为利息支出。

版本历史

R2006a之前介绍过

全部展开