使用模拟互换期权价格与利率模型

介绍

这个例子展示了如何使用利率价格欧洲互换期权模型在金融工具的工具箱™。具体地说,一个Hull-White因素模型,线性高斯双因素模型,LIBOR市场模型校准市场数据,然后使用蒙特卡罗模拟用于生成利率路径。

下面的章节设置数据,然后使用例子<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">模拟利率路径使用Hull-White单因素模型,<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">使用线性高斯双因素模型模拟利率路径,<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">同业拆借市场利率路径使用模拟模型:

构造一个零线

这个例子展示了如何使用ZeroRates零线是硬编码的。您还可以创建一个引导零线的零线从市场数据(例如,存款、期货、远期和掉期)

零线的硬编码的数据被定义为:

解决= datenum (2008年- 7月21日的);%零线CurveDates = daysadd(结算360 * ([1 3 5 7 10 20]),1);ZeroRates = (4.3 1.9 2.6 3.1 3.5 4) ' / 100;情节(CurveDates ZeroRates) datetick标题([“零曲线”datestr(解决)]);

构造一个IRCurve对象。

irdc = IRDataCurve (“零”、结算、CurveDates ZeroRates);

创建RateSpec

RateSpec = intenvset (“利率”ZeroRates,“EndDates”CurveDates,StartDate可以的,解决)
RateSpec =结构体字段:FinObj:“RateSpec”复合:2盘:x1双[6]利率:x1双[6]EndTimes: x1双[6]开始时间:x1双[6]EndDates: x1双[6]startdate可以:733610 ValuationDate: 733610: 0 EndMonthRule: 1

掉期期权参数定义

而蒙特卡罗模拟通常用于更复杂的衍生品价值(例如,百慕大互换期权),在本例中,欧洲互换期权的价格计算演习日期的五年,一个潜在的交换的五年。

InstrumentExerciseDate = datenum (2013年- 7月21日的);InstrumentMaturity = datenum (2018年- 7月21日的);InstrumentStrike = .045;

计算出黑色的模型和掉期期权波动率矩阵

黑色的模型通常用于欧洲行使利率期权的价格和报价,也就是说,帽子、地板和掉期期权。在掉期期权的情况下,黑色的模型被用来暗示鉴于目前观察到的市场价格的波动。下列矩阵显示了一系列的黑人隐含波动率互换期权行使日期(列)和底层交换期限(行)。

SwaptionBlackVol =[22日21日19日17日15 13 12 21日19日17日16 15 13 11 20 18 15 14 12 11 19日17日15 14 13 12 10 18 16 14 13 12 11 10 15 14 13 12 12 11 10 13 13 12 11 11 10 9]/ 100;ExerciseDates = 7 10 [1:5];男高音= 7 10 [1:5];EurExDatesFull = repmat (daysadd(解决ExerciseDates * 360 1)”,长度(期限),1);EurMatFull =重塑(daysadd (EurExDatesFullrepmat(360 *男高音,1,长度(ExerciseDates)), 1),大小(EurExDatesFull));

选择校准仪器

选择仪器校准模型校准的任务之一。百慕大互换期权,是典型的校准欧洲互换期权与百慕大co-terminal互换期权定价。在这种情况下,互换期权有一个潜在的男高音,成熟成熟前的掉期期权定价(2018年- 7月21日)是用于校准。

%找到过期的掉期期权的到期日或之前%样本互换期权relidx =找到(EurMatFull < = InstrumentMaturity);

使用黑色的模型计算互换期权的价格

这个例子展示了如何使用黑色的模型计算互换期权的价格。然后使用互换期权价格比较模型的预测从校准过程获得的值。

使用黑色的模型计算互换期权价格:

