主要内容

使用Longstaff-Schwartz方法定价摆动期权

这个例子展示了如何使用蒙特卡罗模拟和Longstaff-Schwartz方法为波动期权定价。采用均值回归模型对基础天然气价格进行了风险中性模拟。仿真结果用于基于Longstaff-Schwartz方法的波动期权定价[6]。此方法使用回归技术来近似期权的连续值。将多项式和样条基进行比较,以拟合回归。最后,根据标准欧洲和美国期权得出的上下价格边界对结果价格进行分析。

Swing选项概述

波动期权是能源市场上很受欢迎的金融工具,它在交割资产的数量上提供了灵活性。为了保护自己不受能源价格波动的影响,能源消费者希望通过购买远期合约来锁定价格基本负载远期合同.然而,消费者并不知道未来会使用多少能源,而且电力和天然气等能源商品也不容易储存。因此,消费者希望能够灵活地更改在每个交付日期交付的能量量。Swing选项提供了这种灵活性。因此,整个合约由两部分组成:基本负荷远期合约和摆动期权部分。

摇摆期权通常是场外(OTC)合约,可以高度定制。因此,有许多不同类型的约束和惩罚(见[5)。在本例中,波动期权定价时,唯一的约束是日交易量,即每日合约数量(DCQ)。当右摆时,音量不能低于最小DCQ (minDCQ),或超过最大DCQ(maxDCQ).

有几种方法可以为摆动期权定价,如有限差分法、模拟法和基于树的动态规划法[5]这个例子使用基于LaStand施瓦兹方法的基于仿真的方法。模拟的方法的好处是用于模拟基础资产价格的动态与定价算法分离。在有限差分和基于树的方法中,定价算法必须改变以考虑PRI。使用不同的基础价格动态进行定价。

天然气价格的风险中性模拟

在本例中,天然气被用作基础资产,其均值恢复动态[8]如下:

d 年代 t κ μ - 日志 年代 t 年代 t d t + σ 年代 t d W t

在哪里 W t 是一个标准的布朗运动。将Ito引理应用于价格的对数可以得到一个Orstein-Uhlenbeck过程:

d X t κ θ - X t d t + σ d W t

在哪里 X t 日志 年代 t κ > 0 , θ 被定义为:

θ μ - σ 2 2 κ

θ 是确定模拟值在长期运行中将恢复到的值的平均恢复级别。 κ 是决定这种逆转发生多快的平均逆转速度。 σ 是波动性 X .我们首先模拟价格的对数。然后,对模拟值进行指数运算,得到价格。

模拟时间为1年,初始价格为3.9美元/ MMBtu。蒙特卡洛模拟进行了1000次试验,每天进行一次。在实践中,这些参数是根据市场数据进行校准的。在这个例子中, κ 1 2 θ 1 7 , σ 5 9 这个hwv对象用于模拟天然气价格的均值回归动态。

%结算日期解决=“01 - jun - 2014”%到期日成熟=“01 - jun - 2015”%实际依据基础= 0;%初始日志(价格$/MMBtu)X0=对数(3.9);%原木(价格)波动性西格玛=0.59;%蒙特卡罗模拟试验次数NumTrials = 1000;%时段数(日)NumPeriods = daysdif(结算,到期,基础);日时间步长dt = 1 / NumPeriods;对数平均反转速度(价格)Kappa=1.2;%原木平均回复水平(价格)θ= 1.7;%创建HWV对象Kappa, Theta, Sigma,“StartState”, X0);

运行并绘制了仿真图。

%设置随机数生成器种子savedState = rng (0,“旋风”);%模拟汽油价格[路径,时间]= hwvobj.simBySolution(NumPeriods,“NTRIALS”NumTrials,...“DeltaTime”, dt);路径=挤压(exp(路径));%恢复随机数生成器状态rng (savedState);%绘制路径图;情节(时间、路径);标题(“天然气风险中性价格模拟”);包含(“时间”);ylabel (“价格”);

图中包含一个坐标轴。标题为“天然气风险中性价格模拟”的坐标轴包含1000个线型对象。

在本例中,天然气被用作具有均值回归动态的基础资产。然而,Longstaff-Schwartz算法可以用于其他潜在资产,如电力,具有任何潜在价格动态。

为波动期权定价

