主要内容

理解利率树模型

介绍

金融工具的工具箱™支持以下利率树:万博1manbetx

  • Black-Derman-Toy (BDT)

  • Black-Karasinski (BK)

  • Heath-Jarrow-Morton (HJM)

  • Hull-White (HW)

  • Cox-Ingersoll-Ross (CIR)

Heath-Jarrow-Morton模型是使用最广泛的模型之一,利率衍生品定价。模型考虑给定初始利率期限结构和规范的远期利率的波动建立一个树代表利率的演变,基于统计过程。为进一步解释,看到这本书造型固定收益证券和利率期权罗伯特·年后)。

Black-Derman-Toy模型是另一个分析模型常用的利率衍生品定价。模型考虑给定初始零率利率期限结构和长期利率的收益率波动的规范建立一个树代表利率的演变。为进一步解释,看到纸”利率的一个因素模型及其应用国债期权”费希尔•布莱克,伊曼纽尔•德曼和威廉玩具。

Hull-White模型包含初始利率期限结构和波动率期限结构构建一个三叉树结合短期利率。结果树用于rate-dependent证券价值利益。在金融工具的工具箱Hull-White模型的实现软件是有限的一个因素。

Black-Karasinski模型是一个因素,对数正态分布Hull-White模型的版本。

Hull-White和Black-Karasinski模型的进一步信息,看到这本书期权、期货和其他衍生品约翰·c·赫尔。

建立一个树的远期利率

远期利率的树是代表进化的基本单位的利率在一个给定的一段时间。本节解释如何使用金融工具的工具箱创建一棵远期利率。

请注意

为了避免不必要的重复,本文档使用HJM和BDT模型来说明利率树的创建和使用。HW和BK模型类似于BDT模型。具体差异存在,它们记录了HW和BK树结构

MATLAB®函数创建树hjmtreebdttree。的hjmtree函数创建的结构、HJMTree,包含时间和远期利率信息浓密的树。的bdttree函数创建一个类似的结构,BDTTree重组树。

这个结构是一个自包含单元,包括利率(发现的树FwdTree场结构)和波动,利率,和时间规范用于建筑这棵树。

这些函数将三个结构作为输入参数:

一个简单的方法来可视化您创建的任何树树状视图函数,以图形化的方式显示树。看到图示的树木和有关信息。树状视图

调用序列

调用语法hjmtreeHJMTree = HJMTree (VolSpec RateSpec TimeSpec)

同样,调用语法bdttreeBDTTree = BDTTree (VolSpec RateSpec TimeSpec)

这些功能需要VolSpec,RateSpec,TimeSpec输入参数:

  • VolSpec是一个结构,指定远期利率波动的过程。您创建VolSpec使用的功能hjmvolspecbdtvolspec

    hjmvolspec函数支持规范的三个万博1manbetx因素。它处理这些模型对利率期限结构的波动:

    • 常数

    • 静止的

    • 指数

    • Vasicek

    • 成比例的

    单因素模型假定利率期限结构是影响单一来源的不确定性。结合多种因素允许您指定不同类型的利率结构的形状和位置的变化。看到hjmvolspec获取详细信息。

    bdtvolspec功能只支持单一的波万博1manbetx动因素。波动在树上对节点之间保持不变。您提供的输入波动值向量的十进制值。看到bdtvolspec获取详细信息。

  • RateSpec的利率规范初始速率曲线。你创建这个结构与功能intenvset。(见利率期限结构建模。)

  • TimeSpec是树布局规范。您创建这个变量的函数hjmtimespecbdttimespec。它代表级别时间和日期之间的映射引用率。这个结构间接决定了层数在树上。

指定波动模型(VolSpec)

因为HJM支持多因素(3万博1manbetx)波动而BDT模型(BK和HW)只支持单一的波动因素,hjmvolspecbdtvolspec功能需要不同的输入并生成不同的输出。有关示例,请参见创建一个HJM波动模型。对BDT例子,看看创建一个BDT波动模型