SwaptionBlackPrices = 0(大小(SwaptionBlackVol));SwaptionStrike = 0(大小(SwaptionBlackVol));iSwaption = 1:长度(ExerciseDates)iTenor = 1:长度(期限)[~,SwaptionStrike (iTenor iSwaption)] = swapbyzero (RateSpec (NaN 0),解决,EurMatFull (iTenor iSwaption),StartDate可以的EurExDatesFull (iTenor iSwaption),“LegReset”[1]);SwaptionBlackPrices (iTenor iSwaption) = swaptionbyblk (RateSpec,“电话”SwaptionStrike (iTenor iSwaption),结算,EurExDatesFull (iTenor iSwaption) EurMatFull (iTenor iSwaption) SwaptionBlackVol (iTenor iSwaption));结束结束

定义仿真参数

这个例子展示了如何使用simTermStructs方法HullWhite1F,LinearGaussian2F,LiborMarketModel对象。

演示使用simTermStructs方法HullWhite1F,LinearGaussian2F,LiborMarketModel模拟对象,使用以下参数:

nPeriods = 5;DeltaTime = 1;nTrials = 1000;男高音= (1:10)';SimDates = daysadd(结算360 * DeltaTime * (0: nPeriods), 1) SimTimes = diff (yearfrac (SimDates (1) SimDates))% 1年的时间和一个等间距的男高音,行使行%第五行和掉期期权到期将第五列exRow = 5;endCol = 5;
SimDates = 733610 733975 734340 734705 735071 735436 SimTimes = 1.0000 1.0000 - 1.0000 1.0027 - 1.0000

模拟利率路径使用Hull-White单因素模型

这个例子展示了如何使用Hull-White模拟利率路径单因素模型。之前这个例子使用HullWhite1F模型中,确保您已经设置数据中描述:

Hull-White的单因素模型描述了短期汇率的演变和指定使用零线,α,σ参数方程

d r = ( θ ( t ) 一个 ( t ) r ] d t + σ ( t ) d W

地点:

博士短期利率的变化在一个小的时间间隔,dt

r是短期利率。

Θ(t)是时间的函数确定的平均方向r移动时,选择这样的动作r今天的零息债券收益率曲线是一致的。

α均值回归的速度。

dt是一个小变化。

σ是一年一度的短期汇率的标准偏差。

W是布朗运动。

