floatbybk
布莱克-卡拉辛斯基利率树的价格浮动利率票据
描述
例子
使用Black-Karasinski树为浮动利率票据定价
使用布莱克-卡拉辛斯基利率树为20个基点的浮动利率票据定价。
加载文件deriv.mat
,它提供了BKTree
.的BKTree
结构包含为票据定价所需的时间和利率信息。
负载deriv.mat;
使用所需的参数定义浮动利率票据。其他参数使用默认值。
传播= 20;解决= datetime(2005、1、1);成熟= datetime(2006、1、1);
使用floatbybk
计算纸币的价格。
价格= floatbybk(BKTree,扩散,结算,到期)
警告:浮动范围票据是在树估值日期而不是结算。
价格= 100.3825
为摊销浮动利率票据定价
为摊销浮动利率票据定价主要
输入参数来定义摊销计划。
创建RateSpec
.
率= (0.03583;0.042147;0.047345;0.052707;0.054302);ValuationDate = datetime(2011、11、15);startdate可以= ValuationDate;EndDates = [datetime(2012,11,15);datetime(2013、11、15);datetime(2014、11、15); datetime(2015,11,15) ; datetime(2016,11,15)]; Compounding = 1; RateSpec = intenvset(“ValuationDate”ValuationDate,startdate可以的startdate可以,...“EndDates”EndDates,“利率”率,“复合”复合)
RateSpec =结构体字段:FinObj: 'RateSpec'复合:1 Disc: [5x1 double] Rates: [5x1 double] EndTimes: [5x1 double] StartTimes: [5x1 double] EndDates: [5x1 double] StartDates: 734822 ValuationDate: 734822 Basis: 0 EndMonthRule: 1
使用以下数据创建浮动利率工具:
解决= datetime(2011、11、15);成熟= datetime(2015、11、15);传播= 15;
定义浮动利率票据摊销计划。
Principal ={{datetime(2012,11,15) 100;datetime(2013,11,15) 70;datetime(2014,11,15) 40;datetime(2015,11,15) 10}};
构建BK树,假设波动率为10%。
VolDates = [datetime(2012,11,15);datetime(2013、11、15);datetime(2014、11、15);datetime(2015、11、15);datetime(2016、11、15);datetime(2017、11、15)];VolCurve = 0.1;AlphaDates = datetime(2017、11、15);AlphaCurve = 0.1;BKVolSpec = BKVolSpec (RateSpec。ValuationDate, VolDates, VolCurve,...AlphaDates AlphaCurve);BKTimeSpec = BKTimeSpec (RateSpec。ValuationDate,VolDates, Compounding); BKT = bktree(BKVolSpec, RateSpec, BKTimeSpec);
计算摊销浮动利率票据的价格。
价格= floatbybk(BKT,息差,结算,到期,“校长”校长)
价格= 100.3059
用浮动利率票据给衣领定价
为带有浮动利率票据的项圈定价癸酸盐
而且FloorRate
输入参数来定义项圈定价。
使用以下数据对有价浮动利率票据组合进行定价:
率= (0.0287;0.03024;0.03345;0.03861;0.04033);ValuationDate = datetime (2012 4 1);startdate可以= ValuationDate;EndDates = [datetime(2013,4,1);datetime (2014 4 1);datetime (2015 4 1); datetime(2016,4,1) ; datetime(2017,4,1)]; Compounding = 1;
创建RateSpec
.
RateSpec = intenvset (“ValuationDate”ValuationDate,startdate可以的startdate可以,...“EndDates”EndDates,“利率”率,“复合”、复合);
构建BK树,假设波动率为5%。
VolDates = [datetime(2013,4,1);datetime (2014 4 1);datetime (2015 4 1);datetime (2016 4 1);datetime (2017 4 1);datetime (2018 4 1)];VolCurve = 0.05;AlphaDates = datetime(2018、11、15);AlphaCurve = 0.1;BKVolSpec = BKVolSpec (RateSpec。ValuationDate, VolDates, VolCurve,...AlphaDates AlphaCurve);BKTimeSpec = BKTimeSpec (RateSpec。ValuationDate,VolDates, Compounding); BKT = bktree(BKVolSpec, RateSpec, BKTimeSpec);
创建浮动利率票据工具。
解决= datetime (2012 4 1);成熟= datetime (2016 4 1);传播= (15;10);校长= 100;
计算两个香草飞蚊的价格。
价格= floatbybk(BKT,息差,结算,到期)
价格=2×1100.5519 - 100.3680
计算有套期浮动利率票据的价格。
CapStrike = {{datetime(2013,4,1) 0.045;datetime(2014,4,1) 0.05;...datetime (2015 4 1) 0.06};0.06};FloorStrike = {{datetime(2013,4,1) 0.035;datetime (2014 4 1) 0.04;...datetime (2015 4 1) 0.05};0.03};= floatbybk(BKT,息差,结算,到期,...“癸酸盐CapStrike,“FloorRate”FloorStrike)
PriceCollared =2×1102.8537 - 100.4918
当重置日期不是树级别日期时,为浮动利率票据定价
当使用floatbybk
为浮动利率票据定价时,有时BK树时间规格中指定的日期与现金流日期不一致。
使用以下数据为浮动利率票据定价:
ValuationDate = datetime(2013、9、13);ForwardRatesVector = [0.0001;0.0001;0.0010;0.0015);EndDatesVector = [datetime(2013、12、13);datetime(2014、3、14);datetime(2014、6、13);datetime(2014、9、13)];
创建RateSpec
.
RateSpec = intenvset (“ValuationDate”ValuationDate,startdate可以的,...ValuationDate,“EndDates”EndDatesVector,“利率”ForwardRatesVector,“复合”1);
构建BK树。
Volcurve = 0.1;α= 0.01;BKVolatilitySpec = bkvolspec (RateSpec。ValuationDate,...EndDatesVector Volcurve,...EndDatesVectorα);BKTimeSpec = BKTimeSpec (RateSpec。ValuationDate,EndDatesVector, 1); BKT = bktree(BKVolatilitySpec, RateSpec, BKTimeSpec);
使用以下数据创建浮动利率票据工具;
传播= 0;成熟= datetime(2014、6、13);重置= 4;
计算浮动利率票据的价格。
价格= floatbybk(BKT,价差,利率。ValuationDate,...成熟,“FloatReset”重置)
警告:并不是所有的现金流都与树一致。结果将是近似的。使用floatengbytrintree错误(第319行)工具“1”具有跨树节点的现金流日期。floatbybk错误(第136行)[Price, PriceTree, CFTree] = floatengbytrintree(BKTree, Spread, Settle, Maturity, OArgs{:});
这个错误表明,不可能确定用于计算重置日期支付的适用利率,因为无法计算所需的适用利率(由于树节点的重组,信息丢失了)。注意,如果FRN的重置周期跨越多个树级别,由于树的重组性质,计算支付将变得不可能。也就是说,连接两个连续的重置日期的树路径不能唯一确定,因为连接两个支付日期的可能路径不止一条。最简单的解决方案是将树级别放在工具的现金流日期,这是通过指定BKTimeSpec
.在树级别之间设置重置日期也是可以接受的,只要树级别上有重置日期。
要从这个错误中恢复过来,可以建立一个与仪器对齐的树。
基础= intenvget (RateSpec,“基础”);加工= intenvget (RateSpec,“EndMonthRule”);resetDates = cfdates(ValuationDate, Maturity,reset,Basis,EOM);BKTimeSpec = BKTimeSpec (RateSpec.ValuationDate resetDates,重置);BKT = bktree(bk挥发量,速率,时间);价格= floatbybk(BKT,价差,利率。ValuationDate,...成熟,“FloatReset”重置)
价格= 100.0004
输入参数
BKTree
- - - - - -利率结构
结构
利率树形结构,由bktree
数据类型:结构体
传播
- - - - - -高于参考汇率的基点数
向量
高于参考汇率的基点数,用a表示NINST
——- - - - - -1
向量。
数据类型:双
解决
- - - - - -结算日期
datetime数组|字符串数组|日期特征向量
结算日期,指定为标量或NINST
——- - - - - -1
Vector,使用日期时间数组、字符串数组或日期字符向量。
要支持现有代码,floatbybk
也接受序列号作为输入,但不建议使用。
的解决
每个浮动利率票据的日期设置为ValuationDate
BK树的。浮动利率票据参数解决
将被忽略。
成熟
- - - - - -到期日
datetime数组|字符串数组|日期特征向量
到期日期,指定为NINST
——- - - - - -1
向量,使用日期时间数组、字符串数组或日期字符向量表示每个浮动利率票据的到期日期。
要支持现有代码,floatbybk
也接受序列号作为输入,但不建议使用。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:(价格、PriceTree) = floatbybk (BKTree,扩散,解决,成熟,“基础”,3)
FloatReset
- - - - - -每年支付的频率
1
(默认)|向量
每年支付的频率,用逗号分隔的对表示,由“FloatReset”
和一个NINST
——- - - - - -1
向量。
请注意
浮动利率票据(FRNs)的支付取决于重置日期之间的实际利率。如果FRN的重置周期跨越一个以上的树级别,由于树的重组性质,计算支付将变得不可能。也就是说,连接两个连续的重置日期的树路径不能唯一确定,因为连接两个支付日期的可能路径不止一条。
数据类型:双
基础
- - - - - -天计算基础
0
(实际/实际)(默认)|整数的0
来13
日计数基,表示年化输入正向汇率树时使用的基,指定为逗号分隔的对,由“基础”
和一个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
有关更多信息,请参见基础.
数据类型:双
主要
- - - - - -名义本金金额或本金价值表
One hundred.
(默认)|向量或单元格数组
名义本金金额,以逗号分隔的对表示,由“校长”
以及一个向量或单元格数组。
主要
接受一个NINST
——- - - - - -1
向量或NINST
——- - - - - -1
单元格数组,其中单元格数组的每个元素都是aNumDates
——- - - - - -2
单元格数组,第一列是日期,第二列是其相关的名义主值。日期表示主值有效的最后一天。
数据类型:细胞
|双
选项
- - - - - -衍生品定价期权结构
结构
衍生品期权定价结构,具体由逗号分隔的一对组成“选项”
一个结构使用derivset
.
数据类型:结构体
EndMonthRule
- - - - - -生成日期的月末规则标志成熟
月末的日期是否只有30天或更少
1
(效果)(默认)|非负整数[0, 1]
生成日期的月末规则标志成熟
一个月的月底日期是否有30天或更少的天,指定为逗号分隔的对,由“EndMonthRule”
和一个非负整数[0
,1
)使用NINST
——- - - - - -1
向量。
0
= Ignore规则,这意味着付款日期总是当月的同一天。1
=设置规则,这意味着支付日期总是每月的最后一天。
数据类型:逻辑
AdjustCashFlowsBasis
- - - - - -标记以根据实际期间日计数调整现金流
假
(默认)|的价值0
(虚假的)或1
(真正的)
标记以根据实际的期间日计数调整现金流,指定为逗号分隔的对,由“AdjustCashFlowsBasis”
和一个NINST
——- - - - - -1
值为的逻辑向量0
(虚假的)或1
(真正的)。
数据类型:逻辑
假期
- - - - - -用于计算工作日的假日
如果没有指定,默认是使用holidays.m
(默认)|MATLAB®日期
假日用于计算工作日,指定为逗号分隔的对,由“假期”
和MATLAB数据使用NHolidays
——- - - - - -1
向量。
数据类型:datetime
BusinessDayConvention
- - - - - -工作日约定
实际
(默认)|特征向量|字符向量的单元格数组
工作日约定,指定为逗号分隔的对,由“BusinessDayConvention”
还有一个字符向量aN
——- - - - - -1
工作日约定的字符向量单元格数组。营业日约定的选择决定了如何处理非营业日。非营业日的定义是周末加上任何其他不营业的日期(如法定假日)。值:
实际
-非工作日被有效地忽略。非营业日的现金流假定在实际日分配。遵循
-非营业日的现金流假定在下一个营业日分配。modifiedfollow
-非营业日的现金流假定在下一个营业日分配。但是,如果下一个工作日在不同的月份,则采用上一个工作日。以前的
-非营业日的现金流假定在前一个营业日分配。modifiedprevious
-非营业日的现金流假定在前一个营业日分配。但是,如果上一个工作日在不同的月份,则采用下一个工作日。
数据类型:字符
|细胞
癸酸盐
- - - - - -年盖率
小数
年上限利率,用逗号分隔的对表示,由“癸酸盐
和一个NINST
——- - - - - -1
十进制年率或NINST
——- - - - - -1
单元格数组,其中每个元素都是NumDates
——- - - - - -2
单元格数组,单元格数组的第一列是日期,第二列是相关的上限率。日期表示上限利率有效的最后一天。
数据类型:双
|细胞
FloorRate
- - - - - -地板年率
小数
年最低费率,以逗号分隔的一对,由“FloorRate”
和一个NINST
——- - - - - -1
十进制年率或NINST
——- - - - - -1
单元格数组,其中每个元素都是NumDates
——- - - - - -2
单元格数组,单元格数组的第一列是日期,第二列是相关的最低利率。日期表示最低利率有效的最后一天。
数据类型:双
|细胞
输出参数
价格
-时间0时的预期浮动利率票据价格
向量
时间0时的预期浮动利率票据价格,返回为NINST
——- - - - - -1
向量。
PriceTree
-仪器价格树形结构
结构
仪器价格的树形结构,返回为MATLAB树结构,包含仪器价格和累计利息的向量,以及每个节点的观测时间向量。在PriceTree
:
PriceTree。PTree
包含干净的价格。PriceTree。AITree
包含应计利息。PriceTree.tObs
包含观察时间。PriceTree。连接
包含连通性向量。单元格数组中的每个元素描述该级别的节点如何连接到下一级别的节点。对于给定的树级别,有NumNodes
元素,它们包含中间分支连接到的下一层节点的索引。从这个值中减去1表示上行分支连接到的地方,加上1表示下行分支连接到的地方。PriceTree。聚合氯化铝
包含概率数组。单元格数组的每个元素都包含关卡每个节点的向上、中间和向下迁移概率。
更多关于
浮动利率注意
一个浮动利率注意是一种类似债券的证券,但票据的利率定期重置,相对于参考指数利率,以反映市场利率的波动。
版本历史
之前介绍过的R2006aMATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。