资产定价的期权隐含概率分布估计

肯·迪利(Ken Deeley), MathWorks出版社


预测一项资产的表现并量化与这种预测相关的不确定性是一项困难的任务:由于缺乏观察到的市场数据,这一任务往往变得更加困难。

最近,中央银行对使用观察到的期权价格数据进行预测产生了兴趣,特别是在金融不确定的时期[1],[2]。一项资产的看涨期权和看跌期权受到市场对资产未来表现的看法的影响。本文介绍了一个基于MATLAB的工作流程®从市场上观察到的相对稀缺的期权价格数据开始,用于创建对资产表现的预测。这个工作流程中的主要步骤是:

  • 从市场数据计算隐含波动率
  • 使用SABR插值创建其他数据点
  • 估算暗示概率密度
  • 模拟未来资产价格
  • 用扇形图表示预测的不确定性

粉丝图表以可访问的图形形式传送信息,使金融专业人员能够将其预测的投影和不确定性传达给非专科论者受众(图1)。

本文中使用的MATLAB代码可用于下载

图1所示。表示资产价格预测和相关不确定性的扇形图。

从市场数据计算隐含波动率

分析师面临的一个关键挑战是从少量可用的市场数据中获得洞察。创建额外数据点的一种技术是(K, σ)空间内插值,其中K是执行价格,σ是资产波动率。要使用这种技术,我们首先必须从市场数据中计算隐含波动率。

我们假设,在最小的情况下,我们可以观察到特定资产的执行买入价格对(或执行卖出价格对),并且我们也知道标的资产价格、无风险利率和期权的到期日。我们使用以下符号将数据存储在MATLAB表中(图2)。

  • K -执行价格($)
  • C - 呼叫价格($)
  • P——看跌期权价格($)
  • T - 期权的到期时间(年)
  • Rf -无风险率(范围为[0,1]的十进制数)
  • S -标的资产价格($)
图2。在MATLAB表中观察市场数据。这个假设的数据有6个与给定到期时间的期权有关的观测值和8个不同的到期时间,总共有48个观测值。

当我们在(k,σ) - 空间中插入时,资产挥发性σ在范围内测量为十进制数量[0,1]。我们首先通过使用Financial Toolbox™功能计算Black-Scholes隐含波动的呼叫价格数据分析Blsimpv.

D.sigmaCall = blsimpv (D。S, D.K, D.rf, D.T, d.c., [], [], [], {'称呼'});

阴谋的结果显示,该数据集,最高的波动与相对应的端点的数据失效时间T = 0.25(图3),情节也表明波动增长随着罢工的价格远离一些中心值,这似乎是接近标的资产价格= 100。

图3.观察到罢工波动空间中的市场数据,通过期权到期时间分层。

创建额外的数据点

有几种方法可以用来在(K, σ)空间中生成额外的点。更简单的方法包括对每个失效时间的数据拟合二次函数,或使用interp1函数来构造三次样条插值。我们选择使用SABR插值来创建额外的数据点,因为这种技术通常可以在数据集的端点上给出更准确的结果。

SABR模型是由金融专业人士使用的四参数随机波动率模型[3]波动性微笑,以产生的曲线的形状而命名。在MATLAB中,波动率微笑的拟合分为两步。首先,利用该方法对SABR模型进行标定lsqnonlinOptimization Toolbox™的求解器。这种校准最小化了观察到的数据与候选SABR微笑之间的差异的规范,导致SABR模型的最佳参数的向量。其次,我们将最佳参数与金融仪器工具箱™功能一起使用blackvolbysabr插入所需的执行价格范围。

即使在拟合失效时间T = 0.25的棘手数据时,SABR技术也能很好地工作(图4)。

图4。使用SABR插值法获得的每个失效时间的波动率微笑。

估算暗示概率密度

在(k,Σ) - 空间中插值后,我们获得足够的数据点以估计每个到期时间的隐含击球价格密度函数。为此,我们使用由育种和Litzenberger [4]开发的计算金融原理,这些原理是指在时间t的资产值的概率密度函数f(k)与资产呼叫价格的第二部分导数成比例c = c(k)。

我们首先将数据转换为原始域((k,c)-space),每个到期时间使用blsprice功能:

T0 =独特(D.T);S =个终身制(1);射频= D.rf (1);k = 1:numel(T0) newC(:, k) = blprice (S, fineK, rf, T0(k), sigmaCallSABR(:, k));结束

在这里,fineK是一个定义用于插值和插值的罢工价格范围的矢量sigmaCallSABR是使用SABR插值创建的矩阵,其中列包含每个到期时间内的插值波动率微笑。

然后我们计算对执行价格的数值偏导数。这可以在MATLAB中有效地使用diff函数。

dK = diff (sampleK);/ /重命名/ /重命名/ /重命名= diff(d2K, 1, size(d2K, 2)); / /重命名

