主要内容

使用Longstaff-Schwartz方法定价Swing选项

这个例子展示了如何为一个swing选项使用蒙特卡罗模拟和Longstaff-Schwartz方法。风险中性模拟潜在的天然气价格是使用向均数回归模型进行的。仿真结果用于价格摇摆的选择基于Longstaff-Schwartz方法(6]。这种方法使用一个回归技术近似的延续价值选择。之间的比较是一个多项式和样条符合回归基础。最后,分析了由此产生的价格对价格的上下边界来自欧洲和美国标准的选择。

Swing选项的概述

摇摆不定的选择是受欢迎的在能源市场的金融工具,提供灵活性的体积资产交付。为了能源消费者保护自己免受能源价格波动,他们想要锁定价格通过购买远期合同,称为基本负载远期合同。然而,消费者不知道多少能量将用于未来,和能源电力和天然气等大宗商品不容易储存。因此,消费者需要灵活变化的能量在每个交付日期交付。Swing选项提供这种灵活性。因此,完整的合同由两部分组成:基本负载远期合约,swing组件选择。

Swing选项通常是场外交易(OTC)合同可高度定制的。因此,有许多不同类型的约束和处罚(见[5更多细节)。在这个例子中,一个摇摆不定的期权定价,唯一的限制是成交量,这被称为日常合同数量(DCQ)。swing行使权利时,音量不能低于最低DCQ (minDCQ),或者超过最大DCQ (maxDCQ)。

价格波动选项有几种方法,如有限的差异,仿真和动态编程基于树(5]。下面的例子使用了基于仿真的方法Longstaff-Schwartz方法。基于仿真的方法的好处是,动力学模拟标的资产的价格是分开定价算法。有限差分和基于树的方法,定价算法必须改变为了考虑与不同的底层价格动态定价。

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

在这个例子中,天然气作为基础资产使用以下向均数回归动态[8]:

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

在哪里 W t 是一个标准的布朗运动。应用伊藤引理的对数价格导致了Orstein-Uhlenbeck过程:

d X t = κ ( θ - - - - - - X t ) d t + σ d W t

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

θ = μ - - - - - - σ 2 2 κ

θ 是均值回归水平决定的值模拟值将恢复从长远来看。 κ 的均值回归的速度决定了这个降级发生的速度。 σ 是波动的 X 。我们首先通过模拟的对数价格。后来,模拟值的指数来获得价格。

模拟的长度在一年时间内,每MMBtu最初的价格为3.9美元。蒙特卡罗模拟是进行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;%的速度均值回归日志(价格)k = 1.2;%均值回归的日志(价格)θ= 1.7;%创建HWV对象hwvobj = hwv(卡帕,θ,σ,“StartState”,X0);

仿真运行和策划。

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

图包含一个坐标轴对象。坐标轴对象与标题天然气风险中性价格模拟包含1000行类型的对象。

在这个例子中,天然气作为基础资产向均数回归动态。然而,Longstaff-Schwartz算法可以用于其他标的资产,如电,与任何潜在的价格动态。

定价Swing选项

我们考虑与五摇摆摇摆的选择权利在4.69美元/ MMBtu罢工,可行使之间的日常结算日期和到期日的次日。日常合同数量(DCQ)是10000 MMBtu,天然气的平均数量,消费者希望购买在一个给定的一天。消费者减少购买的灵活性(衰落)在2500年的一天,最低DCQ MMBtu,或增加购买(上升)到15000 MMBtu。不断复合年无风险利率是1%。

RateSpec用于表示利率期限结构。为了简单起见,我们考虑一个平坦的利率期限结构在这个例子。的值RateSpec可以修改,以适应任何利率曲线。这个函数hswingbyls在这个例子假设如果每天锻炼ExerciseDates输入是空的。

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

Longstaff-Schwartz方法是落后的迭代算法,该步骤落后的到期日。在每个练习日期、算法接近连续的值,如果不是锻炼的价值选择。这是通过对模拟的值拟合回归价格和折扣的未来价值选择在接下来的练习。未来的价值选择是称为算法向后移动。延续价值回报的总和相比于直接锻炼(下降趋势或上升)和摇摆的延续价值选择,不过少了一个秋千。如果这笔钱是小,期权持有者的最优策略是不运动在这一天。这个函数hswingbyls在这个例子中使用这种方法来确定最优运动策略和摇摆的价格选项(1,2,7]。

正如前面所讨论的,唯一约束被认为是在这个例子中是最小和最大DCQ。在这种情况下,最优的早期运动的策略是“砰砰的枪声”类型。这意味着,当它是最优的上升或下降趋势在一定日期锻炼,期权持有人应该锻炼的最大或最小DCQ最大化利润。“砰砰的枪声”运动并不是最佳策略,例如,有一个终端基于体积的点球。定价算法将需要另外跟踪所有可能的体积的水平,大大增加了运行时的性能成本。

首先,swing定价选项是使用三阶多项式适合Longstaff-Schwartz的回归方法。这个函数hswingbyls还生成一个阴谋之间的回归基础价格和锻炼的价值延续日期之前成熟。

%的价格选择使用三阶多项式适合Longstaff-Schwartz摆动%的回归抽搐;useSpline = false;SwingPrice = hswingbyls(路径、时间、RateSpec定居,成熟,罢工,ExerciseDates、NumSwings DCQ、minDCQ maxDCQ, useSpline,[],真的)

图包含一个坐标轴对象。坐标轴对象与标题Longstaff-Schwartz回归健康(三阶多项式)包含2散射类型的对象,线。

SwingPrice = 5.6943 e + 04
lsPolyTime = toc;

以上情节的回归拟合表明,三阶多项式完全不适合继续价值,特别是在铰链和极端点附近。使用csaps函数以适应回归使用立方平滑样条平滑参数为0.7。曲线拟合工具箱™运行所需的其余部分的例子。

%的价格使用平滑样条函数以适应Longstaff-Schwartz swing选项%的回归抽搐;useSpline = true;smoothingParam = 0.7;SwingPriceSpline = hswingbyls(路径、时间、RateSpec定居,成熟,罢工,ExerciseDates、NumSwings DCQ、minDCQ maxDCQ, useSpline,smoothingParam,真的)

图包含一个坐标轴对象。坐标轴对象与标题Longstaff-Schwartz回归健康(花键)包含2散射类型的对象,线。

SwingPriceSpline = 6.0729 e + 04
lsSplineTime = toc;

回归的情节显示立方平滑样条数据有一个更好的选择,从而获得更准确的值为连续值。然而,下面的比较表明,用立方平滑样条花费的时间超过一个三阶多项式。

%打印运行时间的比较displayRunningTimes (lsPolyTime lsSplineTime)
运行时间的比较:三阶多项式:4.85秒花键:6.57秒

此外,重要的是要注意,价格是完全可选性组件。因此,基本负载远期合约的价格不包括在上面的价格计算。因为我们使用一个固定的执行价格,基本负载合同有一个非零值,可以计算:

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

在哪里 t , = 1 , , N , 行使日期(见[3更多细节)。完整的合同价格,包括基本负载和摇摆不定的选择,计算以下使用swing平滑三次样条的期权价格。

%获得折扣因素卢比= intenvset (RateSpec,“开始时间”0,“EndTimes”,乘以(2:结束));D = intenvget(卢比,“盘”);%计算基本负载的价格BaseLoadPrice = DCQ。*意味着(路径(2:,:)罢工,2)“* D;%计算完整的合同价格,基于三次样条LS的结果FullContractPrice = BaseLoadPrice + SwingPriceSpline
FullContractPrice = 1.2479 e + 05

价格范围

swing选项的下界是一条欧洲选项,和上界一条美国选项(4]。相比欧洲选项,摇摆不定的选项有一个早期运动溢价在每个运动日期,因此价格应该更高。价格低于美式选择权,因为只有一个swing可以在每个运动锻炼。不止一条可以行使在一天之内使用美国的选择。

条的价格低,上界计算下面检查swing期权价格在这些范围内。欧洲地带价格计算与过去五锻炼日期。

%获得折扣因素最后NumSwings锻炼日期D = D (end-NumSwings + 1:结束);%欧洲下界idx =(路径,1)大小:1:(大小(路径,1)- NumSwings + 1);putEuro = D ' *意味着(max(罢工——路径(idx:), 0), 2);callEuro = D ' *意味着(max(路径(idx:) -罢工,0),2);下界= ((DCQ-minDCQ)。* putEuro + (maxDCQ-DCQ)。* callEuro);%的美国人上限[putAmer, callAmer] = hamericanPrice(路径、时间、RateSpec罢工);upperBound = NumSwings。* ((DCQ-minDCQ)。* putAmer + (maxDCQ-DCQ)。* callAmer);%打印价格和低/上界displaySummary (SwingPriceSpline下界,upperBound);
比较低,上界:下界(欧洲):44412.14 Swing期权价格:60729.00上界(美国):68181.42

价格计算使用Longstaff-Schwartz算法在较低和上界。下面的图显示了一个比较摇摆选项和上界和下界的数量波动增加。当波动的数量1swing选项是相当于美国的选择。日常锻炼的机会(NumSwings = 365),swing选项相当于欧洲选择日常的地带成熟。

结论

Longstaff-Schwartz方法的示例展示了使用swing选项,标的资产价格遵循一个向均数回归动态。三阶多项式和平滑三次样条是用来配合Longstaff-Schwartz的回归算法来近似连续的值。结果表明,平滑的三次样条符合数据更好的性能为代价的。最后,检查结果摇摆不定的期权价格的下界一条欧洲选项和一个上界的一条美国的选择。

引用

[1]2,。德容,C。“天然气存储使用蒙特卡罗方法估值。”杂志的衍生品。15(3):81 - 98年,2008年。

[2]多尔,乌维。“Swing期权估值和评估这样的运动策略通过蒙特卡罗技术。”Oxford, 2002.

[3]船体,约翰·C。期权、期货和其他衍生品。第六版,培生教育,Inc ., 2006年。

[4]Jaillet, P。罗恩·,,我。,Tompaidis, S. "Valuation of Commodity-Based Swing Options,管理科学。50(7):909 - 921年,2004年。

[5]Loland琥珀产品,Lindqvist Ola。“商品的估价Swing选项:一项调查。”Nor年代k, Regnesentral, 2008.

[6]龙斯达夫,弗朗西斯。施瓦兹,爱德华多。通过仿真评估美国选择:一个简单的最小二乘的方法。”金融研究的回顾。14(1):113 - 147年,2001年。

[7]Meinshausen, N。、Hambly B.M.“蒙特卡罗方法多个运动估值的选择。”数学科学。14:557 - 583,2004。

[8]Schwartz,爱德华多年代。“大宗商品价格的随机行为:对估值和套期保值的影响。”《金融杂志》上。52(3):923 - 973年,1997年。

效用函数

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

另请参阅

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

相关的例子

更多关于

外部网站