主要内容

bondDefaultBootstrap

从债券价格引导违约概率曲线

描述

例子

ProbabilityDataHazardData) = bondDefaultBootstrap (ZeroDataMarketData解决从债券价格引导违约概率曲线。

使用bondDefaultBootstrap,您可以:

  • 从市场债券数据中提取某一时期的离散违约概率。

  • 对这些违约概率进行插值,得到用于定价和风险管理的违约概率曲线。

例子

ProbabilityDataHazardData) = bondDefaultBootstrap (___名称,值添加可选的名称-值对参数。

例子

全部折叠

使用以下bond数据。

解决= datenum (08 - 2016年7月的);MarketDate = datenum ({“06/15/2018”“01/08/2019”“02/01/2021”“03/18/2021”“08/04/2025”} ',“mm / dd / yyyy”);CouponRate = [2.240 2.943 5.750 3.336 4.134]'/100;市场价格= [101.300 103.020 115.423 104.683 108.642]';MarketData = [MarketDate、市场价格、CouponRate];

计算ProbabilityDataHazardData

国债收益率= [0.26 0.28 0.36 0.48 0.61 0.71 0.95 1.19 1.37 1.69 2.11]'/100;TreasuryDates = datemnth(Settle,[[1 3 6], 12 *[1 2 3 5 7 10 20 30]]'); / /设定时间[ZeroRates, CurveDates] = pyld20 (TreasuryParYield, TreasuryDates, Settle);ZeroData =[曲率日期,ZeroRates];格式longg[ProbabilityData, HazardData] = bondDefaultBootstrap (ZeroData MarketData,解决)
ProbabilityData =5×2737226 0.0299675399937611 737433 0.0418832295824674 738188 0.090518332884262 738233 0.101248065083713 739833 0.233002708031915
HazardData =5×20.0157077745460244 737433 0.0217939816590403 738188 0.025184912824721 738233 0.0962608718640789 739833 0.0361632398787917

bondDefaultBootstrap的第一列ProbabilityData的第一列HazardData输出包含相应的默认概率和风险率的结束日期。然而,用于计算违约概率时间范围的起始日期可能与风险率的起始日期不同。对于默认概率,时间范围都是从解决日期到各自的结束日期显示在的第一列ProbabilityData.相比之下,危险率的时间范围是用解决日期和第一栏HazardData,因此第一个危险率适用于解决日期到第一个市场日期,第二个风险率从第一个市场日期到第二个市场日期,以此类推,最后一个风险率从第二个到最后一个市场日期起适用。

datestr(解决)
ans = ' 08 - 7月- 2016 '
datestr (ProbabilityData (: 1))
ans =5 x11 char数组'15-Jun-2018' '08-Jan-2019' '01-Feb-2021' '18-Mar-2021' '04-Aug-2025' '
datestr (HazardData (: 1))
ans =5 x11 char数组'15-Jun-2018' '08-Jan-2019' '01-Feb-2021' '18-Mar-2021' '04-Aug-2025' '

默认概率的时间范围都开始于08 - 2016年7月的他们结束于“15 - 2018年6月- - - - - -”08年- 1月- 2019 '“01 - 2月- 2021”“18 - 3月- 2021”,04年- 8月- 2025 ',分别。至于危险率,第一个危险率开始08 - 2016年7月的和结束“15 - 2018年6月- - - - - -”,第二个危险率开始“15 - 2018年6月- - - - - -”和结束08年- 1月- 2019 '第三个危险率开始08年- 1月- 2019 '和结束“01 - 2月- 2021”等等。

根据违约概率曲线对债券列表中的债券重新定价。这个重新定价的预期结果与市场报价完美匹配。

使用以下来自美国财政部的财政部数据。

解决= datetime (08 - 2016年7月的“场所”“en_US”);国债收益率= [0.26 0.28 0.36 0.48 0.61 0.71 0.95 1.19 1.37 1.69 2.11]'/100;TreasuryDates = datemnth(Settle,[[1 3 6], 12 *[1 2 3 5 7 10 20 30]]'); / /设定时间

使用半年期息票债券预览债券日期,包括市场报价、息票利率,结算日期为2016年7月8日。