创建一个HJM波动模型

这个函数hjmvolspec生成的结构VolSpec,它指定的波动过程 σ ( t , T ) 用于远期利率树的创建。在这种背景下资本T代表远期利率的起始时间,t代表了观察时间。波动过程可以由多种因素指定顺序调用函数中创建它。每个因素规范始于一个特征向量指定名称的因素,其次是相关的参数。

HJM波动规范的例子。考虑一个例子,它使用了一个因素,具体地说,一个constant-sigma因素。常数因子规范只需要一个参数,的价值 σ 。在这种情况下,值对应于0.10。

HJMVolSpec = HJMVolSpec (“不变”,0.10)
HJMVolSpec = FinObj:“HJMVolSpec”FactorModels:{“常数”}FactorArgs: {{1 x1细胞}}SigmaShift: 0 NumFactors: 1 NumBranch: 2 PBranch: [0.5000 - 0.5000] Fact2Branch: [1]

NumFactors场的VolSpec结构,VolSpec。NumFactors = 1表明,用于生成的因素VolSpec是一个。的FactorModels表明这是一个领域常数因素,NumBranches字段表示数量的分支。因此,树的每个节点都有两个分支,一个上升,另一个下降。

现在考虑一个双重波动过程由一个比例因子和一个指数的因素。

%指数因子Sigma_0 = 0.1;λ= 1;%的比例因子CurveProp = (0.11765;0.08825;0.06865);CurveTerm = [1;2;3);%建立VolSpecHJMVolSpec = HJMVolSpec (“比例”CurveProp CurveTerm,1 e6,“指数”、Sigma_0λ)
HJMVolSpec = FinObj:“HJMVolSpec”FactorModels:{“比例”“指数”}FactorArgs: {{1 x3细胞}{1 x2细胞}}SigmaShift: 0 NumFactors: 2 NumBranch: 3 PBranch: [0.2500 0.2500 0.5000] Fact2Branch: [2 x3双)

输出表明,使用两个因素波动规范生成。树的每个节点有三个分支。每个分支都有概率为0.25、0.25和0.5,从上到下。

创建一个BDT波动模型

这个函数bdtvolspec生成的结构VolSpec,它指定的波动过程。该函数需要三个输入参数:

  • 估值日期ValuationDate

  • 收益率波动结束日期VolDates

  • 收益率波动值VolCurve

一个可选的第四个参数InterpMethod,可以包含指定插值法。

用于调用语法bdtvolspec是:

BDTVolSpec = BDTVolSpec (ValuationDate VolDates VolCurve,…InterpMethod)

地点:

  • ValuationDate是第一次观察到日期在树上。

  • VolDates是一个向量的日期代表收益率波动结束日期。

  • VolCurve是一个向量的收益率波动值。

  • InterpMethod是使用插值的方法。默认值是线性

BDT波动规范的例子。考虑下面的例子:

ValuationDate = datenum (“01-01-2000”);EndDates = datenum ([“01-01-2001”;“01-01-2002”;“01-01-2003”;“01-01-2004”;“01-01-2005”]);波动率= [2;.19;只要;.17;16);

使用bdtvolspec创建一个波动规范。因为没有显式地指定插值法,函数使用线性违约。

BDTVolSpec = BDTVolSpec (ValuationDate EndDates波动)
BDTVolSpec = FinObj:‘BDTVolSpec ValuationDate: 730486 VolDates: x1双[5]VolCurve: x1双[5]VolInterpMethod:“线性”

指定利率期限结构(RateSpec)

结构RateSpec是一个利率期限结构,定义了树的初始规范远期利率利率。利率期限结构建模解释如何使用这个函数创建这些结构intenvset,考虑到利率,开始和结束日期为每个率和复合值。

率规范创建示例

考虑下面的例子:

