主要内容

定价和套期保值组合使用Black-Karasinski模型

这个例子演示了如何使用MATLAB®创建一个利率衍生品的证券投资组合,使用Black-Karasinski利率模型和价格。示例还显示了一些对冲策略减少暴露于市场走势。

创建基于报告数据的利率期限结构

结构RateSpec是一个利率期限结构,定义了树的初始速率规范率。使用年度零息利率的信息在下表中填充RateSpec结构。

从对2007年2月27日2008年2月27日0.0493 0.0459 2007年2月27日2009年2月27日2007年2月27日2010年2月27日0.0450 0.0446 2007年2月27日2012年2月27日2007年2月27日2014年2月27日0.0445 0.0450 2007年2月27日2017年2月27日2007年2月27日2027年2月27日0.0473

这个数据可以从美国联邦储备理事会(美联储,fed)检索统计发布页面使用数据处理工具箱™。在这种情况下,数据处理工具箱™将连接到弗雷德®和拉回以下国库券的利率。

术语符号= = = = = = = = = = = = = 1 = DGS1 2 = 3 = DGS3 DGS2 5 = DGS5 7 = DGS7 10 = DGS10 20 = DGS20

创建连接对象:

c =弗雷德;

创建符号获取列表:

FredNames = {“DGS1”;% 1年“DGS2”;% 2年“DGS3”;% 3年“DGS5”;% 5年“DGS7”;% 7年“DGS10”;% 10年“DGS20”};% 20年

定义条款:

条款= [1;% 1年2;% 2年3;% 3年5;% 5年7;% 7年10;% 10年20);% 20年

设置StartDate可以2007年2月27日:

StartDate可以= datenum(2月- 27 - 2007);
FredRet =获取(c FredNames StartDate可以);

设置ValuationDate基于StartDate可以:

ValuationDate = StartDate可以;
EndDates = [];
率= [];

创建EndDates:

idx = 1:长度(FredRet)
%的利率与2月27日,2007年。所有弗雷德率%作为夭折率=(利率;…FredRet (idx) . data (1、2) / 100);
%确定EndDates通过添加术语的% StartDate可以EndDates = [EndDates;…轮(datenum (…年(StartDate可以)+ (idx, 1),…月(StartDate可以),……天(StartDate可以))));
结束

使用的函数intenvset创建RateSpec使用以下数据:

复合= 1;StartDate可以=”2007年- 2月27日;率= (0.0493;0.0459;0.0450;0.0446;0.0446;0.0450;0.0473);EndDates = {”2008年- 2月27日;”2009年- 2月27日;”2010年- 2月27日;”2012年- 2月27日;”2014年- 2月27日;”2017年- 2月27日;”2027年- 2月27日};ValuationDate = StartDate可以;RateSpec = intenvset (“复合”复合,startdate可以的StartDate可以,“EndDates”EndDates,“利率”率,“ValuationDate”ValuationDate)
RateSpec =结构体字段:FinObj:“RateSpec”组合:1盘:x1双[7]利率:x1双[7]EndTimes: x1双[7]开始时间:x1双[7]EndDates: x1双[7]startdate可以:733100 ValuationDate: 733100: 0 EndMonthRule: 1

指定波动模型

创建结构VolSpec指定与以下数据波动的过程。

波动率= (0.011892;0.01563;0.02021;0.02125;0.02165;0.02065;0.01803);α= (0.0001);VolSpec = bkvolspec (ValuationDate EndDates,波动性,EndDates(结束),α)
VolSpec =结构体字段:FinObj:“BKVolSpec”ValuationDate: 733100 VolDates: x1双[7]VolCurve: x1双[7]AlphaCurve: 1.0000 e-04 AlphaDates: 740405 VolInterpMethod:“线性”

指定的时间结构树

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

TimeSpec = bktimespec (ValuationDate EndDates)
TimeSpec =结构体字段:FinObj:“BKTimeSpec”ValuationDate: 733100成熟度:[7 x1双]复合:1基础:0 EndMonthRule: 1