MarketDate = datenum ({“06/01/2017”“06/01/2019”“06/01/2020”“06/01/2022”} ',“mm / dd / yyyy”);券息= [7 8 9 10]'/100;市场价格= [101.300 109.020 114.42 118.62]';市场数据=[市场日期,市场价格,优惠券];BondList = array2table (MarketData,“VariableNames”, {“成熟”“价格”“优惠券”});BondList。成熟=datetime(BondList。成熟,“场所”“en_US”“ConvertFrom”“datenum”);BondList.Maturity.Format =“MMM-dd-yyyy”
BondList =4×3表到期息票___________ ______ ______ june -01-2017 101.3 0.07 june -01-2019 109.02 0.08 june -01-2020 114.42 0.09 june -01-2022 118.62 0.1

选择第二个息票债券作为定价的债券。

数= 2;TestCase = BondList(number,:);

预览这里提供的基于连续复合利率的无风险利率数据。

[ZeroRates, CurveDates] = pyld20 (TreasuryParYield, TreasuryDates, Settle);ZeroData = [datenum(曲面日期),ZeroRates];RiskFreeRate = array2table (ZeroData,“VariableNames”, {“日期”“速度”});RiskFreeRate。Date = datetime(RiskFreeRate.Date,“场所”“en_US”“ConvertFrom”“datenum”);RiskFreeRate.Date.Format =“MMM-dd-yyyy”
RiskFreeRate =11×2表日期率___________ _________ Aug-08-2016 0.0026057 october -08-2016 0.0027914 1 -08-2017 0.0035706 7 -08-2017 0.0048014 7 -08-2018 0.0061053 7 -08-2019 0.0071115 7 -08-2021 0.0095416 7 -08-2023 0.012014 7 -08-2026 0.013883 7 -08-2036 0.017359 7 -08-2046 0.022704

从债券中引导违约概率(PD)曲线。

格式longg[defaultProb1, hazardous 1] = bondDefaultBootstrap(ZeroData, MarketData, Settle)
defaultProb1 =4×2737577 0.162569420050034 737943 0.217308133826188 738673 0.38956773145021
hazard1 =4×2736847 0.0813390794774647 737577 0.0521615800986281 737943 0.0674145844133183
格式

为了更好的表示,请重新格式化默认概率和风险率。

DefProbHazard = [defaultProb1, hazard1(:,2)];DefProbHazardTable = array2table (DefProbHazard,“VariableNames”, {“日期”“DefaultProbability”“HazardRate”});DefProbHazardTable。Date = datetime(DefProbHazardTable.Date,“场所”“en_US”“ConvertFrom”“datenum”);DefProbHazardTable.Date.Format =“MMM-dd-yyyy”
DefProbHazardTable =4×3表日期DefaultProbability hazarrate ___________ __________________ __________ june -01-2017 0.070486 0.081339 june -01-2019 0.16257 0.052162 june -01-2020 0.21731 0.067415 june -01-2022 0.38957 0.12429

根据PD曲线预览要重新定价的选定债券。

TestCase
TestCase =1×3表成熟的价格优惠  ___________ ______ ______ 6月- 01 - 2019 109.02 - 0.08

要重新定价债券,首先要生成现金流和付款日期。

[支付,PaymentDates] = cfamounts(TestCase。优惠券、解决TestCase.Maturity);AccInt =支付(1);%截断付款以及付款日期用于计算% PaymentDates(1)为结算日期,无需进行后续计算PaymentDates = PaymentDates(2:结束)
PaymentDates =1 x6 datetime第1至5栏01- 12 -2016 01- 6 -2017 01- 12 -2017 01- 6 -2018 01- 12 -2018 01- 6 -2019
支付=支付(2:结束)
支付=1×64 4 4 4 104

计算付款日期的折扣因素。

DF = zero2disc (interp1 (RiskFreeRate。日期、RiskFreeRate。率,PaymentDates,“线性”“extrap”),付款日期,结算,-1)
DF =1×60.9987 0.9959 0.9926 0.9887 0.9845 0.9799

假设回收金额是债券面值的一个固定比例。债券的面值是One hundred.,采收率设为40%bondDefaultBootstrap

Num =长度(支付);RecoveryAmount = repmat(100*0.4, 1, Num)
RecoveryAmount =1×640 40 40 40 40 40

根据违约曲线计算违约概率。

DefaultProb1 = bondDefaultBootstrap(ZeroData, MarketData, Settle,“ZeroCompounding”, 1“ProbabilityDates”PaymentDates ');- DefaultProb1(:,2)
SurvivalProb =6×10.9680 0.9295 0.9055 0.8823 0.8595 0.8375

计算基于模型的净债券价格。

DirtyPrice = DF * (survivalprobb .*Payments') + (RecoveryAmount.*DF) * (-diff([1; survivalprobb]));ModelPrice = DirtyPrice - AccInt
ModelPrice = 109.0200

将重新定价的债券与市场报价进行比较。

ResultTable = TestCase;ResultTable。米odelPrice = ModelPrice; ResultTable.Difference = ModelPrice - TestCase.Price
ResultTable =表1×5成熟优惠券ModelPrice价格差异  ___________ ______ ______ __________ __________ 6月- 01 - 2019 109.02 0.08 109.02 1.4211 e-14

输入参数

全部折叠

零利率数据,指定为——- - - - - -2日期和零利率矩阵或IRDataCurve零速率的对象。对于数组输入,日期必须输入为连续日期号,折扣率必须为小数形式。

ZeroData是一个IRDataCurve对象,ZeroCompoundingZeroBasis是隐式的ZeroData在函数中是多余的。在这种情况下,在构造时指定这些可选参数IRDataCurve对象,然后再使用bondDefaultBootstrap函数。

想了解更多信息IRDataCurve(金融工具的工具箱)对象,看到创建一个irdataccurve对象(金融工具的工具箱)

数据类型:

债券市场数据,指定为N——- - - - - -3.债券到期日、市场价格和票面利率的矩阵。日期必须以连续日期编号输入,市场价格必须为数字值,票面利率必须为小数形式。

请注意

MarketData不是按时间升序排序的。

数据类型:

结算日期,指定为连续日期编号、日期字符向量、日期时间对象或日期字符串对象。解决必须早于或等于到期日期MarketData

数据类型:|字符|datetime|字符串

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:[ProbabilityData, HazardData] = bondDefaultBootstrap (ZeroData MarketData,定居,RecoveryRate,复苏,ZeroCompounding, 1)

请注意

任意大小的可选输入N——- - - - - -1也是可以接受的大小数组1——- - - - - -N,或作为适用于所有合同的单一值。

恢复速率,指定为逗号分隔对“RecoveryRate”和一个N——- - - - - -1恢复率向量,表示为十进制0通过1

数据类型:

默认概率数据的输出日期,指定为逗号分隔的对,由“ProbabilityDates”和一个P——- - - - - -1向量,以日期序号、日期时间对象、日期字符向量或日期字符串对象的形式给出。

数据类型:|字符|datetime|字符串

零曲线的合成频率,指定为逗号分隔对组成“ZeroCompounding”和一个N——- - - - - -1向量。值:

  • 1—每年复利

  • 2- - - - - -半年计息

  • 3.-每年复利三次

  • 4-季度复合

  • 6——每月两次的复合

  • 12——每月复利

  • −1——连续复利计算

数据类型:

零曲线的基础,指定为逗号分隔对组成“ZeroBasis”和上面列出的值一样基础

数据类型:

恢复方法,指定为由逗号分隔的对组成“RecoveryMethod”以及值为的字符向量或字符串“presentvalue”“表面”

  • “presentvalue”假设在违约时,债券的价值是其剩余现金流假设现值的给定部分,并以无风险利率贴现。

  • “表面”假设债券在收回时收回一定面值的一部分。

数据类型:字符|字符串

面值或票面值,指定为逗号分隔的对,由“脸”和一个NINST——- - - - - -1向量的债券。

数据类型:

支付频率,指定为逗号分隔对,由“时间”和一个N——- - - - - -1值的向量0123.46,或12

数据类型:

日计数基础的仪器,指定为逗号分隔对组成“基础”一个正整数,用aNINST——- - - - - -1向量。值:

  • 0 =实际/实际

  • 1 = 30/360 (sia)

  • 2 =实际/ 360

  • 3 =实际/ 365

  • 4 = 30/360 (psa)

  • 5 = 30/360 (isda)

  • 6 = 30/360(欧洲)

  • 7 =实际/365(日文)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 =实际/365 (ICMA)

  • 11 = 30/360e (icma)

  • 12 =实际/365 (ISDA)

  • 13 =总线/ 252

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

数据类型:

月结束规则标志,指定为逗号分隔对,由“EndMonthRule”一个非负整数,01,使用NINST——- - - - - -1向量。此规则仅适用于以下情况成熟是一个月只有30天或更少的月末日期。

  • 0=忽略规则,即债券息票支付日期总是当月的相同数字日。

  • 1=设定规则,即债券息票支付日期总是当月的最后一天。

数据类型:

债券发行日期,指定为逗号分隔对,由“IssueDate”和一个N——- - - - - -1向量,以日期序号、日期时间对象、日期字符向量或日期字符串对象的形式给出。

数据类型:|字符|datetime|字符串

第一个实际的优惠券日期,指定为逗号分隔的对,包括“FirstCouponDate”和一个连续的日期号。FirstCouponDate用于首次息票期不固定的债券。当FirstCouponDateLastCouponDate都是指定的,FirstCouponDate优先确定息票支付结构。

数据类型:

最后一个实际的优惠券日期,指定为逗号分隔的对,包括“LastCouponDate”和一个连续的日期号。LastCouponDate用于债券的上息票期不规律的情况。在没有指定的FirstCouponDate,一个指定的LastCouponDate决定债券的息票结构。债券的息票结构在年月日截断LastCouponDate,不管它落在哪里,后面只跟随着债券的到期日现金流。

数据类型:

预付款的开始日期,指定为逗号分隔对组成StartDate可以的和一个连续的日期号。StartDate可以是债券实际开始的时间(考虑债券现金流的日期)。若要使仪器向前启动,请指定此日期为未来日期。

数据类型:

工作日约定,指定为逗号分隔的对,由“BusinessDayConvention”以及字符向量或字符串对象。工作日惯例的选择决定了如何对待非工作日。非营业日定义为周末加上任何其他不营业的日期(例如,法定假日)。值:

  • “实际”-非工作时间实际上被忽略了。在非营业日的现金流量被假定在实际日进行分配。

  • “跟随”-假定在一个非营业日的现金流将在下一个营业日分配。

  • “modifiedfollow”-现金流在一个非营业日被假定在下一个营业日分配。但是,如果下一个营业日在不同的月份,则以上一个营业日为准。

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

  • “modifiedprevious”-假定在非营业日的现金流是在前一个营业日分配的。但如前一个营业日在不同的月份,则以下一个营业日为准。

数据类型:字符|细胞|字符串

输出参数

全部折叠

默认概率值,返回为P——- - - - - -2带有日期和相应的累积违约概率值的矩阵。日期与这些相符MarketData,除非是可选的输入参数ProbabilityDates提供。

风险率值,返回为N——- - - - - -2矩阵的日期和相应的危险率值的生存概率模型。日期与这些相符MarketData

请注意

当发现非单调的默认概率(即负危险率)时,将显示一个警告。

更多关于

全部折叠

引导违约概率

违约概率曲线可以从一系列债券市场报价中得到启发。

从市场债券数据中提取某一时期的离散违约概率,用公式表示

P r c e D 年代 c t N × F V × t N + C f × 1 N D 年代 c t × t + 1 N D 年代 c t × R t × t 1 t

地点:

艘渔船——面值

——生存概率

C——优惠券

R——复苏量

f-支付频率(例如半年期息票债券为2次)

默认概率为:

DefaultProbability1- - - - - -SurvivalProbability

参考文献

贾罗,罗伯特·A和斯图尔特·特恩布尔。《受信用风险影响的金融证券衍生品定价》金融杂志》上。50.1, 1995,第53-85页。

[2] Berd, A., Mashal, R., Wang Peili。定义、估计和使用信用期限结构研究报告,雷曼兄弟,2004年。

另请参阅

|(金融工具的工具箱)

主题

介绍了R2017a