复合= 1;率= (0.02;0.02;0.02;0.02);startdate可以= [' 01 - 1月- 2000;' 01 - 1月- 2001;' 01 - 1月- 2002;' 01 - 1月- 2003];EndDates = [' 01 - 1月- 2001;' 01 - 1月- 2002;' 01 - 1月- 2003;' 01 - 1月- 2004];ValuationDate =' 01 - 1月- 2000;RateSpec = intenvset (“复合”,1“利率”率,startdate可以的startdate可以,“EndDates”EndDates,“ValuationDate”ValuationDate)
RateSpec = FinObj:“RateSpec”组合:1盘:x1双[4]利率:x1双[4]EndTimes: x1双[4]开始时间:x1双[4]EndDates: x1双[4]startdate可以:x1双[4]ValuationDate: 730486: 0 EndMonthRule: 1

使用的函数datedisp检查日期中定义的变量RateSpec。例如:

datedisp (RateSpec.ValuationDate) 01 - 1月- 2000

指定的时间结构(TimeSpec)

结构TimeSpec指定利率的时间结构树。这个结构定义了观察时间之间的映射树的每一层和相应的日期。

TimeSpec建立使用吗hjmtimespecbdttimespec函数。这些功能需要三个输入参数:

  • 估值日期ValuationDate

  • 到期日期成熟

  • 复合率复合

例如,用于调用的语法hjmtimespec

TimeSpec = hjmtimespec (ValuationDate、成熟度、复合)

地点:

  • ValuationDate是第一次观察到日期在树上。

  • 成熟是一个向量的日期代表树的现金流的日期。任何与这些到期的仪器现金流落在树节点。

  • 复合时的频率复合年化。

创建一个时间规范

与相同的数据调用时间规范创建函数用于创建利率期限结构,RateSpec构建树的结构,指定时间布局。

HJM时间规范的例子。考虑下面的例子:

成熟= EndDates;HJMTimeSpec = HJMTimeSpec (ValuationDate、成熟度、复合)
HJMTimeSpec = FinObj:‘HJMTimeSpec ValuationDate: 730486成熟度:[4 x1双]复合:1基础:0 EndMonthRule: 1

到期时指定的建筑TimeSpec不需要配合EndDates的间隔RateSpec。自TimeSpec定义了time-date映射树的,利率RateSpec将被内插获得初始利率与期限等于那些TimeSpec

创建一个BDT时间规范。考虑下面的例子:

成熟= EndDates;BDTTimeSpec = BDTTimeSpec (ValuationDate、成熟度、复合)
BDTTimeSpec = FinObj:‘BDTTimeSpec ValuationDate: 730486成熟度:[4 x1双]复合:1基础:0 EndMonthRule: 1

创建树

使用VolSpec,RateSpec,TimeSpec你以前创建的作为输入函数用于创建HJM和BDT树。

创建一个HJM树

%重置的波动因素不变的情况HJMVolSpec = HJMVolSpec (“不变”,0.10);HJMTree = HJMTree (HJMVolSpec RateSpec HJMTimeSpec)
HJMTree = FinObj:“HJMFwdTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1 2 3]TFwd: {[4 x1双][3 x1双][2 x1双][3]}CFlowT: {[4 x1双][3 x1双][2 x1双][4]}FwdTree: {[4 x1双][3 x1x2双][2 x2x2双][1 x4x2双]}

创建一个BDT树

现在使用前面计算值VolSpec,RateSpec,TimeSpec作为输入的函数bdttree创建一个BDT树。

BDTTree = BDTTree (BDTVolSpec RateSpec BDTTimeSpec)
BDTTree = FinObj:“BDTFwdTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1.00 2.00 3.00]TFwd: {[4 x1双][3 x1双][2 x1双][3.00]}CFlowT: {[4 x1双][3 x1双][2 x1双][4.00]}FwdTree: {[1.02] [1.02 - 1.02] [1.01 1.02 1.03] [1.01 1.02 1.02 1.03]}

研究树木

使用模型时,金融工具的工具箱使用树来表示远期利率,价格,等等。在最高的层次上,这些树结构缠绕在他们。所需的结构封装信息解释完全树中包含的信息。

