从债券价格引导违约概率曲线
[
从债券价格引导违约概率曲线。ProbabilityData
,HazardData
) = bondDefaultBootstrap (ZeroData
,MarketData
,解决
)
使用bondDefaultBootstrap
,您可以:
从市场债券数据中提取某一时期的离散违约概率。
对这些违约概率进行插值,得到用于定价和风险管理的违约概率曲线。
[
添加可选的名称-值对参数。ProbabilityData
,HazardData
) = 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];
计算ProbabilityData
和HazardData
.
国债收益率= [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
ZeroData
- - - - - -零率数据IRDataCurve
对象零利率数据,指定为米
——- - - - - -2
日期和零利率矩阵或IRDataCurve
零速率的对象。对于数组输入,日期必须输入为连续日期号,折扣率必须为小数形式。
当ZeroData
是一个IRDataCurve
对象,ZeroCompounding
和ZeroBasis
是隐式的ZeroData
在函数中是多余的。在这种情况下,在构造时指定这些可选参数IRDataCurve
对象,然后再使用bondDefaultBootstrap
函数。
想了解更多信息IRDataCurve
(金融工具的工具箱)对象,看到创建一个irdataccurve对象(金融工具的工具箱).
数据类型:双
MarketData
- - - - - -债券市场数据债券市场数据,指定为N
——- - - - - -3.
债券到期日、市场价格和票面利率的矩阵。日期必须以连续日期编号输入,市场价格必须为数字值,票面利率必须为小数形式。
请注意
当MarketData
不是按时间升序排序的。
数据类型:双
解决
- - - - - -结算日期结算日期,指定为连续日期编号、日期字符向量、日期时间对象或日期字符串对象。解决
必须早于或等于到期日期MarketData
.
数据类型:双
|字符
|datetime
|字符串
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
[ProbabilityData, HazardData] = bondDefaultBootstrap (ZeroData MarketData,定居,RecoveryRate,复苏,ZeroCompounding, 1)
请注意
任意大小的可选输入N
——- - - - - -1
也是可以接受的大小数组1
——- - - - - -N
,或作为适用于所有合同的单一值。
“RecoveryRate”
- - - - - -治愈率0.4
(默认)|小数恢复速率,指定为逗号分隔对“RecoveryRate”
和一个N
——- - - - - -1
恢复率向量,表示为十进制0
通过1
.
数据类型:双
“ProbabilityDates”
- - - - - -违约概率数据输出日期MarketData
(默认)|串行日期数字|日期特征向量|datetime对象|日期字符串对象默认概率数据的输出日期,指定为逗号分隔的对,由“ProbabilityDates”
和一个P
——- - - - - -1
向量,以日期序号、日期时间对象、日期字符向量或日期字符串对象的形式给出。
数据类型:双
|字符
|datetime
|字符串
“ZeroCompounding”
- - - - - -零曲线的合成频率2
(半年)(默认)|值的整数1
,2
,3.
,4
,6
,12
,或1
零曲线的合成频率,指定为逗号分隔对组成“ZeroCompounding”
和一个N
——- - - - - -1
向量。值:
1
—每年复利
2
- - - - - -半年计息
3.
-每年复利三次
4
-季度复合
6
——每月两次的复合
12
——每月复利
−1
——连续复利计算
数据类型:双
“ZeroBasis”
- - - - - -零曲线的基础0
(实际/实际)(默认)|值的整数0
来13
零曲线的基础,指定为逗号分隔对组成“ZeroBasis”
和上面列出的值一样基础
.
数据类型:双
“RecoveryMethod”
- - - - - -恢复方法“表面”
(默认)|值为的字符向量“presentvalue”
或“表面”
|值为的字符串对象“presentvalue”
或“表面”
恢复方法,指定为由逗号分隔的对组成“RecoveryMethod”
以及值为的字符向量或字符串“presentvalue”
或“表面”
.
“presentvalue”
假设在违约时,债券的价值是其剩余现金流假设现值的给定部分,并以无风险利率贴现。
“表面”
假设债券在收回时收回一定面值的一部分。
数据类型:字符
|字符串
“脸”
- - - - - -票面价值One hundred.
(默认)|数字面值或票面值,指定为逗号分隔的对,由“脸”
和一个NINST
——- - - - - -1
向量的债券。
数据类型:双
“时间”
- - - - - -付款频率2
(默认)|数字值0
,1
,2
,3.
,4
,6
或12
支付频率,指定为逗号分隔对,由“时间”
和一个N
——- - - - - -1
值的向量0
,1
,2
,3.
,4
,6
,或12
.
数据类型:双
“基础”
- - - - - -仪器的日计数基础0
(实际/实际)(默认)|集合的整数[0…13]
|集合中的整数向量[0…13]
日计数基础的仪器,指定为逗号分隔对组成“基础”
一个正整数,用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”
- - - - - -月底规则国旗1
(效果)(默认)|非负整数0
或1
月结束规则标志,指定为逗号分隔对,由“EndMonthRule”
一个非负整数,0
或1
,使用NINST
——- - - - - -1
向量。此规则仅适用于以下情况成熟
是一个月只有30天或更少的月末日期。
0
=忽略规则,即债券息票支付日期总是当月的相同数字日。
1
=设定规则,即债券息票支付日期总是当月的最后一天。
数据类型:双
“IssueDate”
- - - - - -债券发行日期IssueDate
未指定,现金流付款日期由其他输入确定(默认)|串行日期数字|日期特征向量|datetime对象|日期字符串对象债券发行日期,指定为逗号分隔对,由“IssueDate”
和一个N
——- - - - - -1
向量,以日期序号、日期时间对象、日期字符向量或日期字符串对象的形式给出。
数据类型:双
|字符
|datetime
|字符串
“FirstCouponDate”
- - - - - -第一次实际券息日FirstCouponDate
,现金流支付日期由其他输入确定(默认)|串行日期数字第一个实际的优惠券日期,指定为逗号分隔的对,包括“FirstCouponDate”
和一个连续的日期号。FirstCouponDate
用于首次息票期不固定的债券。当FirstCouponDate
和LastCouponDate
都是指定的,FirstCouponDate
优先确定息票支付结构。
数据类型:双
“LastCouponDate”
- - - - - -最后实际息票日LastCouponDate
,现金流支付日期由其他输入确定(默认)|标量的串行日期号码最后一个实际的优惠券日期,指定为逗号分隔的对,包括“LastCouponDate”
和一个连续的日期号。LastCouponDate
用于债券的上息票期不规律的情况。在没有指定的FirstCouponDate
,一个指定的LastCouponDate
决定债券的息票结构。债券的息票结构在年月日截断LastCouponDate
,不管它落在哪里,后面只跟随着债券的到期日现金流。
数据类型:双
StartDate可以的
- - - - - -提前付款的开始日期StartDate可以
,生效日期为解决
日期(默认)|串行日期数字预付款的开始日期,指定为逗号分隔对组成StartDate可以的
和一个连续的日期号。StartDate可以
是债券实际开始的时间(考虑债券现金流的日期)。若要使仪器向前启动,请指定此日期为未来日期。
数据类型:双
“BusinessDayConvention”
- - - - - -工作日约定“实际”
(默认)|带值的字符向量或字符串对象“实际”
,“跟随”
,“modifiedfollow”
,“以前”
或“modifiedprevious”
工作日约定,指定为逗号分隔的对,由“BusinessDayConvention”
以及字符向量或字符串对象。工作日惯例的选择决定了如何对待非工作日。非营业日定义为周末加上任何其他不营业的日期(例如,法定假日)。值:
“实际”
-非工作时间实际上被忽略了。在非营业日的现金流量被假定在实际日进行分配。
“跟随”
-假定在一个非营业日的现金流将在下一个营业日分配。
“modifiedfollow”
-现金流在一个非营业日被假定在下一个营业日分配。但是,如果下一个营业日在不同的月份,则以上一个营业日为准。
“以前”
-假定在非营业日的现金流是在前一个营业日分配的。
“modifiedprevious”
-假定在非营业日的现金流是在前一个营业日分配的。但如前一个营业日在不同的月份,则以下一个营业日为准。
数据类型:字符
|细胞
|字符串
ProbabilityData
-默认概率值默认概率值,返回为P
——- - - - - -2
带有日期和相应的累积违约概率值的矩阵。日期与这些相符MarketData
,除非是可选的输入参数ProbabilityDates
提供。
HazardData
-危险率值风险率值,返回为N
——- - - - - -2
矩阵的日期和相应的危险率值的生存概率模型。日期与这些相符MarketData
.
请注意
当发现非单调的默认概率(即负危险率)时,将显示一个警告。
违约概率曲线可以从一系列债券市场报价中得到启发。
从市场债券数据中提取某一时期的离散违约概率,用公式表示
地点:
艘渔船——面值
问——生存概率
C——优惠券
R——复苏量
f-支付频率(例如半年期息票债券为2次)
默认概率为:
DefaultProbability
=1
- - - - - -SurvivalProbability
贾罗,罗伯特·A和斯图尔特·特恩布尔。《受信用风险影响的金融证券衍生品定价》金融杂志》上。50.1, 1995,第53-85页。
[2] Berd, A., Mashal, R., Wang Peili。定义、估计和使用信用期限结构研究报告,雷曼兄弟,2004年。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。