使用分析校准SABR模型定价的人
这个例子展示了如何使用两种不同的方法来校准SABR随机波动模型从市场隐含波动。这两种方法使用SABR
分析定价的人。
负载市场黑色隐含波动率数据
这个例子设置假设的黑色市场隐含波动对欧洲互换期权在校准之前一系列的罢工。三年的互换期权到期解决
日期和五年互换作为底层的仪器。利率是用小数表示。(改变单位影响的数值和解释α
参数SABR
模型)。
负载的黑色市场隐含波动数据互换期权在三年内到期。
解决= datetime (2013、7、10);ZeroDates =解决+ [calmonths ([1 2 3 6 9]) calyears ((1 2 3 4 5 6 7 8 9 10 12])) ';ZeroRates = [0.25 0.3 0.33 0.42 0.8 0.9 1.1 1.2…1.8 2.2 2.4 2.71 2.95 3.02 3.24 3.58]/ 100;复合= 1;ZeroCurve = ratecurve (“零”、结算、ZeroDates ZeroRates,“复合”、复合);ExerciseDate = datetime (2016、7、10);MarketStrikes = [2.46 2.96 3.46 3.96 4.46 4.96 5.46] / 100;MarketVolatilities = [44.3 40.2 36.7 35.7 37.2 38.1 39.8] / 100;
的时候解决
,定义潜在的远期利率平价的波动。
CurrentForwardValue = MarketStrikes (4)
CurrentForwardValue = 0.0396
ATMVolatility = MarketVolatilities (4)
ATMVolatility = 0.3570
方法1:校准α
,ρ
,ν
直接
你可以调整α
,ρ
,ν
直接模型参数。设定的值β
通过拟合历史市场波动数据或选择一个适合市场价值(1]。对于这个示例,使用价值0.5
。
%定义预先确定的测试。Beta1 = 0.5;
修复后的价值
(β
),适合的参数
(α
),
(ρ
),
(ν
直接)。优化工具箱™函数lsqnonlin
生成的参数值,减少市场波动和波动之间的平方误差的计算SABR
分析定价的人。
%校准αρ,怒。objFun = @ (X) MarketVolatilities -…波动(finpricer (“分析”,“模型”,…finmodel (“SABR”,“α”X (1),“β”Beta1,的ρ,X (2),“怒”X (3)),…“DiscountCurve”ZeroCurve) ExerciseDate、CurrentForwardValue MarketStrikes);X = lsqnonlin (objFun[0.5 0 0.5],[0 1 0],[正1正]);
局部最小值。优化完成因为梯度的大小小于最优值的宽容。
α1 = X (1);Rho1 = X (2);Nu1 = X (3);
方法2:校准ραν,暗示从平价的波动
您还可以使用另一种校准方法。设定的值
(β
在第一种方法)。
Beta2 = 0.5;
接下来,您适合的参数
(ρ
),
(ν
)直接而
(α
从市场)是隐含平价波动。模型校准使用这种方法生成平价波动,等于市场报价。这种方法被广泛使用在掉期期权,平价波动是引用最频繁和对比赛很重要。意味着
(α
从市场波动性平价)(
),下面的三次多项式解
(α
),选择最小的正实根(2]。
在这里:
向前是当前价值
今年分数是成熟。
通过定义一个匿名函数的参数。
%年分数从解决选择成熟。T = yearfrac(解决ExerciseDate 1);%这个函数解决了SABR平价作为一个波动方程%的多项式α。alpharoots = @(ρ,ν)根([…(1 - Beta2) ^ 2 * T / 24 / CurrentForwardValue ^ (2 - 2 * Beta2)…ρ* Beta2 *ν* T / 4 / CurrentForwardValue ^ (1 - Beta2)…(1 +(2 - 3 * ^ 2)ρ*ν^ 2 * T / 24)…-ATMVolatility * CurrentForwardValue ^ (1 - Beta2)]);%这个函数将平价波动转化为α通过挑选%最小正实根。atmVol2SabrAlpha = @(ρ,ν)分钟(实际(arrayfun (@ (x)…x * (x > 0) +最大浮点数* (x < 0 | | abs(图像放大(x)) > 1 e-6), alpharoots(ρ,ν))));
这个函数atmVol2SabrAlpha
将平价波动转换成
(α
)对于一个给定的一组
(ρ
),
(ν
)。然后使用这个函数的目标函数以适应参数
(ρ
),
(ν
)。
%校准ρ和ν(同时将平价波动转化为α%使用atmVol2SabrAlpha)。objFun = @ (X) MarketVolatilities -…波动(finpricer (“分析”,“模型”finmodel (“SABR”,…“α”atmVol2SabrAlpha (X (1), (2)),“β”Beta2,的ρX (1),“怒”X (2)),…“DiscountCurve”ZeroCurve) ExerciseDate、CurrentForwardValue MarketStrikes);0.5 X = lsqnonlin (objFun[0],[1 0],[1正]);
局部最小值。优化完成因为梯度的大小小于最优值的宽容。
Rho2 = X (1);Nu2 = X (2);
校准参数
(α
使用校准参数计算)
(ρ
),
(ν
)。
%获得最终α使用校准从平价的波动%的参数。Alpha2 = atmVol2SabrAlpha (Rho2 Nu2);%显示校准参数。C ={αBeta1 Rho1 Nu1; Alpha2 Beta2 Rho2 Nu2};CalibratedPrameters = cell2table (C,…“VariableNames”,{“α”“β”的ρ“怒”},…“RowNames”,{方法1的;方法2的})
CalibratedPrameters =2×4表αβρν________ ____ ____ ____方法1 0.060203 0.058851 0.5 0.18901 0.88627 0.5 0.19131 0.85327方法2
使用校准模型
使用校准模型来计算新的波动在任何罢工的价值。
计算波动模型校准使用方法1和方法2和图结果。
PlottingStrikes = (1.75:0.1:5.50) / 100;%计算波动模型校准方法1。SABR_Model_Method_1 = finmodel (“SABR”,…“α”α1,“β”Beta1,的ρRho1,“怒”,Nu1);ComputedVols1 =波动(finpricer (“分析”,…“模型”SABR_Model_Method_1,“DiscountCurve”ZeroCurve),…ExerciseDate、CurrentForwardValue PlottingStrikes);%计算波动模型校准方法2。SABR_Model_Method_2 = finmodel (“SABR”,…“α”Alpha2,“β”Beta2,的ρRho2,“怒”,Nu2);ComputedVols2 =波动(finpricer (“分析”,…“模型”SABR_Model_Method_2,“DiscountCurve”ZeroCurve),…ExerciseDate、CurrentForwardValue PlottingStrikes);图;情节(MarketStrikes MarketVolatilities,“xk”,…PlottingStrikes ComputedVols1,“b”,…PlottingStrikes ComputedVols2,“r”,…CurrentForwardValue ATMVolatility,“好吧”,…“MarkerSize”10);xlim ([0.01 - 0.06]);ylim ([0.35 - 0.5]);包含(“罢工”,“FontWeight”,“大胆”);ylabel (“黑色隐含波动率”,“FontWeight”,“大胆”);传奇(“市场波动”,“SABR模型(方法1)”,…“SABR模型(方法2)”,“平价波动”);
模型校准使用方法2繁殖平价市场波动性(标有一个圆)。
引用
[1]哈根,帕特里克·S。,Deep Kumar, Andrew S. Lesniewski, and Diana E. Woodward. "Managing Smile Risk."维尔莫特杂志。(2002年1月):84 - 108。
[2]西方,格雷姆。“SABR模型的校准在流动性不足的市场。”应用数学金融学。12,没有。4(2005年12月):371 - 385。