使用地板校准赫尔-怀特树
[
校准的α
,σ
,OptimOut
) = hwcalbyfloor (RateSpec
,MarketStrike
MarketMaturity
,MarketVolatility
)α
(均值回归)σ
(波动性)使用地板市场数据和赫尔-怀特模型使用整个地板表面。
赫尔-怀特校正功能(hwcalbyfloor
和hwcalbycap
)支金宝app持三种模式:黑色(默认),Bachelier或Normal,移位黑色。有关更多信息,请参见的可选参数转变
和模型
.
[
估计,α
,σ
,OptimOut
= hwcalbyfloor (RateSpec
,MarketStrike
MarketMaturity
,MarketVolatility
,罢工
,解决
,成熟
)α
(均值回归)σ
(波动率)使用底部市场数据和赫尔-怀特模型,使用额外的可选输入参数,在特定的成熟度/波动率为底部定价罢工
,解决
,成熟
.
罢工
,解决
,成熟
参数被指定为校准到市场波动表面的一个特定点。如果省略,则对所有市场仪器进行校准
以Hull-White模型为例进行标定罢工
,解决
,成熟
输入参数,请参阅利用市场数据校准赫尔白模型.
这个例子展示了如何使用hwcalbyfloor
输入参数为MarketStrike
,MarketMaturity
,MarketVolatility
使用整个地板波动面来校准HW模型。
涵盖12个到期日期的两次打击的市场波动下限数据。
重置= 4;MarketStrike = (0.0590;0.0790);MarketMaturity = {“21 - 3月- 2008”;截止2008年6月21日的;“21 - 9 - 2008”;”21日- 12月- 2008;“21 - 3月- 2009”;截止2009年6月21日的;“21 - 9 - 2009”;”21日- 12月- 2009;“21 - 3月- 2010”;截止2010年6月21日的;“21 - 9 - 2010”;”21日- 12月- 2010};MarketMaturity = datenum (MarketMaturity);市场波动率= [0.1533 0.1731 0.1727 0.1752 0.1809 0.1800 0.1805 0.1802...0.1735 0.1757 0.1755 0.1755;0.1526 0.1730 0.1726 0.1747 0.1808 0.1792 0.1797 0.1794...0.1733 0.1751 0.1750 0.1745];
绘制市场波动面。
[AllMaturities, AllStrikes] = meshgrid (MarketMaturity MarketStrike);图;冲浪(AllMaturities AllStrikes MarketVolaltility) datetick包含(“成熟”) ylabel (“罢工”) zlabel (“波动”)标题(“市场波动数据”)
设定利率期限结构并创建一个RateSpec
.
解决=“21日- 1月- 2008”;复合= 4;基础= 0;率= (0.0627;0.0657;0.0691;0.0717;0.0739;0.0755;0.0765; 0.0772; 0.0779; 0.0783; 0.0786; 0.0789]; EndDates = {“21 - 3月- 2008”;截止2008年6月21日的;“21 - 9 - 2008”;”21日- 12月- 2008;...“21 - 3月- 2009”;截止2009年6月21日的;“21 - 9 - 2009”;”21日- 12月- 2009;....“21 - 3月- 2010”;截止2010年6月21日的;“21 - 9 - 2010”;”21日- 12月- 2010};RateSpec = intenvset (“ValuationDate”解决,startdate可以的解决,...“EndDates”EndDates,“利率”率,“复合”复合,...“基础”基础)
RateSpec = FinObj: 'RateSpec'复利:4盘:[12x1 double] Rates: [12x1 double] EndTimes: [12x1 double] StartTimes: [12x1 double] EndDates: [12x1 double] StartDates: 733428 ValuationDate: 733428 Basis: 0 endmonth规则:1
根据市场数据校准赫尔白模型。
o = optimoptions (“lsqnonlin”,“TolFun”1 e-5“显示”,“关闭”);[Alpha, Sigma] = hwcalbyfloor(RateSpec, MarketStrike, MarketMaturity,...MarketVolaltility,“重置”重置,“基础”的基础上,“OptimOptions”啊,)
警告:LSQNONLIN不收敛到最优解。exitflag = 3退出。>在hwcalbycapfloor>optimizeOverCapSurface at 232在hwcalbycapfloor at 79在hwcalbyfloor at 81 Alpha = 0.0835 Sigma = 0.0145
与黑色价格相比。
BlkPrices = floorbyblk(RateSpec,AllStrikes(:), Settle, allexpiry (:),...MarketVolaltility (:),“重置”重置,“基础”基础)
BlkPrices = 0 0.2659 0.0010 0.5426 0.0021 0.6841 0.0042 0.7947 0.0081 0.8970 0.0128 0.9947 0.0217 1.1145 0.0340 1.2448 0.0402 1.3415 0.0610 1.4947 0.0827 1.6458 0.1071 1.7951 . BlkPrices = 0 0.2659 0.0010 0.5426 0.0021 0.6841 0.0042 0.7947 0.0081 0.8970
设置赫尔-怀特树使用校准参数,阿尔法和西格玛。
VolDates = EndDates;VolCurve =σ*的(元素个数(EndDates), 1);AlphaDates = EndDates;AlphaCurve =α*的(元素个数(EndDates), 1);HWVolSpec = HWVolSpec (Settle, VolDates, VolCurve, AlphaDates, AlphaCurve);HWTimeSpec = HWTimeSpec(结算,结束日期,复利);HWTree = HWTree (HWVolSpec, RateSpec, HWTimeSpec,“方法”,“HW2000”)
HWTree = FinObj: 'HWFwdTree' VolSpec: [1x1 struct] TimeSpec: [1x1 struct] RateSpec: [1x1 struct] tObs: [0 0.6593 1.6612 2.6593 3.6612 4.6593 5.6693 6.6593 8.6593 9.6612 10.6593] dObs: [733428 733488 733580 733672 733763 733853 733945 734037 734128 734218 734310 734402] CFlowT: {1x12 cell} probes: {1x11 cell} Connect: {1x11 cell} FwdTree:{1 x12细胞}
根据校准的树计算赫尔白价格。
HWPrices = floorbyhw(HWTree, AllStrikes(:), Settle, all到期(:),Reset, Basis)
HWPrices = 0 0.2644 0.0067 0.5404 0.0101 0.6924 0.0169 0.7974 0.0236 0.8919 0.0320 0.9919 0.0460 1.1074 0.0649 1.2340 0.0829 1.3558 0.1096 1.4957 0.1406 1.6418 0.1724 1.7877
绘制黑价格与校准的赫尔-怀特树价格。
图;BlkPrices情节(AllMaturities (:),”或“HWPrices AllMaturities (:),‘* b”);datetick (“x”(2)包含“成熟”);ylabel (“价格”);标题(“黑色和校准(HW)价格”);传奇(“黑价格”,“校准HW树价格”,“位置”,“西北”);网格在
这个例子展示了如何使用hwcalbyfloor
用Normal (Bachelier)模型校正市场数据,为地板定价。在处理负利率、打击和正常隐含波动时,使用Normal (Bachelier)模型进行校准。
考虑具有以下参数的地板:
解决=“12月- 30 - 2016”;成熟=“12月- 30 - 2019”;罢工= -0.004075;重置= 2;校长= 100;基础= 0;
本例的地板面积和市场数据定义为:
floorletDates = cfdates(结算,到期日,重置,基础);datestr (floorletDates”)
ans =6 x11 char数组“30-Jun-2017”“30- 12 -2017”“30-Jun-2018”“30- 12 -2018”“30-Jun-2019”“30- 12 -2019”
市场数据信息MarketStrike = (-0.00595;0);MarketMat = {“30 - 2017年6月- - - - - -”;30 - 12月- 2017 ';“30 - 2018年6月- - - - - -”;30 - 12月- 2018 ';“30 - 2019年6月- - - - - -”;30 - 12月- 2019 '};市场波动率= [0.184 0.2329 0.2398 0.2467 0.2906 0.3348;%表中与Strike 1对应的第一行0.217 0.2707 0.2760 0.2814 0.3160 0.3508];%表中第二行对应Strike 2
定义RateSpec
.
率= (-0.003210;-0.003020;-0.00182;-0.001343;-0.001075);ValuationDate =“12月- 30 - 2016”;EndDates = {“30 - 2017年6月- - - - - -”;“12月- 30 - 2017”;“30 - 2018年6月- - - - - -”;“12月- 30 - 2018”;“12月- 30 - 2019”};复合= 2;基础= 0;RateSpec = intenvset (“ValuationDate”ValuationDate,...startdate可以的ValuationDate,“EndDates”EndDates,...“利率”率,“复合”复合,“基础”、基础);
使用hwcalbyfloor
来寻找波动率参数的值α
和σ
使用Normal (Bachelier)模型。
格式短o = optimoptions (“lsqnonlin”,“TolFun”, 100 * eps);警告(“关闭”,“fininst: hwcalbycapfloor: NoConverge”) [Alpha, Sigma, OptimOut] = hwcalbyfloor(RateSpec, MarketStrike, MarketMat,...市场波动,罢工,结算,到期,“重置”重置,“校长”校长,...“基础”的基础上,“OptimOptions”阿,,“模型”,“正常”)
局部最小值。Lsqnonlin停止,因为当前步长小于步长公差的值。
α= 1.0000 e-06
σ= 0.3410
OptimOut =结构体字段:renorm: 1.9233e-04 residual: [5x1 double] exitflag: 2 output: [1x1 struct] lambda: [1x1 struct] jacobian: [5x2 double]
的OptimOut.residual
场的OptimOut
结构是优化残差。这个值包含了正常(Bachelier)地板和优化期间计算的地板之间的差异。使用OptimOut.residual
值计算与正常(Bachelier)楼板价格的百分比差(误差),然后决定剩余是否可接受。几乎总是有一些剩余,所以决定是否可以接受用单一的值来参数化市场α
和σ
.
使用市场数据和Normal (Bachelier)模型对地板进行定价,以获得参考地板价值。为了确定优化的有效性,使用Normal (Bachelier)公式和市场数据计算参考楼层值。注意,您必须首先插入市场数据,以获得地板计算。
MarketMatNum = datenum (MarketMat);[Mats, Strikes] = meshgrid(MarketMatNum, MarketStrike);FlatVol = interp2(Mats, Strikes, MarketVol, datenum(Maturity), Strike,样条的);[楼面价格,楼面面积]=按正常(费率,罢工,结算,到期,平卷,...“重置”重置,“基础”的基础上,“校长”、校长);Floorlets = Floorlets(2:结束)
Floorlets =5×14.7637 6.7180 8.1833 9.5825 10.6090
将优化值与Normal (Bachelier)值进行比较,并以图形方式显示结果。在计算出楼板的参考值后,对其进行分析和图解比较,以确定计算出的楼板的单值是否α
和σ
提供一个适当的近似。
OptimFloorlets = Floorlets + OptimOut.residual;disp (' ');
disp (“Bachelier校准地板”);
Bachelier校准Floorlets
disp ([Floorlets OptimFloorlets])
4.7637 4.7685 6.7180 6.7263 8.1833 8.1878 9.5825 9.5795 10.6090 10.6007
情节(MarketMatNum(2:结束),Floorlets,”或“OptimFloorlets MarketMatNum(2:结束),‘* b”);datetick (“x”(2)包含“Floorlet成熟度”);ylabel (“Floorlet价格”);ylim ([0 16]);标题(“简约和校准的地板”);h =传奇(“Bachelier Floorlets”,“校准Floorlets”);集(h,“颜色”, [0.9 0.9 0.9]);集(h,“位置”,“东南”);集(gcf,“NumberTitle”,“关闭”网格)在
MarketStrike
- - - - - -市场上罢工市场地板罢工,指定为NINST
——- - - - - -1
向量。
数据类型:双
MarketMaturity
- - - - - -市场最低到期日市场最低到期日,指定为NINST
——- - - - - -1
向量。
数据类型:双
MarketVolatility
- - - - - -市场平波动市场平性波动,指定为NSTRIKES
——- - - - - -NMATS
市场平坦波动矩阵,其中NSTRIKES
罢工的次数是多少MarketStrike
和NMATS
债券的到期日是从哪一天开始的MarketMaturity
.
数据类型:双
罢工
- - - - - -行使最低限额的比率(可选)执行下限的速率,指定为十进制标量值。
数据类型:单
解决
- - - - - -楼层结算日期(可选)地板的结算日期,指定为标量序列号或日期字符。
数据类型:单
|字符
成熟
- - - - - -楼面到期日(可选)楼层的到期日期,指定为标量序列日期号或日期字符向量。
数据类型:单
|字符
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
[ασ,OptimOut] = hwcalbyfloor (RateSpec、MarketStrike MarketMaturity, MarketVolaltility,“重置”,2,“校长”,100000年,“基础”,3,OptimOptions, o)
“重置”
- - - - - -每年支付的频率1
(默认)|数字每年支付的频率,指定为逗号分隔的对,由“重置”
和标量数值。
数据类型:双
“校长”
- - - - - -名义本金One hundred.
(默认)|非负整数指定为由逗号分隔的对组成的名义本金数量“校长”
一个标量非负整数。
数据类型:单
“基础”
- - - - - -日计数的基础用于年化的投入远期率0
(实际/实际)(默认)|集合的整数[0…13]
年化输入转发速率时使用的日计数基础,指定为逗号分隔对,由“基础”
和标量值。值:
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
有关更多信息,请参见基础.
数据类型:单
“磅”
- - - - - -下界(0, 0)
(默认)|数值向量下界,指定为逗号分隔对,由“磅”
和一个2
——- - - - - -1
下界的向量,定义为[LBSigma;LBAlpha]
,用于搜索算法功能。有关更多信息,请参见lsqnonlin
.
数据类型:双
乌兰巴托的
- - - - - -上界[ ]
(未绑定)(默认)|数值向量上界,指定为逗号分隔对,由乌兰巴托的
和一个2
——- - - - - -1
上界的向量,定义为[UBSigma;LBAlpha]
,用于搜索算法功能。有关更多信息,请参见lsqnonlin
.
数据类型:双
“XO”
- - - - - -初始值[0.5, 0.5]
(默认)|数值向量初始值,指定为逗号分隔对,由“XO”
和一个2
——- - - - - -1
初值的向量,定义为[Sigma0;Alpha0]
,用于搜索算法功能。有关更多信息,请参见lsqnonlin
.
数据类型:双
“OptimOptions”
- - - - - -优化参数优化参数,指定为逗号分隔对组成“OptimOptions”
以及由using定义的结构optimoptions
.
数据类型:结构体
“转变”
- - - - - -移位布莱克模型的小数移位0
(没有变化)(默认)|积极的小数移位的Black模型的小数移位,指定为逗号分隔对,由“转变”
和一个标量正小数。将该参数设置为十进制正移位,以增加正向速率和正移位罢工
,这实际上为远期利率和汇率设定了一个负的下限罢工
.例如,一个转变
的价值0.01
等于1%的位移。
数据类型:单
“模型”
- - - - - -用于例行校准的模型指示器对数正态
(黑色的模型)(默认)|值是正常的
和对数正态
用于校准例行程序的型号指示器,指定为逗号分隔对组成“模型”
和一个值为的标量字符向量正常的
或对数正态
.
数据类型:字符
α
-利用市场信息校正楼面所得的平均回归值利用市场信息校正地板的平均回归值,返回为标量值。
σ
-利用市场信息校正地板获得的波动率值通过使用市场信息校准底部而得到的波动值,返回为标量。
OptimOut
——优化结果优化结果,作为结构返回。
次のMATLABコマンドに対応するリンクがクリックされました。
コマンドをMATLABコマンドウィンドウに入力して実行してください。WebブラウザーはMATLABコマンドをサポートしていません。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。