创建BK树

使用前面计算的值RateSpec,VolSpec,TimeSpec创建BK树。

BKTree = BKTree (VolSpec RateSpec TimeSpec)
BKTree =结构体字段:FinObj:“BKFwdTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1 2 3 5 7 10]罗伯特:[733100 733465 733831 734196 734926 735657 736753]CFlowT: {1} x7细胞聚合氯化铝:{1}x6细胞连接:{[2][2 3 4][2 3 4 5 6][2 3 3 4 5 5 6][2 3 4 5 6 7 8][2 2…]}FwdTree: {1} x7细胞

可视化的利率进化沿着树通过查看输出结构BKTree。这个函数bktree返回一个逆折扣树,您可以转换成一个树的利率cvtree函数。

BKTreeR = cvtree (BKTree)
BKTreeR =结构体字段:FinObj:“BKRateTree”VolSpec: [1 x1 struct] TimeSpec: [1 x1 struct] RateSpec: [1 x1 struct]则:[0 1 2 3 5 7 10]罗伯特:[733100 733465 733831 734196 734926 735657 736753]CFlowT: {1} x7细胞聚合氯化铝:{1}x6细胞连接:{[2][2 3 4][2 3 4 5 6][2 3 3 4 5 5 6][2 3 4 5 6 7 8][2 2…]}RateTree: {1} x7细胞

看上面,中下游分支树的路径。

OldFormat = get (0,“格式”);格式%速度根节点:RateRoot = trintreepath (BKTreeR, 0)
RateRoot = 0.0481
%的利率上分支:RatePathUp = trintreepath (BKTreeR [1 1 1 1 1 1])
RatePathUp =7×10.0481 0.0425 0.0446 0.0478 0.0510 0.0555 0.0620
%的利率以及中间分支:RatePathMiddle = trintreepath (BKTreeR [2 2 2 2 2 2])
RatePathMiddle =7×10.0481 0.0416 0.0423 0.0430 0.0436 0.0449 0.0484
%的利率在较低的分支:RatePathDown = trintreepath (BKTreeR [3 3 3 3 3 3])
RatePathDown =7×10.0481 0.0408 0.0401 0.0388 0.0373 0.0363 0.0378

您还可以显示一个图形表示树的研究交互式地利率树的节点,直到成熟。这个函数树状视图显示速度的结构树在左边窗口中。树可视化在正确的窗口是空白,但通过选择/和点击节点可以检查率沿路径。

treeview (BKTreeR);

图树查看器包含两个坐标轴对象和其他对象类型的uicontrol。坐标轴对象1包含137行类型的对象。对象2轴是空的。

创建一个乐器组合

创建两个债券组成的投资组合工具和一个选择5%的债券。

%两个键CouponRate = [0.04, 0.05];解决=2007年2月27日的;成熟= {2009年2月27日的;2010年2月27日的};时间= 1;%的美国选择5%的债券OptSpec = {“电话”};罢工= 98;ExerciseDates =2010年2月27日的;AmericanOpt = 1;InstSet = instadd (“债券”CouponRate定居,成熟时期);InstSet = instadd (InstSet,“OptBond”2 OptSpec罢工,ExerciseDates AmericanOpt);%分配名称和持有资产= [10;15;3);名称= {“4%的债券”;“5%的债券”;“选择98”};InstSet = instsetfield (InstSet,“指数”1:3,的字段名,{“数量”},“数据”、控股);InstSet = instsetfield (InstSet,“指数”1:3,的字段名,{“名字”},“数据”、名称);

检查工具的集合中包含的变量InstSet

instdisp (InstSet)
指数类型CouponRate结算期限为基础EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate可以面对数量名称1键0.04 2009年- 2007年2月27日- 2月27日1 0 1南南南南100 10 4%键2键0.05 2010年- 2007年2月27日- 2月27日1 0 1南南南南100 15 5%债券指数类型UnderInd OptSpec罢工ExerciseDates AmericanOpt数量名称3 OptBond 2拨打98 - 2月27日2010 98 3选项