我们考虑一种有5个波动权的波动期权,执行价为4.69美元/MMBtu,可在结算日至到期日之间每天执行。日合同数量(DCQ)为10,000 MMBtu,这是消费者预计在给定的一天内购买的天然气的平均数量。消费者可以灵活地在一天内将购买量(下行)减少到最低2500 MMBtu,或将购买量(上行)增加到15000 MMBtu。连续复合年无风险利率为1%。

RateSpec表示利率期限结构。为了简单起见,我们在本例中考虑一个统一的利率期限结构。的值RateSpec可以调整以适应任何利率曲线。这个函数hswingbyls在这个例子中,假设有一个日常锻炼ExerciseDates输入为空。

%定义RateSpecrfrate = 0.01;复合= 1;RateSpec = intenvset (“ValuationDate”解决,startdate可以的解决,...“EndDates”成熟,“利率”,rfrate,...“复合”,复配,“基础”、基础);%日常锻炼% hswingbyls假设空的ExerciseDates为每日锻炼锻炼日期=[];%摆动次数NumSwings = 5;%每日合同数量(MMBtuDCQ = 10000;% MMBtu中最小DCQ约束minDCQ = 2500;%MMBtu中的最大DCQ约束maxDCQ = 15000;%的罢工罢工= 4.69;

Longstaff-Schwartz方法是一种向后迭代算法,它从成熟度日期开始向后走。在每个行权日期,算法逼近延续值,即期权未行权时的价值。这是通过对模拟价格的值和期权在下一次行权日的贴现未来价值进行拟合回归来实现的。期权的未来价值被称为算法在时间上向后移动。延续价值与立即行使(向下或向上)的收益和少一次右转的期权延续价值的总和进行比较。如果这个总和更小,期权持有者的最佳策略是在那个日期不执行。这个函数hswingbyls在本例中,使用该方法确定最优的执行策略和波动期权的价格[127].

如前所述,本例中考虑的唯一约束是最小和最大DCQ。在这种情况下,最佳的早期锻炼策略是“砰砰”的类型。这意味着,当在某个行权日上扬或下扬是最佳选择时,期权持有人应始终以最大或最小DCQ行权,以实现利润最大化。“砰砰”的一声例如,如果存在基于卷的终端惩罚,那么练习将不是最佳策略。定价算法还需要跟踪所有可能的卷级别,这会显著增加运行时性能成本。

首先,摆动期权的定价使用三阶多项式来拟合Longstaff-Schwartz方法的回归。这个函数hswingbyls还生成到期前行权日的基础价格和延续价值之间的回归图。

使用三阶多项式拟合longstaffa - schwartz的价格波动期权%的回归抽搐;useSpline = false;路径,时间,利率,结算,到期,...Strike, ExerciseDates, NumSwings, DCQ, minDCQ, maxDCQ, useSpline,...[],真的)

图中包含一个坐标轴。标题Longstaff-Schwartz回归拟合(三阶多项式)的轴包含两个散点类型的对象,线。

SwingPrice = 5.6943 e + 04
lsPolyTime = toc;

从上面的回归拟合图可以看出,三阶多项式与延拓值的拟合并不完美,特别是在铰处和极值点附近。使用csaps函数拟合回归使用三次平滑样条与平滑参数0.7。运行示例的其余部分需要使用曲线拟合工具箱™。

%使用平滑样条拟合Longstaff-Schwartz的价格波动期权%的回归抽搐;useSpline = true;smoothingParam = 0.7;SwingPriceSpline = hswingbyls(路径,时间,利率,结算,到期,...Strike, ExerciseDates, NumSwings, DCQ, minDCQ, maxDCQ, useSpline,...smoothingParam,true)

图中包含一个坐标轴。标题为Longstaff-Schwartz回归拟合(样条)的轴包含两个类型为散点、线的对象。

SwingPriceSpline = 6.0757 e + 04
lsSplineTime = toc;

回归图表明,三次平滑样条对数据拟合较好,从而获得了更准确的延拓值。然而,下面的比较表明,使用三次平滑样条比三次多项式需要更长的时间。

打印运行时间的比较displayRunningTimes (lsPolyTime lsSplineTime)
运行时间比较:三次多项式:9.48秒样条:13.13秒

此外,值得注意的是,价格仅代表期权成分。因此,基本负荷远期合同的价格不包括在上述计算价格中。由于我们使用的是固定的执行价格,所以基本载荷合同的值是非零的,可以通过以下方式计算:

B 一个 年代 e l o 一个 d P r c e 1 N e - r t E 年代 t - K