考虑一下这个例子,它使用利率和投资组合MAT-file中的数据deriv.mat包括在工具箱中。

将数据装载到MATLAB工作区。

负载deriv.mat

显示变量的列表从MAT-file加载。

类属性名称大小字节BDTInstSet 1 x1 15956 struct BDTTree 1 x1 5138 struct BKInstSet 1 x1 15946 struct BKTree 1 x1 5904 struct CRRInstSet 1 x1 12434 struct CRRTree 1 x1 5058 struct EQPInstSet 1 x1 12434 struct EQPTree 1 x1 5058 struct HJMInstSet 1 x1 15948 struct HJMTree 1 x1 5838 struct HWInstSet 1 x1 15946 struct HWTree 1 x1 5904 struct ITTInstSet 1 x1 12438 struct ITTTree 1 x1 8862 struct ZeroInstSet 1 x1 10282 struct ZeroRateSpec 1 x1 1580结构

HJM树结构

你现在可以检查在一些细节的内容HJMTree这个文件中包含的结构。

HJMTree
HJMTree = FinObj:“HJMFwdTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1 2 3]TFwd: {[4 x1双][3 x1双][2 x1双][3]}CFlowT: {[4 x1双][3 x1双][2 x1双][4]}FwdTree: {[4 x1双][3 x1x2双][2 x2x2双][1 x4x2双]}

FwdTree包含实际的远期利率树。MATLAB是它作为一个单元阵列,每个细胞数组元素包含树的水平。

其他字段包含其他信息相关口译中的值FwdTree。最重要的是VolSpec,TimeSpec,RateSpec包含波动,分别时间结构和利率结构信息。

第一个节点。观察的远期利率FwdTree。第一个节点代表了估值日期,则= 0

HJMTree.FwdTree {1}
ans = 1.0356 1.0468 1.0523 1.0563

请注意

金融工具的工具箱使用逆的折扣符号在树上远期利率。逆折扣代表资产的当前值的一个因素是增加找到它的未来价值。一般来说,这些因素是折扣的倒数因素。

仔细看看的RateSpec这棵树结构用于生成这些价值观产生。安排一个数组中的值。

[HJMTree.RateSpec。开始时间HJMTree.RateSpec.EndTimesHJMTree.RateSpec.Rates]
ans = 0 1.0000 0.0356 1.0000 2.0000 0.0468 2.0000 3.0000 0.0523 3.0000 4.0000 0.0563

如果你找到相应的逆折扣利率在第三列,你有在树的第一个节点的值。你可以把利率变成逆折扣使用函数rate2disc

盘= rate2disc (HJMTree.TimeSpec.Compounding,HJMTree.RateSpec。率、HJMTree.RateSpec.EndTimesHJMTree.RateSpec.StartTimes);兄弟会= 1. /片
兄弟会= 1.0356 1.0468 1.0523 1.0563

第二个节点。第二个节点代表了一流的观察时间,则= 1。该节点显示两种状态:一个上升,另一个代表代表分支分支向下。

请注意,HJMTree.VolSpec。NumBranch = 2

HJMTree.VolSpec
ans = FinObj:“HJMVolSpec”FactorModels:{“常数”}FactorArgs: {{1 x1细胞}}SigmaShift: 0 NumFactors: 1 NumBranch: 2 PBranch: [0.5000 - 0.5000] Fact2Branch: [1]

检查节点对应的分支。

HJMTree.FwdTree {2} (:,: 1)
ans = 1.0364 1.0420 1.0461

现在检查相应的分支。

HJMTree.FwdTree {2} (:: 2)
ans = 1.0574 1.0631 1.0672

第三个节点。第三个节点代表第二个观察时间,则= 2。该节点包含一个共有四个州,两个代表分支向上,另两个代表分支向下。检查节点对应的利率。

HJMTree.FwdTree {3} (:,: 1)
ans = 1.0317 1.0526 1.0358 1.0568

