主要内容

hwcalbycap

使用caps校准Hull-White树

描述

例子

ασOptimOut= hwcalbycap(RateSpecMarketStrikeMarketMaturityMarketVolatility校准的α(均值回归)和σ(波动率)使用市值市场数据和赫尔-怀特模型使用整个市值表面。

Hull-White校正函数(hwcalbycap而且hwcalbyfloor)支金宝app持三种模式:黑色(默认),单身汉或普通,和移位黑色。有关详细信息,请参阅的可选参数转变而且模型

例子

ασOptimOut= hwcalbycap (RateSpecMarketStrikeMarketMaturityMarketVolatility罢工解决成熟估计,α(均值回归)和σ(波动率)使用市值市场数据和赫尔-怀特模型对特定期限/波动率的上限进行定价,使用额外的可选输入参数罢工解决,成熟

罢工解决,成熟参数被指定校准到市场波动表面上的一个特定点。如果省略,则对所有市场仪器进行校准

这是一个使用Hull-White模型进行校准的例子罢工解决,成熟输入参数,请参见利用市场数据校准船体-白色模型

例子

ασOptimOut= hwcalbycap(___名称,值添加可选的名称-值对参数。

例子

全部折叠

这个例子展示了如何使用hwcalbycap的输入参数MarketStrikeMarketMaturity,MarketVolatility使用整个帽波动面校准HW模型。

市值市场波动率数据,涵盖12个到期日的两次罢工。

Reset = 4;MarketStrike = [0.0590;0.0790);市场成熟度= {“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};市场成熟度= datenum(市场成熟度);市场波动性= [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];

图市场波动面。

[allmaturity,AllStrikes] = meshgrid(市场成熟度,市场罢工);图;(所有期限,所有罢工,市场波动性)datetick xlabel(“成熟”) 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]利率:[12x1 double]结束时间:[12x1 double]开始时间:[12x1 double]结束日期:[12x1 double]开始日期:733428估值日期:733428基础:0 EndMonthRule: 1

根据市场数据校准Hull-White模型。

O = optimoptions(“lsqnonlin”“TolFun”1 e-5“显示”“关闭”);[Alpha, Sigma] = hwcalbycap(RateSpec, MarketStrike, MarketMaturity,...MarketVolaltility,“重置”重置,“基础”的基础上,“OptimOptions”啊,)
警告:LSQNONLIN没有收敛到最优解。它以exitflag = 3退出。>在hwcalbycapfloor>优化overcapsurface在232在hwcalbycapfloor在79在hwcalbycap在81阿尔法= 0.0943西格玛= 0.0146

与黑色价格比较。

BlkPrices = capbyblk(RateSpec,AllStrikes(:), Settle, allmaturity (:),...MarketVolaltility (:),“重置”重置,“基础”、基础);
BlkPrices = 0.0604 0 0.2729 0.0006 0.6498 0.0412 1.1121 0.1426 1.6426 0.3131 2.1869 0.4998 2.7056 0.6894 3.2124 0.8815 3.7311 1.0686 4.2246 1.2790 4.7027 1.4810 5.1877 1.6919

使用校准的参数,阿尔法和西格玛建立赫尔-怀特树。

VolDates =结束日期;VolCurve = Sigma*ones(数字(EndDates),1);AlphaDates =结束日期;阿尔法曲线= Alpha*ones(数字(EndDates),1);HWVolSpec = HWVolSpec(确定,VolDates, VolCurve, AlphaDates, alphaacurve);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.6612 6.6593 7.6612 7.6612 8.6593 9.6612 10.6593] dObs: [733428 733488 733580 733672 733763 733853 733945 734037 734128 734218 734310 734402] CFlowT: {1x12 cell} Probs: {1x11 cell} Connect: {1x11 cell} FwdTree: {1x12 cell}

根据校准的树计算船体-白色价格。

HWPrices = capbyhw(HWTree, AllStrikes(:), Settle, allmaturity (:), Reset, Basis)
HWPrices = 0.0601 0 0.2788 0 0.6580 0.0518 1.1254 0.1485 1.6591 0.3123 2.2076 0.5022 2.7319 0.6883 3.2459 0.8774 3.7771 1.0900 4.2769 1.2875 4.7645 1.4845 5.2572 1.6921

绘制黑色价格与校准的赫尔-白色树价格。

图;BlkPrices情节(AllMaturities (:),”或“, allmaturity (:), HWPrices,‘* b”);datetick (“x”, 2) xlabel(“成熟”);ylabel (“价格”);标题(“黑色和校准(HW)价格”);传奇(“黑价格”“校准的HW树价格”“位置”“西北”);网格

这个例子展示了如何使用hwcalbycap用正态(Bachelier)模型对市场数据进行校准,以定价。在处理负利率、罢工和正常隐含波动率时,使用正常(Bachelier)模型进行校准。

考虑一个带有以下参数的帽子:

解决=“12月- 30 - 2016”;成熟=“12月- 30 - 2019”;罢工= -0.001075;重置= 2;本金= 100;基= 0;

本例中的caplets和市场数据定义为:

capletDates = cfdates(结算,到期,重置,基础);datestr (capletDates”)
ans =6x11字符数组“2017年6月30日”“2017年12月30日”“2018年6月30日”“2019年6月30日”“2019年12月30日”
市场数据信息MarketStrike = [-0.0013;0);MarketMat = {“30 - 2017年6月- - - - - -”30 - 12月- 2017 '“30 - 2018年6月- - - - - -”30 - 12月- 2018 '“30 - 2019年6月- - - - - -”30 - 12月- 2019 '};市场vol = [0.184 0.2329 0.2398 0.2467 0.2906 0.3348;表中罢工1对应的第一行0.217 0.2707 0.2760 0.2814 0.3160 0.3508];%表中第2行对应的第2行

定义RateSpec使用intenvset

率= (-0.002210;-0.002020;-0.00182;-0.001343;-0.001075);ValuationDate =“12月- 30 - 2016”;结束日期= {“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,...“利率”率,“复合”复合,“基础”、基础);

使用hwcalbycap找出波动率参数的值α而且σ使用正常(Bachelier)模型。

格式o = optimoptions (“lsqnonlin”“TolFun”, 100 * eps);警告(“关闭”“fininst: hwcalbycapfloor: NoConverge”) [Alpha, Sigma, OptimOut] = hwcalbycap(RateSpec, MarketStrike, MarketMat,...市场成交量,打击,结算,成熟度,“重置”重置,“校长”校长,...“基础”的基础上,“OptimOptions”阿,,“模型”“正常”
局部最小值。Lsqnonlin停止,因为当前步骤的大小小于步长公差的值。
Alpha = 1.0000 -06
Sigma = 0.3384
OptimOut =带字段的结构:Resnorm: 1.5181e-04 residual: [5x1 double] exitflag: 2 output: [1x1 struct] lambda: [1x1 struct]雅可比矩阵:[5x2 double]

OptimOut.residual字段OptimOut结构是优化残差。此值包含正常(Bachelier)小片与优化期间计算的小片之间的差值。使用OptimOut.residual值计算与正常(Bachelier)卡片价格相比的百分比差异(误差),然后决定剩余是否可接受。几乎总是有一些剩余,所以决定是否可以接受参数化市场的单一值为α而且σ

使用市场数据和正态(Bachelier)模型对胶囊进行定价,以获得参考胶囊值。为了确定优化的有效性,使用正态(Bachelier)公式和市场数据计算参考caplet值。注意,您必须首先对市场数据进行插值,以获得用于计算的caplets。

MarketMatNum = datenum(MarketMat);[垫子,罢工]=网格(市场matnum,市场罢工);FlatVol = interp2(Mats, Strikes, MarketVol, datenum(Maturity), Strike,样条的);[CapPrice, Caplets] = capbynormal(RateSpec, Strike, Settle, Maturity, FlatVol,...“重置”重置,“基础”的基础上,“校长”、校长);Caplets = Caplets(2:end)'
囊片=5×14.7392 6.7799 8.2609 9.6136 10.6455

比较优化值和正常值(Bachelier),并以图形方式显示结果。计算出辅料的参考值后,将这些值进行分析和图形比较,以确定所计算的单个值是否为α而且σ提供适当的近似。

OptimCaplets = Caplets+OptimOut.residual;disp (' ');

                   
disp (“单身汉校准Caplets”);
Bachelier校准Caplets
disp([囊片OptimCaplets])
4.7392 4.7453 6.7799 6.7851 8.2609 8.2657 9.6136 9.6112 10.6455 10.6379
情节(MarketMatNum(2:结束),囊片,”或“, MarketMatNum(2:end), OptimCaplets,‘* b”);datetick (“x”, 2) xlabel(“成熟囊片”);ylabel (“囊片价格”);Ylim ([0 16]);标题(“单身汉和校准的Caplets”);H =传说(“Bachelier囊片”“校准囊片”);集(h,“颜色”, [0.9 0.9 0.9]);集(h,“位置”“东南”);集(gcf,“NumberTitle”“关闭”网格)

图中包含一个轴对象。标题为Bachelier和corrected Caplets的axes对象包含2个类型为line的对象。这些对象表示Bachelier Caplets,校准Caplets。

输入参数

全部折叠

初始利率曲线的利率规范,由RateSpec获得intenvset.有关利率规范的信息,请参见intenvset

数据类型:结构体

市值打击,指定为aNINST——- - - - - -1向量。

数据类型:

市值到期日,指定为aNINST——- - - - - -1向量。

数据类型:

市场波动率为aNSTRIKES——- - - - - -NMATS市场波动率的矩阵,其中NSTRIKES是击打的数量吗MarketStrike而且NMATS纸包的到期日是什么时候MarketMaturity

数据类型:

(可选)执行上限的速率,指定为十进制标量值。

数据类型:

(可选)上限的结算日期,指定为标量连续日期数字或日期字符。

数据类型:|字符

(可选)上限的到期日期,指定为标量序列号或日期字符向量。

数据类型:|字符

名称-值参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:[Alpha,Sigma,OptimOut] = hwcalbycap(RateSpec,MarketStrike,市场成熟度,市场波动性,'Reset',2,'Principal',100000,'Basis',3,'OptimOptions',o)

每年支付的频率,由逗号分隔的对组成“重置”和一个标量数值。

数据类型:

名义上的本金,以逗号分隔的一对组成“校长”和一个非负整数。

数据类型:

年化输入正向速率时使用的日计数基础,指定为逗号分隔的对,由“基础”和一个标量值。值:

  • 0 = actual/实际的

  • 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

有关更多信息,请参见基础

数据类型:

下界,指定为逗号分隔的对,由“磅”和一个2——- - - - - -1下界的向量,定义为[LBSigma;LBAlpha],用于搜索算法功能。有关更多信息,请参见lsqnonlin

数据类型:

上界,指定为逗号分隔的对,由乌兰巴托的和一个2——- - - - - -1向量的上界,定义为[UBSigma;LBAlpha],用于搜索算法功能。有关更多信息,请参见lsqnonlin

数据类型:

初始值,指定为逗号分隔的对,由“XO”和一个2——- - - - - -1初始值的向量,定义为[Sigma0;Alpha0],用于搜索算法功能。有关更多信息,请参见lsqnonlin

数据类型:

优化参数,指定为由逗号分隔的对组成“OptimOptions”和用定义的结构optimoptions

数据类型:结构体

移位的Black模型的小数移位,指定为由逗号分隔的对组成“转变”和一个正的十进制标量。将此参数设置为小数的正移位,以添加正向速率和的正移位罢工,这有效地为远期汇率和设定了一个负的下限罢工.例如,转变的价值0.01等于1%的位移。

数据类型:

用于校准程序的模型的指示器,指定为逗号分隔的对,由“模型”和值为的标量字符向量正常的对数正态

数据类型:字符

输出参数

全部折叠

使用市场信息校准上限获得的平均回归值,作为标量返回。

波动率值通过使用市场信息校准上限获得,作为标量返回。

优化结果,作为结构返回。

在R2009a中引入