在哪里 t 1 N 是演习日期(见[3.)。合约的全部价格,包括基本负荷和摆动期权,在下面的计算中使用平滑三次样条的摆动期权价格。

%获得折扣系数卢比= intenvset (RateSpec,“开始时间”0,“EndTimes”,乘以(2:结束));D = intenvget(卢比,“盘”);计算基本负载价格BaseLoadPrice=DCQ.*平均值(路径(2:end,:)-Strike,2)*D;%根据三次样条LS的结果计算全合同价格FullContractPrice = BaseLoadPrice + SwingPriceSpline
FullContractPrice = 1.2482 e + 05

价格范围

波动期权的下界是一条欧洲期权,上界是一条美国期权[4].与欧洲期权相比,波动期权在每个行使日期都有提前行使溢价,因此价格应该较高。价格低于美国期权条,因为在每个行权日期只能行权一次。使用美国期权,可以在一天内行使不止一条。

下面计算上下限条带的价格,以检查摆动期权价格是否在这些范围内。欧洲带钢价格根据最近五个行使日期计算。

%获取NumSwings最后一次执行日期的折扣系数D = D (end-NumSwings + 1:结束);%欧洲下限idx = size(Paths, 1):-1:(size(Paths, 1) - NumSwings + 1);putEuro = D'*mean(max(Strike - Paths(idx,:), 0),2);drawtext (max(Paths(idx,:) - Strike, 2), '返回路径'),colorffffff;下界= ((DCQ-minDCQ)。* putEuro + (maxDCQ-DCQ)。* callEuro);美国上界%[putAmer,callAmer]=hamericanPrice(路径、时间、费率规格、罢工);上限=NumSwings.*((DCQ minDCQ)。*putAmer+(maxDCQ DCQ)。*callAmer;%打印价格和上下限displaySummary(SwingPriceSpline,下标,上标);
与上下限的比较:下限(欧洲):44412.14摆动期权价格:60757.33上限(美国):68181.42

使用Longstaff-Schwartz算法计算的价格是在上下边界范围内的。下图显示了随着摆动次数的增加,摆动选项和上下边界之间的比较。当摆动的次数是1,摇摆选项相当于美式选项。在每日锻炼机会的情况下(NumSwings = 365),波动期权相当于日到期的欧洲期权剥离。

结论

该示例展示了Longstaff-Schwartz方法为波动期权定价,其中标的资产遵循均值回归动态。采用三阶多项式和光滑三次样条拟合Longstaff-Schwartz算法中的回归,以逼近延拓值。结果表明,平滑三次样条较好地拟合数据,但性能较慢。最后,根据欧洲期权条的下界和美国期权条的上界来检查由此产生的波动期权价格。

工具书类

A.布格特,C.德容“利用蒙特卡罗方法对气体储存进行估价”。杂志的衍生品。15(3): 81 - 98年,2008年。

[2]多尔,乌维。《用蒙特卡罗技术评估挥杆选择和运动策略》牛津大学,2002年。

[3]赫尔,约翰C。期权、期货和其他衍生品.第六版,培生教育集团,2006。

[4] Jaillet P., Ronn, E. I., Tompaidis, S.“基于商品的波动期权估值,管理科学。50(7): 909 - 921年,2004年。

洛兰德,安伯斯,林奎斯特,奥拉。《基于商品的摇摆期权估值:一项调查》挪威语,Regnesentral 2008。

朗斯塔夫,弗朗西斯A.,施瓦茨,爱德华多S.《模拟评估美国期权:一种简单的最小二乘方法》金融研究的回顾。14(1): 113 - 147年,2001年。

Meinshausen, n.m., Hambly, B.M.多元期权估值的蒙特卡罗方法数学科学。14:557 - 583, 2004。

[8] Schwartz, Eduardo S。商品价格的随机行为:对估值和对冲的影响。金融杂志。52(3):923-973, 1997.

效用函数

函数displaySummary(SwingPriceSpline, lowerBound, upperBound) fprintf(`与上界和下界的比较:\n `);流(' \ n ')fprintf('下界(欧洲):%.2f\n',下界);流('摆动期权价格:%.2f\n', SwingPriceSpline);流('上界(美式):%.2f\n\n', upperBound);结束函数displayRunningTimes (lsPolyTime lsSplineTime)流('运行时间的比较:\n');流(' \ n ')fprintf('三阶多项式:%.2f秒\n', lsPolyTime);流(花键:%。2 f秒\ n \ n”, lsSplineTime);结束

另请参阅

||||||||||||||||||||||

相关的例子

更多关于

外部网站