首页 / 技术文章 / 使用 MATLAB® 工具箱
NAG MATLAB 工具箱 提供能够在 MATLAB 中完全使用 NAG 算法库所有的函数功能。 本文是此系列文章中最新的一篇 (前篇文章请参考 这里), 我们在 MATLAB 的应用中透过调用特定的 NAG 函数,说明此工具箱强大的功能。我们先将目光转移到算法库中的 S 函数,其中包含了许多数学与物理领域中会用到的特殊函数的估计运算。在算法库的 最新功能 介绍中,也增加了许多新的函数可以计算 金融选择权, 我们在这里将在 MATLAB 中使用这些函数去计算并显示选择权价格 (此应用在我们的 部落格 中已经有了初步的说明)。我们的程序 (能够自此处 下载) 能够对教学有兴趣,或是对选择权定价模型感到兴趣的读者,一个很好参考的范本。
我们先前已经在 别篇文章 中初步的介绍了选择权定价; 为了方便您的了解,我们先在此做初步的归纳。所谓选择权是提供拥有者在选择权到期日前,享有在同意的价格下 (履约价格) 购买或卖出资产的权利 (并非义务)。 能够买的选择权我们称作 买权,反之,卖权 指的是允许拥有者卖出标的。 所谓履约价指的是买方与卖方都同意此选择权;如果买方选择履约,则卖方就有义务以此价格买或卖标的物。 选择权的形式决定了买方履约的不同限制 - 例如:欧式选择权 仅能在到期日时履约,而 美式选择权 可以在到期日前的任一时间点履约。
因为选择权交易是在金融市场中运行的,所以如何决定选择权价值就相当的重要。 也因此需要对标的物的价格 (本质上是一个随机游走) 建构一个时间相依的模型。Black and Scholes 定价模型是一个相当知名的方法,当然也存在其他不同的模型。 对于选择权定价这些模型的实现,往往是封闭公式,可以使用 NAG 算法库中的函数求解。
选择权的价格取决于许多的参数 (例如:标的物的价格与到期日),这些参数的敏感度变化让金融分析师备感兴趣。 这些敏感度能以偏微分的形式表示,通常以 Greeks 系数表示,因为通常以希腊字母表示。例如:选择权价格与标的物价格的偏微分 称作 Delta,而 Theta 表示选择权价格与离到期日时间的敏感度。针对选择权价格的明确封闭形式的 Greeks 公式可以很容易地找到 - 例如 Black-Scholes 模型在我们先前的 文章 中便已载明。
图一:使用 NAG 工具箱函数计算标的物 (此处假设为股票) 卖权的选择权价格 (上图) 以及 Delta 系数 (下图),依 Black-Scholes 公式 履约价 = 70、 到期时间 = 0.5、波动率 = 0.3、 利率 = 0.05 以及 殖利率 = 0.0。
自 s30aa 函数算起 (依 Black-Scholes 公式计算欧式选择权价格),NAG 工具箱提供相当完整计算选择权价格的 MATLAB 函数。 为了方便起见,每个定价公式都会有两个函数:一个是仅计算价格,另一个会同时计算 Greeks 系数。例如:以下程序片段使用 s30ab 以 Black-Scholes 计算欧式选择权的价格与 Greeks 系数:
(请参考 函数文件 了解更多的输入与输出参数的细节)。 我们可以利用此函数产生 (图一) 标的物价格函数的选择权价格,以及它的 Greeks 系数 (此例中为 Delta 系数)。 图一同时也显示选择权的 收益 (与履约价与股价间的差异),拥有选择权的人,在决定是否要履约时可以依照收益的大小来加以判断 (更多关于收益的判断与运行请参考 此篇文章)。图二显示如图一所采用相同的参数的选择权价格,但以距到期日时间绘制;我们同时也显示 Greek 系数 Theta,图二下图中的负斜率。
图二:如图一,但以距到期日的形式呈现选择权价格 (上图) 与 Theta 系数 (下图)。
我们以上所言,选择权价格是一个多变量的函数,且其价格的改变与参数皆会因为利率而有所变化。图三说明了价格曲线的型态与各参数间变化的相关连性。
(a) expiryTime = 0.5
(b) volatility = 0.5
(c) interestRate = 0.3
(d) yieldRate = 0.5
图三:以标的物价格的选择权价格函数 - 卖权,以 Black-Scholes 公式计算。我们先以图一中的参数设定开始,首先设定 (A) 距到期日 为,接着 - 保留此数值 距到期时间- 设定 波动率 为 0.5 (B)。依类似的形式,我们接着设定 利率 为 0.3 (C) 以及 殖利率 为 0.5 (D)。
我们先前的 文章 中已经说明了如何在 Microsoft Excel 电子表格中调用 NAG 的 S30 函数;精确地说, 应该是在 Excel 的工作表中透过 Visual Basic for Applications (VBA) 程序中调用 NAG 函数;这是一个很直接的 方法, 在 VBA 中透过 DLL (例如 NAG DLL 算法库) 调用函数。电子表格的示例可以让用户在运行函数计算时先选择定价模型,以及其相关的参数;然后再利用 Excel 的绘图功能显示其选择权价格以及 Greeks 系数, 显示出的图形如图一至图三所示。
如上所述,我们在 MATLAB 中重新开发了这个应用程序;用户接口如图四。在图中可以看到我们选择了 资产或无偿选择权 (asset-or-nothing option) 定价模型, 在到期日如果标的物小于履约价则持有者将付出标的物价格 (这是对卖权而言,若买权则为小于履约价)。不同的选择权定价的差异可以透过图四与图一进行比较。
图四:MATLAB 应用程序中的控制接口。可以透过左上角的选项选择订定模型与选择权类别,会显示 Greek 系数图形, 您可以在图形中选择 X 坐标轴 (股价或者距到期日时间)。透过左边的参数控制,可以调整模型的参数,计算结果将会呈现在右边的图形中。 这里显示的选择权价格与 Delta 系数,是与图一相同的参数值,但采用资产或无偿选择权模型计算。
这个 MATLAB 应用程序增加了许多功能 - 例如:具有新的用户接口能够调整参数,且能自动来回的增减数值, 对教学的角度来看,产生价格与 Greeks 系数的动画能够有很大的帮助,或者在决定选择权价格时,更能清楚的明了各参数间的相互关系。图五显示在应用系统中调整参数的界面。
图五:在应用系统中调整及设定参数的界面 - 此例中,调整波动性参数。可以在右上角文字框中直接输入数值,或者使用卷轴调整。 选择右方的 Sweep? 选项将会自动的增加数值直到最大值为止,且自动减少数值到卷轴的最小值。最终的结果是在最大最小值间连续性的来回变化。
在本文中,我们持续透过使用 特殊函数章节 中的函数, 在 MATLAB 中计算并显示选择权价格,探讨 NAG MATLAB 工具箱 的功能。 我们已经简要的介绍了应用程序中所使用的函数,还有用户接口,包含了在动画中透过相关的参数观察选择权价格波动的功能。
本文中的示例可以自行 下载。 NAG MATLAB 工具箱目前提供 Linux 与 Windows 平台 32 与 64 位版本;更多的资讯您联机 http://cn.nag-gc.com/numeric/MB/start.asp。
© Numerical Algorithms Group Visit NAG on the web at:www.nag.co.uk (Europe and ROW) www.nag.com (North America) www.nag-j.co.jp (Japan) http://cn.nag-gc.com/IndustryArticles/usingtoolboxmatlabpart5.asp