我们还使用逻辑索引来删除作为此过程不需要的工件出现的虚假负值。由此产生的曲线为每一个失效时间显示,随着失效时间的增加,功能变得不那么完整(图5)。我们需要推断这些函数之前,我们可以使用它们来估计隐含概率密度,因为他们不定义功能齐全价格范围的罢工的兴趣。

图5。期权隐含函数近似于插值的市场数据。

要通过完整的罢工价格域扩展这些功能的定义,我们使用该域使用域创建线性插值适合函数从曲线拟合工具箱™。这样就很容易从这个插值来推断出所关心的范围。

pdfFitsCall{k} = fit(pdfK, approxCallPDFs(:, k),“线性”);结束

在这里,PDFK.向量是否定义了执行价格和的必要范围approxCallPDFs是将近似的矩阵存储到其列中的每个到期时间的隐含密度。通过推断和归一化每个功能下的区域以确保我们具有有效的概率密度函数,我们获得隐含的密度(图6)。请注意,随着到期时间增加,分布模式逐渐向上移动,并且随着时间的推移,似乎似乎是增加波动的趋势。

图6。经过线性外推和归一化后,隐含密度函数的最终逼近。

模拟未来资产价格

现在我们有了未来所有时间资产价格的完整概率分布,我们可以从每个分布中随机抽样,以创建一个预测矩阵。我们需要根据上一步定义的概率分布,从给定的资产价格范围中随机抽样(带替换)。这个模拟可以直接使用randsample统计和机器学习工具箱™的功能。

nsamples = 1e3;Loistimcall = NaN(Numel(T0),NSAmples);k = 1:numel(T0) priceSimCall(k,:) = randsample(fitKCall{k}, nSamples, true, fitValsCall{k});结束

上面的MATLAB代码预先分配了一个名为优惠券其中每一行代表未来的时间,每一列代表从相应的概率分布中得出的随机资产价格。该循环在每个将来的时间点上迭代,并且每次迭代创建一行优惠券通过从适当的分布中随机抽样来矩阵。第一个输入参数randsamplefitkcall {k},一个包含资产的传染媒介,从中绘制随机样本。第二个输入参数,nSamples,为所需样本数量,第三个(真的)指定我们想要用替换来采样。第四个输入论点fitvalscall {k}概率分布是由randsample函数在抽取随机样本时。注意,在这个应用程序中执行的独立计算是顺序的- 可以使用的是并行化的parfor构造。对于较大的数据集,只要有多个处理核心可用来进行计算,并行化就允许应用程序易于伸缩。

创建扇形图

扇形图通常用于绘制时间序列的未来发展预测,以及与预测值相关的不确定性。金融工具箱提供了一个粉丝夹创建粉丝图表的功能。此功能需要两个输入:历史数据和预测数据。我们将历史数据定义为时刻t = 0的点,相应的资产价格s = 100,虽然如果我们有资产价格的历史数据,我们可以将它们纳入其中。

历史= [0,S];

预测数据包括失效时间以及前一步执行的模拟结果。

forecastCall = [T0, priceSimCall]; / /价格

然后我们用呼叫创建粉丝图表粉丝夹函数。

粉丝夹(历史,预测)

扇形图中的中央线表示中值轨迹,每个频带的边缘表示预测仿真矩阵的不同量子(图7),其中频带最靠近中心线表示更可能的结果。在我们的示例中,预计资产价格上涨趋势,正如我们所期望的那样,预测不确定性随着时间的推移而增加。

图7。扇形图显示了仿真结果。

假设和进一步的改进

为了提高最终预测的准确性,我们可以加入更多的数据点。我们也可以修改工作流来拟合概率分布,而不是使用外推来完成隐含密度函数的定义,尽管这可能会引入不必要的分布假设。使用看跌价格数据重复这个过程是个好主意。平均来自电话的预测,并将价格数据结果放入图1所示的扇形图中。这种平均倾向于消除小的波动,并抵消只使用一种类型的价格数据所造成的偏差。

请注意,整个工作流可以使用MATLAB脚本自动计算隐含波动率,通过插值创建额外的数据点,估计隐含概率密度,并在生成扇形图显示结果之前模拟未来资产价格。

发布于2015 - 92950v00

参考文献

  1. “未来通货膨胀的选择概率分布,”史密斯,T.,英格兰央行的季刊公报,2012年Q3
  2. 《金融危机时期期权价格的信息含量》欧洲央行每月公报, 2011年2月
  3. “管理微笑风险”,Hagan,P. S.等,维尔莫特杂志
  4. “期权价格中隐含的状态或有权益价格”,Breeden D. T.和Litzenberger R. H. (1978),商业杂志,卷。51,第621-51页。

查看相关功能的文章

查看相关行业的文章