使用函数Hull-White模型校准swaptionbyhw构造一个三叉树掉期期权的价格。校准由最小化观察到的市场价格之间的差异(计算上面使用黑色的掉期期权隐含波动率矩阵,明白了<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">计算出黑色的模型和掉期期权波动率矩阵)和模型的预测价格。

在这个例子中,优化工具箱™函数lsqnonlin用于查找的参数集最小化观测值和预测值之间的差异。然而,其他方法(例如,模拟退火)可能是适当的。启动参数和约束ασ设置变量x0,,乌兰巴托;这些也可以变化取决于特定的标定方法。

校准的参数集最小化观测值和预测值之间的差异swaptionbyhwlsqnonlin

TimeSpec = hwtimespec(解决daysadd(定居,360 * (1:11),1),2);HW1Fobjfun = @ (x) SwaptionBlackPrices (relidx)swaptionbyhw (hwtree (hwvolspec(结算,' 11 - 8月- 2015 ',x (2),' 11 - 8月- 2015 'x (1)), RateSpec TimeSpec),“电话”SwaptionStrike (relidx),EurExDatesFull (relidx), 0, EurExDatesFull (relidx) EurMatFull (relidx));选择= optimset (“disp”,“通路”,“MaxFunEvals”,1000,“TolFun”1 e-5);%找到参数,观察和之间的差异最小化%的预测价格x0 = [。1。01];磅= [0 0];乌兰巴托= [1];HW1Fparams = lsqnonlin (x0, HW1Fobjfun磅,乌兰巴托,选项);HW_alpha = HW1Fparams (1) HW_sigma = HW1Fparams (2)
规范一阶迭代Func-count f (x)最优步0 3 0.953772 20.5 1 6 0.142828 0.0169199 1.53 2 9 3 12 0.123022 0.0146705 2.31 0.122222 0.0154098 0.482 4 15 0.122217 0.00131297 0.00409局部最小值。lsqnonlin停止是因为最后的平方和的变化相对于其初始值小于所选值函数的宽容。HW_alpha HW_sigma = 0.0088 = 0.0967

构建HullWhite1F模型使用HullWhite1F构造函数。

HW1F = HullWhite1F (RateSpec HW_alpha HW_sigma)
HW1F = HullWhite1F属性:ZeroCurve: [1 x1 IRDataCurve]α:@ (t, V) inAlphaσ:@ inSigma (t, V)

使用蒙特卡罗模拟生成利率路径HullWhite1F.simTermStructs

HW1FSimPaths = HW1F.simTermStructs (nPeriods,“NTRIALS”nTrials,“DeltaTime”DeltaTime,“男高音”男高音歌唱家,“反向”,真正的);trialIdx = 1;图冲浪(男高音、SimDates HW1FSimPaths (:,:, trialIdx)) datetickykeeptickskeeplimits标题([零的演化曲线试验:num2str (trialIdx)“船体的白色模式”])包含(“男高音(年)”)

欧洲互换期权价格。

DF = exp (bsxfun (@times、-HW1FSimPaths repmat(男高音”,[nPeriods + 1 1])));SwapRate = (1 - DF (exRow、endCol:))。/笔(bsxfun (@times 1 DF (exRow, 1: endCol,:)));PayoffValue = 100 *马克斯(SwapRate-InstrumentStrike,0)。*总和(bsxfun (@times 1 DF (exRow, 1: endCol,:)));RealizedDF = prod (exp (bsxfun (@times -HW1FSimPaths (1: exRow 1:), SimTimes (1: exRow))), 1);HW1F_SwaptionPrice =意味着(RealizedDF * PayoffValue)。
HW1F_SwaptionPrice = 2.1839

使用线性高斯双因素模型模拟利率路径

这个例子展示了如何使用线性高斯模拟利率路径双因素模型。之前这个例子使用LinearGaussian2F模型中,确保您已经设置数据中描述:

线性高斯双因素模型(称为G2 + + Brigo和墨丘里奥教练,看到的<一个href="//www.tianjin-qmedu.com/help/fininst/Bibliography.html" class="a">使用蒙特卡罗模拟利率建模)也是一个短期汇率模型,但是涉及两个因素。具体地说:

r ( t ) = x ( t ) + y ( t ) + ϕ ( t )

d x ( t ) = 一个 ( t ) x ( t ) d t + σ ( t ) d W 1 ( t ) , x ( 0 ) = 0

d y ( t ) = b ( t ) y ( t ) d t + η ( t ) d W 2 ( t ) , y ( 0 ) = 0

在哪里 d W 1 ( t ) d W 2 ( t ) = ρ d t 是一个二维布朗运动与相关ρ,ϕ是一个函数选择匹配最初的零线。

这个函数swaptionbylg2f用于计算分析互换期权价格模型的参数值,因此可以用来校准模型。校准由最小化观察到的市场价格之间的差异(计算上面使用黑色的掉期期权隐含波动率矩阵,明白了<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">计算出黑色的模型和掉期期权波动率矩阵)和模型的预测价格。

在这个例子中,类似的方法<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">模拟利率路径使用Hull-White单因素模型和优化工具箱功能lsqnonlin用于最小化之间的差异观察互换期权价格和预测互换期权的价格。然而,其他方法(例如,模拟退火)也可能是适当的。启动参数和约束一个,b,η,ρ,σ设置变量x0,,乌兰巴托;这些也可以变化取决于特定的标定方法。

校准的参数集最小化观测值和预测值之间的差异swaptionbylg2flsqnonlin

G2PPobjfun = @ (x) SwaptionBlackPrices (relidx)——swaptionbylg2f (irdc, x (1), (2) x (3), (4) x, x (5), SwaptionStrike (relidx),EurExDatesFull (relidx) EurMatFull (relidx),“重置”1);选择= optimset (“disp”,“通路”,“MaxFunEvals”,1000,“TolFun”1 e-5);x0 = [。2。1。02。01-.5]; lb = [0 0 0 0 -1]; ub = [1 1 1 1 1]; LG2Fparams = lsqnonlin(G2PPobjfun,x0,lb,ub,options)
规范一阶迭代Func-count f (x)最优步0 6 12.3547 67.6 1 12 1.37984 0.0979743 8.59 2 18 24 0.445202 0.0282118 1.31 1.37984 0.112847 8.59 3 4 30 42 36 0.134678 0.0843366 7.78 0.236746 0.0564236 3.02 5 6 7 48 0.0287731 0.038967 0.732 0.0398816 0.015084 6.34 8 54 0.0273025 0.112847 0.881 9 60 66 0.0241689 0.125602 1.06 0.0241689 0.213033 1.06 72 0.0239103 0.0314005 9.78 84 0.0234246 0.0491135 1.21 78 0.0234246 0.0286685 1.21 13 14 15 96 90 0.023304 0.0122784 1.67 0.0231931 0.0245568 5.92 102 0.0230898 0.00785421 0.434 17 114 108 0.0230898 0.0245568 0.434 0.023083 0.00613919 0.255局部最小值。lsqnonlin停止是因为最后的平方和的变化相对于其初始值小于所选值函数的宽容。LG2Fparams = 0.5752 0.1181 0.0146 0.0119 - -0.7895

创建G2PP对象和使用蒙特卡罗模拟生成利率路径LinearGaussian2F.simTermStructs

LG2f_a = LG2Fparams (1);LG2f_b = LG2Fparams (2);LG2f_sigma = LG2Fparams (3);LG2f_eta = LG2Fparams (4);LG2f_rho = LG2Fparams (5);G2PP = LinearGaussian2F (RateSpec LG2f_a、LG2f_b LG2f_sigma, LG2f_eta, LG2f_rho);G2PPSimPaths = G2PP.simTermStructs (nPeriods,“NTRIALS”nTrials,“DeltaTime”DeltaTime,“男高音”男高音歌唱家,“反向”,真正的);trialIdx = 1;图冲浪(男高音、SimDates G2PPSimPaths (:,:, trialIdx)) datetickykeeptickskeeplimits标题([零的演化曲线试验:num2str (trialIdx)“G2 + +模型”])包含(“男高音(年)”)

欧洲互换期权价格。

DF = exp (bsxfun (@times、-G2PPSimPaths repmat(男高音”,[nPeriods + 1 1])));SwapRate = (1 - DF (exRow、endCol:))。/笔(bsxfun (@times 1 DF (exRow, 1: endCol,:)));PayoffValue = 100 *马克斯(SwapRate-InstrumentStrike,0)。*总和(bsxfun (@times 1 DF (exRow, 1: endCol,:)));RealizedDF = prod (exp (bsxfun (@times -G2PPSimPaths (1: exRow 1:), SimTimes (1: exRow))), 1);G2PP_SwaptionPrice =意味着(RealizedDF * PayoffValue)。
G2PP_SwaptionPrice = 2.0988

同业拆借市场利率路径使用模拟模型

这个例子展示了如何使用伦敦银行间拆放款利率市场利率路径模拟模型。之前这个例子使用LiborMarketModel,确保你有设置数据中描述:

伦敦银行间拆放款利率市场模型(LMM)与短期汇率模型的不同之处在于,它发展的一组离散的远期利率。具体来说,对数正态LMM指定以下每个远期利率的扩散方程

d F ( t ) F = μ d t + σ ( t ) d W

地点:

W是一个n维几何布朗运动

d W ( t ) d W j ( t ) = ρ j

LMM涉及远期利率基于无套利的漂移参数。具体来说,现货LIBOR测量下,表示为

μ ( t ) = σ ( t ) j = ( t ) τ j ρ , j σ j ( t ) F j ( t ) 1 + τ j F j ( t )

地点:

τ 相关的时间分数吗th远期利率

问(t)索引定义的关系吗

T ( t ) 1 < t < T ( t )

和现货LIBOR计价单位的定义是

B ( t ) = P ( t , T ( t ) ) n = 0 ( t ) 1 ( 1 + τ n F n ( T n ) )

LMM是如何的选择模型波动性和相关性以及如何评估这些模型的参数的波动性和相关性。在实践中,您可能会使用历史数据的组合(例如,观察远期利率之间的相关性)和当前的市场数据。对于这个例子,只掉期期权数据使用。此外,许多不同的参数化的波动性和相关性存在。对于这个示例,使用两个相对简单的参数化。

最受欢迎的功能形式的文学波动:

σ ( t ) = φ ( 一个 ( T t ) + b ) e c ( T t ) + d

在哪里ϕ调整曲线匹配的波动远期利率。在这个例子中,所有的ϕ的拍摄1。的相关性,使用函数形式如下:

ρ , j = e β | j |

一旦功能形式被指定,这些参数必须使用市场数据估计。一个有用的近似,最初由Rebonato,如下,这对欧洲互换期权与黑色的波动,给定一组的波动函数和相关矩阵

( υ α , β l F ) 2 = , j = α + 1 β w ( 0 ) w j ( 0 ) F ( 0 ) F j ( 0 ) ρ , j 年代 α , β ( 0 ) 2 0 T α σ ( t ) σ j ( t ) d t

地点:

w ( t ) = τ P ( t , T ) k = α + 1 β τ κ P ( t , t κ )

这个计算是使用函数来完成的blackvolbyrebonato计算分析互换期权价格模型的参数值,因此,用于校准模型。校准由最小化之间的差异观察隐含互换期权黑波动和预测黑波动。

在这个例子中,类似的方法<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">模拟利率路径使用Hull-White单因素模型和<一个href="//www.tianjin-qmedu.com/help/fininst/price-bermudan-swaptions-with-different-interest-rate-models.html" class="intrnllnk">使用线性高斯双因素模型模拟利率路径优化工具箱函数在哪里lsqnonlin用于最小化之间的差异观察互换期权价格和预测互换期权的价格。然而,其他方法(例如,模拟退火)也可能是适当的。启动参数和约束一个,b,d,β设置变量x0,,乌兰巴托;这些也可以变化取决于特定的标定方法。

校准的参数集最小化观测值和预测值之间的差异blackvolbyrebonatolsqnonlin

nRates = 10;βCorrFunc = @ (i, j) exp(β* abs (i j));objfun = @ (x) SwaptionBlackVol (relidx)——blackvolbyrebonato (RateSpec,repmat ({@ (t)的(大小(t))。* * t + x (x (1) (2))。* exp (t - x (3) *) + x (4)}, nRates-1, 1),CorrFunc (meshgrid (1: nRates-1)”, meshgrid (1: nRates-1) x (5))EurExDatesFull (relidx) EurMatFull (relidx),“时间”1);选择= optimset (“disp”,“通路”,“MaxFunEvals”,1000,“TolFun”1 e-5);x0 = [。2。05 1 .05 .2]; lb = [0 0 .5 0 .01]; ub = [1 1 2 .3 1]; LMMparams = lsqnonlin(objfun,x0,lb,ub,options)
规范一阶迭代Func-count f (x)最优步0 6 0.156251 0.483 1 12 18 0.00463441 0.165527 0.00095 0.00870177 0.188164 0.0339 2 3 24 30 0.00294775 0.0892617 7.47 0.00331055 0.351017 0.0154 4 e-05 5 36 42 0.00278988 0.0145632 4.15 0.00281565 0.385779 0.00917 6 e-05 7 48 0.00278522 0.115042 0.00116局部最小值。lsqnonlin停止是因为最后的平方和的变化相对于其初始值小于所选值函数的宽容。LMMparams = 0.0781 0.1656 0.5121 0.0617 - 0.0100

计算VolFuncLMM对象。

一个= LMMparams (1);b = LMMparams (2);c = LMMparams (3);d = LMMparams (4);β= LMMparams (5);VolFunc = repmat ({@ (t)的(大小(t))。* (* t + b)。* exp (t - c *) + d}, nRates-1, 1);

情节波动函数。

图fplot (VolFunc{1}, 20[0])标题(“波动性”功能)CorrelationMatrix = CorrFunc (meshgrid (1: nRates-1)”, meshgrid (1: nRates-1),β);

检查相关矩阵。

disp (的相关矩阵)流([repmat (' % 1.3 f '1、长度(CorrelationMatrix))' \ n '】,CorrelationMatrix)
相关矩阵1.000 0.990 0.980 0.970 0.961 0.951 0.942 0.932 0.923 0.990 1.000 0.990 0.980 0.970 0.961 0.951 0.942 0.932 0.980 0.990 1.000 0.990 0.980 0.970 0.961 0.951 0.942 0.970 0.980 0.990 1.000 0.990 0.980 0.970 0.961 0.951 0.961 0.970 0.980 0.990 1.000 0.990 0.980 0.970 0.961 0.951 0.961 0.970 0.980 0.990 1.000 0.990 0.980 0.970 0.942 0.951 0.961 0.970 0.980 0.990 1.000 0.990 0.980 0.932 0.942 0.951 0.961 0.970 0.980 0.990 1.000 0.990 0.923 0.932 0.942 0.951 0.961 0.970 0.980 0.990 1.000

创建LMM对象和使用蒙特卡罗模拟生成利率路径LiborMarketModel.simTermStructs

LMM = LiborMarketModel (irdc VolFunc CorrelationMatrix,“时间”1);[LMMZeroRates, ForwardRates] = LMM.simTermStructs (nPeriods,“nTrials”,nTrials);trialIdx = 1;图tmpPlotData = LMMZeroRates (:,:, trialIdx);tmpPlotData (tmpPlotData = = 0) =南;冲浪(男高音,SimDates tmpPlotData)标题([零的演化曲线试验:num2str (trialIdx)“伦敦银行同业拆息市场模式”])包含(“男高音(年)”)

欧洲互换期权价格。

DF = exp (bsxfun (@times、-LMMZeroRates repmat(男高音”,[nPeriods + 1 1])));SwapRate = (1 - DF (exRow、endCol:))。/笔(bsxfun (@times 1 DF (exRow, 1: endCol,:)));PayoffValue = 100 *马克斯(SwapRate-InstrumentStrike,0)。*总和(bsxfun (@times 1 DF (exRow, 1: endCol,:)));RealizedDF = prod (exp (bsxfun (@times -LMMZeroRates (2: exRow + 1, 1,:), SimTimes (1: exRow))), 1);LMM_SwaptionPrice =意味着(RealizedDF * PayoffValue)。
LMM_SwaptionPrice = 1.9915

比较利率建模结果

这个例子展示了如何比较结果欧洲与不同的利率掉期期权定价模型。

比较结果为欧洲与利率互换期权定价模型使用蒙特卡罗模拟。

disp (' ')流(的蒙特卡洛试验:# % 8 d \ n 'nTrials)流(的时间/试验:# % 8 d \ n \ n”nPeriods)流(“HW1F欧洲互换期权价格:% 8.4 f \ n 'HW1F_SwaptionPrice)流(“LG2F Europesn互换期权价格:% 8.4 f \ n 'G2PP_SwaptionPrice)流(“LMM欧洲互换期权价格:% 8.4 f \ n 'LMM_SwaptionPrice)
#蒙特卡罗试验:1000 #的时间段/试验:5 HW1F欧洲互换期权价格:2.1839 LG2F Europesn互换期权价格:2.0988 LMM欧洲互换期权价格:1.9915

引用

Brigo、d和f .墨丘里奥教练利率模型——理论和实践与微笑,通胀和信贷,2006年Springer融资。

安徒生,l . v . Piterbarg,利率建模大西洋金融出版社。2010年。

船体、J、期权、期货和其他衍生品,2003年Springer融资。

Glasserman P蒙特卡罗方法在金融工程学,普伦蒂斯霍尔出版社,2008。

Rebonato, R。,K. McKay, and R. White,Sabr /伦敦银行同业拆息市场模式:复杂的利率衍生品定价、校准和套期保值约翰•威利& Sons 2010。

另请参阅

|||||||||||

相关的话题