利率衍生证券的定价依赖于描述基本过程的模型。这些利率模型依赖于一个或多个参数,您必须通过将模型预测与市场上现有的可用数据相匹配来确定这些参数。在Hull-White模型中,有两个与短期利率过程相关的参数:均值回归和波动率。校准用于确定这些参数,以便模型能够尽可能接近市场上观察到的上限或下限价格。校准程序找到参数,使模型价格预测与上限和下限的市场价格之间的差异最小化。
对于Hull-White模型,最小值是二维的,相对于均值回归(α)和波动率(σ)。也就是说,校准赫尔-怀特模型,使模型的预测价格与相应贴片或地板的观察市场价格之间的差异最小化。
使用市场数据来识别构建船体白色树的暗示波动率(σ)和平均逆转(α)系数,以为仪器提供仪器。理想情况是使用帽子或地板的挥发性来计算α
(α)和σ
(σ)。这很可能不是事实,因此必须插入市场数据以获得所需的值。
考虑一个带有以下参数的上限:
解决=“2008年1月- 21”;成熟=的3月- 21 - 2011;罢工= 0.0690;重置= 4;校长= 1000;基础= 0;
这个例子的拼接将属于:
capletdates = cfdates(定居,成熟,重置基础);Datestr(capletdates')
ans = 21- 3 -2008 21- 6 -2008 21- 9 -2008 21- 12 -2008 21- 3 -2009 21- 6 -2009 21- 12 -2009 21- 3 -2010 21- 6 -2010 21- 9 -2010 21- 12 -2010 21- 3 -2011
最好的情况是,查一下市场波动情况罢工
=0.0690
,以及每个重置日期的到期日,但找到这些精确工具的可能性很低。因此,使用市场上可用的数据进行插值,以找到合适的贴片值。
根据市场数据,你有不同日期和罢工的上限信息。假设数据不是罢工
=0.0690
,你有数据罢工1
=0.0590
和罢工2.
=0.0790
.
成熟 | Strike1 = 0.0590 | Strike2 = 0.0790. |
---|---|---|
2008年3月21日 - 3月21日 | 0.1533 | 0.1526 |
截止2008年6月21日 | 0.1731. | 0.1730 |
21-Sep-2008 | 0.1727 | 0.1726 |
21 - 12月- 2008 | 0.1752 | 0.1747 |
2009年3月21日 - 3月21日 | 0.1809 | 0.1808 |
截止2009年6月21日 | 0.1809 | 0.1792 |
21九月 - 2009年 | 0.1805 | 0.1797 |
21 - 12月- 2009 | 0.1802 | 0.1794 |
2010年3月21日 | 0.1802 | 0.1733 |
2010年6月21日 - 2010年6月 | 0.1757 | 0.1751 |
2010年9月21日 | 0.1755 | 0.1750 |
21 - 12月- 2010 | 0.1755 | 0.1745 |
2011年3月21日 - 2011年3月 | 0.1726 | 0.1719 |
这种数据的性质适合于矩阵命名法,这对MATLAB来说是完美的®.hwcalbycap.
要求日期,罢工和实际波动分为三个变量:MarketStrike
,MarketMat
, 和MarketVol
.
MarketStrike = (0.0590;0.0790);MarketMat = {“21 - 3月- 2008”;'21 -Jun-2008';“21 - 9 - 2008”;”21日- 12月- 2008;“21 - 3月- 2009”;'21 -Jun-2009';“21 - 9 - 2009”;”21日- 12月- 2009;“21 - 3月- 2010”;截止2010年6月21日的;'21 -sep-2010';”21日- 12月- 2010;“21 - 3月- 2011”};市场波动率= [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.1726;%表中与Strike1对应的第一行0.1526 0.1730 0.1726 0.1747 0.1808 0.1808 0.1792 0.1797 0.1792 0.1797 0.1794 0.1733 0.1751......0.1750 0.1745 0.1719];%表中与Strike2对应的第二行
使用此数据完成输入参数Ratespec.
:
率= (0.0627;0.0657;0.0691;0.0717;0.0739;0.0755;0.0765;0.0772;0.0779;0.0783; 0.0786; 0.0789; 0.0792; 0.0793]; ValuationDate ='21-jan-2008';EndDates = {“21 - 3月- 2008”;'21 -Jun-2008';“21 - 9 - 2008”;”21日- 12月- 2008;......“21 - 3月- 2009”;'21 -Jun-2009';“21 - 9 - 2009”;”21日- 12月- 2009;.......“21 - 3月- 2010”;截止2010年6月21日的;'21 -sep-2010';”21日- 12月- 2010;.......“21 - 3月- 2011”;截止2011年6月21日的};复合= 4;基础= 0;RateSpec = intenvset (“ValuationDate”,估值,......startdate可以的,估值,'enddates'EndDates,......'费率',费率,“复合”复合,“基础”基础)
ratespec = finobj:'ratespec'复合:4个光盘:[14x1双]速度:[14x1双]启动:[14x1双]终点:[14x1双]起始:733428估值:733428基础:0 endmonthle:1
用hwcalbycap.
计算…的值α
和σ
基于市场数据。在内部,hwcalbycap.
调用函数lsqnonlin.
.你可以自定义lsqnonlin.
通过传递创建的优化选项结构optimoptions
然后这个可以传递给hwcalbycap.
的名称-值对参数OptimOptions
.例如,optimoptions
定义目标目标函数公差为100 * EPS.
,然后调用hwcalbycap.
:
o = optimoptions ('lsqnonlin',“TolFun”, 100 * eps);[Alpha, Sigma] = hwcalbycap(RateSpec, MarketStrike, MarketMat, MarketVol,......罢工,定居,成熟,“重置”, 重启,“校长”校长,“基础”,......基础,'Optimoptions'o)
局部最小值。Lsqnonlin停止,因为当前步长小于步长公差的默认值。警告:LSQNONLIN不收敛到最优解。exitflag = 2退出。>在hwcalbycap at 93在hwcalbycap at 75 Alpha = 1.0000e-06 Sigma = 0.0127
之前的警告表明转换不是最佳的。优化工具箱™功能使用的搜索算法lsqnonlin.
没有找到一个符合所有约束条件的解决方案。要判断解决方案是否可接受,可以通过指定第三个输出(OptimOut
) 为了hwcalbycap.
:
[Alpha, Sigma, OptimOut] = hwcalbycap(RateSpec, MarketStrike, MarketMat,......市场波动,罢工,结算,到期,“重置”, 重启,“校长”校长,......“基础”的基础上,'Optimoptions',o);
的OptimOut.residual
场的OptimOut
结构是优化残留。该值包含在优化期间计算的黑色片段和计算值之间的差异。你可以使用OptimOut.residual
与黑色胶囊价格相比计算百分比(错误)的值,然后决定残差是否可接受。几乎总是存在一些残差,因此决定是否可以使用单一值参数化市场α
和σ
.
为了确定优化的有效性,使用Black公式和市场数据计算参考值。注意,您必须首先插入市场数据,以获得用于计算的caplets:
MarketMatnum = Datenum(Marketmat);[垫子,罢工] =模住网格(Marketmatnum,Marketstrice);FLANDVOL = INTERP2(垫子,罢工,Marketvol,数据内(成熟),罢工,样条的);
使用Black模型计算上限的价格:
[CapPrice, Caplets] = capbyblk(rate espec, Strike, Settle, Maturity, FlatVol,......“重置”, 重启,“基础”的基础上,“校长”、校长);囊片=囊片(2:结束);
Caplets = 0.3210 1.6355 2.4863 3.1903 3.4110 3.2685 3.2385 3.4803 3.2419 3.1949 3.2991 3.3750
在计算出胶囊的参考值后,通过分析和图形化比较这些值,以确定计算出的单个值是否为α
和σ
提供足够的近似:
OptimCaplets = caplets + OptimOut.residual;disp ('');disp (“Black76校准Caplets”);disp([Caplets OptimCaplets]) plot(MarketMatNum(2:end), Caplets,”或“OptimCaplets MarketMatNum(2:结束),‘* b”);dateTick(“x”(2)包含'追逐成熟');ylabel(“囊片价格”);标题(“黑色校准卡普”);h =图例(“黑囊片”,“校准囊片”);套(H,'颜色',[0.9 0.9 0.9]);套(H,'地点','东南');设置(GCF,“NumberTitle”,“关闭”网格)在
Black76校准Caplets 0.3210 0.3636 1.6355 1.6603 2.4863 2.4974 3.1903 3.1874 3.4110 3.4040 3.2685 3.2639 3.2385 3.2364 3.4803 3.4683 3.2419 3.2408 3.1949 3.1957 3.2991 3.2960 3.3750 3.3663
使用计算出的帽值,用Black模型、Hull-White分析模型和Hull-White树模型比较相应帽的价格。来计算赫尔-怀特树的基础α
和σ
,使用这些校准程序:
黑色的模型:
CapPriceBLK = CapPrice;
HW分析模型:
Cappricehwanalytical = Sum(OptimCaplets);
HW树模型从定标过程中得出价格上限:
创建VolSpec
从校准参数α
和σ
:
Voldates = Enddate;Volcurve = Sigma *那些(14,1);Alphadites = Enddates;alphacurve = alpha *那些(14,1);HWVOLSPEC = HWVOLSPEC(估值,Voldate,Volcurve,Alphadates,Alphacurve);
创建TimeSpec
:
HWTimeSpec = HWTimeSpec (ValuationDate, EndDates, compound);
构建HW树使用HW2000
方法:
HWTree = HWTree (HWVolSpec, RateSpec, HWTimeSpec,'方法','hw2000');
价格上限:
Price = capbyhw(HWTree, Strike, Settle, Maturity, Reset, Basis, Principal);disp ('');disp (['Capprice Black76 ..................:'num2str (CapPriceBLK' % 15.5 f ')));disp ([CapPrice HW analytical..........:“num2str (CapPriceHWAnalytical' % 15.5 f ')));disp (['Capprice HW来自Capbyhw ..:'num2str(价格,' % 15.5 f ')));disp ('');
CapPrice Black76 ..........:34.14220 CapPrice HW analytical.....: 34.18008 CapPrice HW from capbyhw ..: 34.14192
在建立赫尔-怀特树之后,基于从市场数据校准的参数,使用HWTree.
为这些工具的投资组合定价:
两个键
CouponRate = (0.07;0.09);解决=“2008年1月- 21”;成熟= {的3月- 21 - 2010;的3月- 21 - 2011};时间= 1;脸= 1000;基础= 0;
内嵌美式看涨期权的债券
优惠玉米饼干= 0.08;定定=“2008年1月- 21”;MaturityOEB =的3月- 21 - 2011;optspec ='称呼';StrikeOEB = 950;ExerciseDatesOEB =的3月- 21 - 2011;AmericanOpt = 1;时间= 1;脸= 1000;基础= 0;
用校准过的HWTree.
:
用instadd
创建作品集InstSet
:
InstSet = instadd (“债券”,解决CouponRate成熟,期间,基础 , [], [], [], [], [], 脸);InstSet = instadd (InstSet,'Optembond', CouponRateOEB, settoeb, maturity yoeb, OptSpec,......Striptoeb,锻炼atseatesoeb,“AmericanOpt”AmericanOpt,'时期'期,......“脸”的脸,“基础”, 基础);
添加校准中使用的盖仪表:
SettleCap =“2008年1月- 21”;maturientcap =.的3月- 21 - 2011;strikecap = 0.0690;重置= 4;校长= 1000;InstSet = instadd (InstSet,“帽子”,strikecap,settlecap,maturientcap,重置,基础,校长);
为投资组合仪器分配名称:
名称= {'7%债券';“8%的债券”;“BondEmbCall”;“6.9%上限”};InstSet = instsetfield (InstSet,'指数',1:4,的字段名,{“名字”},“数据”、名称);
检查其中包含的一套仪器InstSet
:
instdisp(服用)
Idxtype Couprate成熟时期基础Eomrule发行版1个Coupdate LastCoupdate Startdate Face Name 1 Bond 0.07 21-Jan-2008 21-Mar-2010 1 0南纳南纳南纳1000 7%键2债券0.09 21-Jan-2008 21-Mar-20111 0纳米南纳南纳1000 8%键IDXTYPE COUPRATE SENTER成熟OPTSPEC STKE extdate每个基础EOMRULES ISSDATE 1stcoupdate LSTCoupdate Strtdate Face Ameropt名称3 Optembond 0.08 21-Jan-2008 21-Mar-2011致电950 21-Jan-2008 21-2011年3月1日1 0 1 Nan Nan Nan Nan 1000 1 Bondembcall指标型罢工稳定成熟度Capreset基础主要名称4 CAP 0.069 21-Jan-2008 21-Mar-2011 4 0 1000 6.9%的帽子
用hwprice
用校准后的价格对投资组合进行定价HWTree.
:
格式银行PricePortFolio = HWPRICE(HWTree,ATTET)
PricePortfolio = 980.45 1023.05 945.73 34.14
BDTPRICE.
|BDTSENS
|bdttimespec
|BDTTree.
|bdtvolspec
|bkprice
|BKSENS.
|bktimespec
|bktree.
|bkvolspec.
|bondbybdt
|bondbybk
|bondbyhjm
|BondByHW.
|bondbyzero
|capbybdt
|Capbybk.
|capbyblk
|capbyhjm
|capbyhw
|cfbybdt.
|cfbybk
|cfbyhjm.
|cfbyhw
|cfbyzero
|fixedbybdt
|fixedbybk
|fixedbyhjm
|超凡尖
|fixedbyzero
|floatbybdt
|floatbybk
|floatbyhjm
|floatbyhw.
|floatbyzero.
|floatdiscmargin.
|floatmargin
|floorbybdt
|floorbybk
|贝布尔克
|floorbyhjm
|floorbyhw
|hjmprice
|Hjmsens.
|hjmtimespec
|HJMTree.
|hjmvolspec
|hwcalbycap.
|hwcalbyfloor
|hwprice
|hwsens
|hwtimespec
|hwtree
|hwvolspec
|instbond
|instcap
|instcf
|instfixed
|instfloat.
|instfloor
|Instoptbnd.
|instoptembnd
|instoptemfloat
|Instoptfloat.
|instrangefloat
|instswap.
|instswaption
|intenvprice
|Intenvsens.
|intenvset
|mmktbybdt
|mmktbyhjm
|oasbybdt
|oasbybk
|oasbyhjm
|oasbyhw
|optbndbybdt
|optbndbybk
|optbndbyhjm
|optbndbyhw
|optembndbybdt
|optembndbybk
|Optembndbyhjm.
|optembndbyhw
|optemfloatbybdt
|optemfloatbybk
|optemfloatbyhjm
|optemfloatbyhw
|OptfloatbyBdt.
|optfloatbybk
|Optfloatbyhjm.
|optfloatbyhw
|rangefloatbybdt
|rangefloatbybk
|rangefloatbyhjm
|RangeFloatbyHW.
|swapbybdt
|swapbybk
|swapbyhjm.
|swapbyhw
|swapbyzero
|swaptionbybdt
|SwaptionByBk.
|swaptionbyblk
|swaptionbyhjm
|swaptionbyhw