接下来检查相应的状态。

HJMTree.FwdTree {3} (:: 2)
ans = 1.0526 1.0738 1.0568 1.0781

隔离一个特定的节点。开始在第三个层面,索引树单元阵列中变得复杂,隔离一个特定的节点可以是困难的。这个函数bushpath隔离一个特定节点通过指定的路径节点作为一个向量的分支到达该节点。作为一个例子,考虑节点达成的从根节点开始,以分支,分支,然后另一个分支。鉴于树每个节点只有两个分支,分支对应于一个1和分支对应于一个2。路径up-down-down成为向量[1 2 2]

兄弟会= bushpath (HJMTree。FwdTree [1 2 2])
兄弟会= 1.0356 1.0364 1.0526 1.0674

bushpath返回所有节点利用现货价格的输入参数中指定的路径,第一个根节点对应,最后一个对应到目标节点。

隔离使用直接索引获得相同的节点

HJMTree。FwdTree{4}(:, 3, 2)
ans = 1.0674

正如所料,此单值对应的最后一个元素返回的利率bushpath

您可以使用这些技术与任何类型的树与金融工具的工具箱生成,如远期利率树木或价格树。

BDT树结构

你现在可以检查在一些细节的内容BDTTree结构。

BDTTree
BDTTree = FinObj:“BDTFwdTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1.00 2.00 3.00]TFwd: {[4 x1双][3 x1双][2 x1双][3.00]}CFlowT: {[4 x1双][3 x1双][2 x1双][4.00]}FwdTree: {[1.10] [1.10 - 1.14] [1.10 1.14 1.19] [1.09 1.12 1.16 1.22]}

FwdTree包含实际树率。MATLAB是它作为一个单元阵列,每个细胞数组元素包含树的水平。

其他字段包含其他信息相关口译中的值FwdTree。最重要的是VolSpec,TimeSpec,RateSpec包含波动,分别时间结构和利率结构信息。

看一下RateSpec这棵树结构用于生成这些价值观产生。安排一个数组中的值。

[BDTTree.RateSpec。开始时间BDTTree.RateSpec.EndTimesBDTTree.RateSpec.Rates]
ans = 0 0 0 0 1.0000 0.1000 2.0000 - 0.1100 3.0000 - 0.1200 4.0000 - 0.1250

看看率FwdTree。第一个节点代表了估值日期,则= 0。第二个节点代表则= 1。检查率在第二、第三和第四节点。

BDTTree.FwdTree {2}
ans = 1.0979 - 1.1432

第二个节点代表第一个观察时间,则= 1。该节点包含两种状态,一个代表分支向上(1.0979),另一个代表分支向下(1.1432)。

请注意

该公约是显示在这个文档价格在上面的分支。所以,当显示利率和增加,利率下降上分支在较低的分支。

BDTTree.FwdTree {3}
ans = 1.0976 1.1377 1.1942

第三个节点代表第二个观察时间,t奥林匹克广播服务公司= 2。该节点包含三个州,一个代表分支向上(1.0976),一个代表中间的分支(1.1377),另一个代表分支向下(1.1942)。

BDTTree.FwdTree {4}
ans = 1.0872 1.1183 1.1606 1.2179

第四个节点代表第三个观察时间,则= 3。该节点包含四个州,一个代表分支向上(1.0872),中间两个代表分支(1.11831.1606),另一个代表分支向下(1.2179)。

隔离一个特定的节点。这个函数treepath隔离一个特定节点通过指定的路径节点作为一个向量的分支到达该节点。作为一个例子,考虑节点达成的从根节点开始,以分支,然后分支下来,最后另一个分支。鉴于树每个节点只有两个分支,分支对应于一个1和分支对应于一个2。路径up-down-down成为向量[1 2 2]

兄弟会= treepath (BDTTree。FwdTree [1 2 2])
兄弟会= 1.1000 1.0979 1.1377 1.1606