价格使用BK的投资组合模型

计算投资组合中的每个工具的价格。

(价格、PTree) = bkprice (BKTree InstSet)
价格=3×198.8841 101.3470 3.3470
PTree =结构体字段:FinObj:“BKPriceTree”PTree:{1×8细胞}AITree:{1×8细胞}ExTree:{1×8细胞}则:[0 1 2 3 5 7 10 20]连接:{[2][2 3 4][2 3 4 5 6][2 3 3 4 5 5 6][2 3 4 5 6 7 8][2 2 3…]}聚合氯化铝:{1}x6细胞

价格在输出向量价格对应的价格在观测时间零(=0),它被定义为利率的估值日期树。

价格向量的第一个元素,98.884,代表第一个仪器的价格(4%的债券);第二个元素,101.347,代表第二个仪器的价格(5%的债券),和3.347代表美式看涨期权的价格。

您还可以显示一个图形表示的价格树检查价格树的节点,直到成熟。

treeview (PTree InstSet);

图树查看器包含两个坐标轴对象和其他对象类型的uicontrol。坐标轴对象1包含155行类型的对象。对象2轴是空的。

添加更多的仪器现有的投资组合

工具添加到现有的投资组合:帽,地板,浮动利率债券,香草交换和可卖回的可赎回债券。

%的帽子StrikeC = 0.035;InstSet = instadd (InstSet,“帽子”StrikeC定居,2010年2月27日的);%的地板上StrikeF = 0.05;InstSet = instadd (InstSet,“地板”StrikeF定居,2009年2月27日的);%浮动利率债券InstSet = instadd (InstSet,“浮”30岁,2009年2月27日的);%香草交换LegRate = (0.04 - 5);InstSet = instadd (InstSet,“交换”LegRate定居,2010年2月27日的);%可卖回的和可赎回债券InstSet = instadd (InstSet,“OptEmBond”CouponRate定居,2010年2月27日的,{“把”;“电话”},罢工,2010年2月27日的,“AmericanOpt”,1“时间”1);%过程名称和持有资产= [15;5,8;7;9;4);名称= {“3.5%上限”;“5%楼”;“30 bp浮动”;“4% / 5 bp交换”;“PuttBond”;“CallBond”};InstSet = instsetfield (InstSet,“指数”9,的字段名,{“数量”},“数据”、控股);InstSet = instsetfield (InstSet,“指数”9,的字段名,{“名字”},“数据”、名称);

检查工具的集合中包含的变量InstSet

instdisp (InstSet)
指数类型CouponRate结算期限为基础EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate可以面对数量名称1键0.04 2009年- 2007年2月27日- 2月27日1 0 1南南南南100 10 4%键2键0.05 2010年- 2007年2月27日- 2月27日1 0 1南南南南100 15 5%债券指数类型UnderInd OptSpec罢工ExerciseDates AmericanOpt数量名称3 OptBond 2拨打98 - 2月27日2010年1 98指数期权类型罢工解决成熟度CapReset基础主体数量名4帽0.035 2010年- 2007年2月27日- 2月27日1 0 100 15 3.5%股指数类型罢工解决成熟度FloorReset基础主体数量名5楼0.05 2009年- 2007年2月27日- 2月27日1 0 100 5 5%地板指数类型传播解决成熟度FloatReset基础主要EndMonthRule癸酸盐FloorRate数量名称6浮动30 2009年- 2007年2月27日- 2月27日1 0 100 1正负无穷到8 30 bp浮动指数类型LegRate解决成熟度LegReset基础主要LegType EndMonthRule StartDate可以量名称7交换(0.04 - 5)2010年- 2007年2月27日- 2月27日(南)0 100(南)1南7 4% / 5 bp互换指数类型CouponRate解决成熟度OptSpec罢工ExerciseDates时期基础EndMonthRule IssueDate FirstCouponDate LastCouponDate StartDate可以面对AmericanOpt数量名称8 OptEmBond 0.04 2010年- 2007年2月27日- 2月27日将98年2月27日- 2月27 - 2007 - 2010 1 0 1南南南南100 1 9 PuttBond 9 OptEmBond 0.05 2010年- 2007年2月27日- 2月27日拨打98 2010年- 2007年2月27日- 2月27日1 0 1南南南南100 1 4 CallBond

