使用caps校准Hull-White树
[
校准的α
,σ
,OptimOut
= hwcalbycap(RateSpec
,MarketStrike
MarketMaturity
,MarketVolatility
)α
(均值回归)和σ
(波动率)使用市值市场数据和赫尔-怀特模型使用整个市值表面。
Hull-White校正函数(hwcalbycap
而且hwcalbyfloor
)支金宝app持三种模式:黑色(默认),单身汉或普通,和移位黑色。有关详细信息,请参阅的可选参数转变
而且模型
.
[
估计,α
,σ
,OptimOut
= hwcalbycap (RateSpec
,MarketStrike
MarketMaturity
,MarketVolatility
,罢工
,解决
,成熟
)α
(均值回归)和σ
(波动率)使用市值市场数据和赫尔-怀特模型对特定期限/波动率的上限进行定价,使用额外的可选输入参数罢工
,解决
,成熟
.
罢工
,解决
,成熟
参数被指定校准到市场波动表面上的一个特定点。如果省略,则对所有市场仪器进行校准
这是一个使用Hull-White模型进行校准的例子罢工
,解决
,成熟
输入参数,请参见利用市场数据校准船体-白色模型.
这个例子展示了如何使用hwcalbycap
的输入参数MarketStrike
,MarketMaturity
,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”,“关闭”网格)在
MarketStrike
- - - - - -市值打击市值打击,指定为aNINST
——- - - - - -1
向量。
数据类型:双
MarketMaturity
- - - - - -市值到期日市值到期日,指定为aNINST
——- - - - - -1
向量。
数据类型:双
MarketVolatility
- - - - - -市场平稳波动市场波动率为aNSTRIKES
——- - - - - -NMATS
市场波动率的矩阵,其中NSTRIKES
是击打的数量吗MarketStrike
而且NMATS
纸包的到期日是什么时候MarketMaturity
.
数据类型:双
罢工
- - - - - -执行上限的速率(可选)执行上限的速率,指定为十进制标量值。
数据类型:单
解决
- - - - - -上限结算日期(可选)上限的结算日期,指定为标量连续日期数字或日期字符。
数据类型:单
|字符
成熟
- - - - - -限额到期日期(可选)上限的到期日期,指定为标量序列号或日期字符向量。
数据类型:单
|字符
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
[Alpha,Sigma,OptimOut] = hwcalbycap(RateSpec,MarketStrike,市场成熟度,市场波动性,'Reset',2,'Principal',100000,'Basis',3,'OptimOptions',o)
重置
- - - - - -每年付款的频率1
(默认)|数字每年支付的频率,由逗号分隔的对组成“重置”
和一个标量数值。
数据类型:双
主要
- - - - - -名义本金One hundred.
(默认)|非负整数名义上的本金,以逗号分隔的一对组成“校长”
和一个非负整数。
数据类型:单
基础
- - - - - -年化输入远期利率时使用的日计数基础0
(实际/实际)(默认)|集合中的整数[0…13]
年化输入正向速率时使用的日计数基础,指定为逗号分隔的对,由“基础”
和一个标量值。值:
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
有关更多信息,请参见基础.
数据类型:单
磅
- - - - - -下界(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”
和用定义的结构optimoptions
.
数据类型:结构体
转变
- - - - - -移位布莱克模型的小数移位0
(没有变化)(默认)|积极的小数移位的Black模型的小数移位,指定为由逗号分隔的对组成“转变”
和一个正的十进制标量。将此参数设置为小数的正移位,以添加正向速率和的正移位罢工
,这有效地为远期汇率和设定了一个负的下限罢工
.例如,转变
的价值0.01
等于1%的位移。
数据类型:单
模型
- - - - - -用于校准程序的模型指示器对数正态
(黑色的模型)(默认)|值是正常的
而且对数正态
用于校准程序的模型的指示器,指定为逗号分隔的对,由“模型”
和值为的标量字符向量正常的
或对数正态
.
数据类型:字符
α
-利用市场信息校准上限所得的平均回归值使用市场信息校准上限获得的平均回归值,作为标量返回。
σ
-利用市场信息校准上限获得的波动值波动率值通过使用市场信息校准上限获得,作为标量返回。
OptimOut
-优化结果优化结果,作为结构返回。
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。