treepath返回的所有节点的短期利率抽头输入参数中指定的路径,第一个根节点对应,最后一个对应到目标节点。

HW和BK树结构

HW和BK树结构类似于BDT树结构。你可以看到如果你检查样品HW树中包含的文件deriv.mat

负载deriv.mat;HWTree
HWTree = FinObj:“HWFwdTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1.00 2.00 3.00]罗伯特:[731947.00 - 732313.00 732678.00 - 733043.00]CFlowT: {[4 x1双][3 x1双][2 x1双][4.00]}聚合氯化铝:{[3 x1双][3 x3双][3 x5双]}连接:{[2.00][2.00 3.00 4.00][2.00 2.00 3.00 4.00 4.00]}FwdTree: {[1.03] [1.05 1.04 1.02] [1.08 1.07 1.05 1.03 1.01] (1.09 1.08 - 1.06 1.04 - 1.02)

所有字段的结构类似于BDT同行。有两个额外的字段没有出现在BDT:聚合氯化铝连接。的聚合氯化铝字段表示发生概率树中的每个节点的每个分支。的连接字段描述给定树的节点的连接级别树节点下一个级别。

聚合氯化铝字段。虽然BDT模型和单因素HJM平等为每个分支节点概率,HW和BK。HW和BK树,聚合氯化铝指出特定分支的可能性将在从一个节点转移到另一个节点。

聚合氯化铝字段由一个单元阵列每树一个细胞水平。每个细胞都是一个3——- - - - - -NUMNODES数组的概率与第一行代表一个运动,中间行代表中间运动的概率,和最后一行的概率下降运动。

作为一个例子,考虑的前两个元素聚合氯化铝字段的结构,对应于第一(根)和第二层次树的。

HWTree.Probs {1}
0.16666666666667 0.66666666666667 0.16666666666667
HWTree.Probs {2}
0.12361333418768 0.16666666666667 0.21877591615172 0.65761074966060 0.66666666666667 0.65761074966060 0.21877591615172 0.16666666666667 0.12361333418768

阅读从上到下的值HWTree.Probs {1}对应起来,中间,根节点的概率。

HWTree.Probs {2}是一个3——- - - - - -3矩阵的值。第一列表示顶级节点,第二列表示中间节点,最后列表示底部节点。与根节点,第一,第二,第三行保存的值,中间,每个节点分支。

正如所料,在任何节点的概率的总和等于1。

sum (HWTree.Probs {2})
1.0000 1.0000 1.0000

连接领域。其他字段区分HW和BK BDT树结构是树结构连接。这个字段描述了每个节点在给定级别的节点连接到下一个级别。这个领域需要来自非标准分支在树上的可能性。

连接的HW树结构由一个单元阵列每树一个细胞的水平。

HWTree.Connect
ans = [2] [1 x3双][1 x5双]

每个单元格都包含一个1——- - - - - -NUMNODES向量。向量中的每个值与相应的树中的一个节点水平和代表未来树的索引节点,中间分支节点的连接。

如果你减去1中包含的值连接,你揭示的索引节点连接到下一个水平的分支。如果你加入1你的指数的值,对应的分支。

作为一个例子,考虑HWTree.Connect {1}:

HWTree.Connect {1}
ans = 2

这表明中间分支的根节点连接到第二个(从顶部)节点的下一个层次,如预期。如果减去1从这个值,你获得1告诉你,分支到顶部节点。如果你加入1,你获得3指向最后一个节点的树的第二层次。

现在考虑在这个例子:3级

HWTree.Connect {3}
2 2 3 4 4

在这个级别,有不标准的分支。这可以很容易认出,因为中间的两个节点连接到相同的节点上。

可视化,考虑下面的插图的树。

这里显然有不标准的第三个层次树的分支,在顶部和底部节点。第一和第二节点连接到相同的三个节点的下一个阶段。类似的分支发生在和next-to-bottom节点树的底部。

另请参阅

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

相关的例子

更多关于