套期保值

套期保值背后的想法是减少暴露于市场走势。作为底层的变化,仪器形成投资组合的比例可能需要调整所需的范围内保持敏感。

使用BK模型计算敏感性。

(δ,γ,织女星,价格)= bksens (BKTree InstSet);

获取当前的投资组合。

资产= instget (InstSet,的字段名,“数量”);

创建一个矩阵的敏感性。

敏感性=(δ伽马Vega);

的每一行敏感性矩阵与一个不同的乐器组合,和每列有不同的灵敏度测量。

格式银行disp([价格持有敏感性])
98.88 10.00 -185.47 528.47 0 0 0 101.35 15.00 -277.51 1045.05 3.35 3.00 -223.52 11843.32 2.77 15.00 250.04 2921.11 -0.00 0.75 5.00 -132.97 11566.69 100.56 8.00 -0.80 2.02 0 0 -1.53 7.00 -272.08 1027.85 0.00 98.60 9.00 -168.92 21712.82 98.00 4.00 -53.99 -10798.27 0

上面的第一列是美元每个仪器的单价,第二列是每个仪器的合同的数量,第三,第四,第五列是美元δ,γ,织女星敏感性。

当前的投资组合的敏感性是一种加权平均的工具组合。

TargetSens =持有' *敏感性
TargetSens =1×3-7249.21 317573.92 -0.00

获得一个中立的敏感性组合使用hedgeslf

假设你想获得一个三角洲,γ和织女星中性的投资组合。这个函数hedgeslf发现最近的重新分配投资组合的金融工具是自筹经费(维持恒定的投资组合价值)。

(Sens、Value1、数量)= hedgeslf(敏感性、价格、集团)
Sens =3×10.00 -0.00 -0.00
Value1 = 4637.54
数量=9×110.00 5.26 -5.11 7.06 -3.05 12.45 -7.36 8.47 10.37

这个函数hedgeslf返回组合美元敏感性(Sens),重新平衡投资组合的价值(Value1为每个乐器)和新分配(数量)。如果Value0Value1代表投资组合价值调整之前和之后,您可以验证通过比较成本组合值。

Value0 =持有' *价格
Value0 = 4637.54

在这个例子中,投资组合完全对冲(同步三角洲、γ和织女星中立)和自筹经费(组合平衡(之前和之后的值Value0Value1)是相同的。

添加约束来对冲投资组合

假设您想要的地方上界和下界的个人工具组合。假设你想要绑定的位置内的所有仪器+ / - 11合同。

应用这些限制不允许当前位置在第五和第八仪器。所有其他仪器目前在上/下范围内。

%指定上下界限下界= (-11 -11 -11 -11 -11 -11 -11 -11 -11);UpperBounds = [11 11 11 11 11 11 11 11 11);%使用函数portcons构建约束ConSet = portcons (“AssetLims”下界,UpperBounds);%的约束应用于组合(Sens、价值Quantity1) = hedgeslf(敏感性、价格、控股、[]ConSet)
Sens =3×10 0 0
值= 0
Quantity1 =9×10 0 0 0 0 0 0 0 0

观察到的hedgeslf函数执行第五和第八仪器,界限和组合仍然是完全对冲和自筹经费。

集(0,“格式”,OldFormat);

另请参阅

|

相关的例子

更多关于