附录A DerivaGem软件
DerivaGem 3.00软件为《期权、期货及其他衍生产品》一书第9版的读者增加了若干功能。用户可以通过第27章所讨论的CEV、默顿、混合跳跃扩散(mixed-jump diffusion)、方差Gamma等模型来对欧式期权定价,也可以进行蒙特卡罗模拟;同时,利用市场数据,用户还可以构建LIBOR和OIS曲线,可以对于互换和债券来进行定价。对互换、上限及互换期权定价时,用户可以采用OIS和LIBOR两种不同的贴现方式。
初始设定
使用软件最困难的阶段的往往是第一步,以下是DerivaGem软件3.00版一个循序渐进的初始设定过程。
(1)使用本书设定的通行证,将文件DG300.xls,DG300functions.xls和DG application.xls下载到你的计算机上,并打开DG300.xls文件。
(2)你要确保Macros(宏)功能属于开启状态,如果在你的工作页上有Enable Editing和Enable Macros,请点击开启。某些Windows和Office版本的用户需要将Macros的安全等级设定为Medium(中级)或者Low(低级)。
(3)在页面的底部选择Equity_FX_Index_Fut_Opts_Calc工作页。
(4)将标的资产选定为Currency,期权类型选定为Binomial American,选择Put键,不要选择Imply Volatility一项。

(5)你现在可以对美式货币看跌期权进行定价,定价需要6个输入值:汇率、波动率、国内无风险利率、国外无风险利率、期限(以年为计)、执行价格和时间步长。在计算单元D5,D6,D7,D8,D13,D14和D15中分别输入1.61,12%,8%,9%,1.0,1.60和4。
(6)输入回车键,并点击Calculate键。D20的数值将是0.07099,D21和D25是希腊值,在接下一页,我给出了屏幕输出。
(7)点击Display Tree之后,你可以看到用于期权定价的二叉树。这正是第21章的图21-6。
下面的步骤
熟悉了初始设定后,对于其他类型的期权定价,你不应该再有很大困难。为了计算隐含波动率,你需要点击Imply Volatility一项,并同时在计算单元中D20中输入期权价值,打入回车,点击计算键,最终的波动率会显示在单元D6上。
在接下的一个工作页,软件可以显示不同的图形。为了显示图形,你需要设定横轴和数轴自变量取值区间和竖轴的应变量,设定完毕后,点击回车(点击Draw Graph)。
使用Equity_FX_Index_Fut_Opts_Calc工作页时,需注意以下几点:
(1)对于美式和欧式股票期权,用户最多可以在一个输入表格中输入标的资产的7个股息,输入股息格式为第1列为股息时间(从今天算起以年为计量),第2列为股息量,股息必须按时间的前后次序给出。
(2)美式期权的定价树的最大步数为500步,图像最多可以展示10步的定价树。
(3)标准看涨和看跌期权的希腊值是由对输入值进行扰动来产生的,计算中没有采用解析公式。
(4)对于亚式期权,当前平均(current average)是由期权开始算起,对于一个新交易(距离期权开始时间为0),该变量没有用于计算。
(5)对于回望期权,截止到目前的极小(minimum to date)用于看涨期权计算和截止到目前的极大(maximum to date)用于看跌期权计算,对于一个新交易,这些数量应被设定为标的产品的当前值。
(6)利率为连续复利。
另外一个工作页Alternative Models的操作过程与Equity_FX_Index_Fut_Opts_Calc工作页类似,用户可以通过CEV、默顿(Merton)、混合跳跃扩散(mixed-jump diffusion)、方差Gamma等模型来对欧式期权来定价;同时可以显示图形,隐含波动率可以显示在竖轴,横轴可以选取执行价格,以此用户可以展示波动率微笑。
蒙特卡罗模拟
在Monte Carlo工作页,用户可以看到不同模型对于期权的定价过程,可选用的模型包括对数正态、CEV、默顿(Merton)、混合跳跃扩散(mixed-jump diffusion)、方差Gamma等。图形将显示10个抽样结果。如果用户选取Do AntiThetic,图形结果是针对5对抽样;如果用户没有选取Do AntiThetic,图形结果是针对10个抽样。整体模拟和10个抽样的标准差在工作页中也有所显示。
零息曲线
LIBOR零息曲线计算是基于LIBOR存款利率和LIBOR与固定息互换利率,OIS零息利率则是基于OIS利率。为了教学展示,我们将真实世界的情形简化为利息累计区间为整年的一部分(例如1年、0.5年、0.25年等),天数计量惯例为实际天数/实际天数。如第9章所示,LIBOR零息曲线可以利用LIBOR贴现或OIS贴现。利用这个工作页,用户可以用来检验将LIBOR贴现转换为OIS贴现对于LIBOR零息曲线的影响。
债券和互换
Bond_and_Swap_Price工作页的运作与前面讨论的工作页运作类似,互换的定价可以采用LIBOR和OIS两种不同的贴现。对于OIS贴现,用户需要输入OIS零息利率和LIBOR零息利率,LIBOR零息利率的计算通常可以通过Zero Curve计算页来实现。
债券期权
债券期权(Bond_Option)工作页的操作与前面工作页类似,用户可以选择的定价模型包括布莱克模型(见29.1节)、短期利率的正态分布模型(见式(31-13))和短期利率的对数正态分布模型(见式(31-18))。第一个模型只能用于欧式期权,另外两个模型可以用于美式或欧式期权,券息为每年券息率,券息时间频率可以是Quarterly(每季度)、Semi-Annual(每半年)和Annual(每年)。在名为Term Structure数表中,用户需要输入零息收益曲线,在第1列中输入期限(以年为计),在第2列输入要连续复利的利率。DerivaGem采用与图4-1类似的分段线性零息收益曲线的假设。用户应注明执行价格是一个洁净价格(clean price)还是一个带息价格(dirty price)(见21.1节)。软件计算债券价格和输入执行价格均对应于100美元本金量。
上限和互换期权
上限和互换期权(Cap_and_Swap_Options)工作页的操作大体和股票、外汇、股指、期货期权的操作类似,用户可以利用这一页来对利率上限/下限和互换期权定价。29.2节和29.3节分别解释了如何利用布莱克模型对于上限/下限和欧式互换期权进行定价,关于短期利率的正态模型和对数正态模型分别由式(31-13)和式(31-18)给出。利率期限结构的输入方式和债券期权类似,付款时间频率可以是每季度、每半年和每年。DerivaGem从产品到期日开始以倒推的方式得出期权的付款日期,最初的计利区间可能是非标准的,其长度可能介于正常计利区间的0.5~1.5倍,贴现利率可以选用OIS和LIBOR两种。
信用违约互换
信用违约互换(CDS)工作页可以根据CDS溢差来计算违约率,反之亦然。用户需要输入(连续复利)利率的期限结构以及CDS溢差的期限结构或者违约率的期限结构。第一个违约率对应于零时刻到期限结构第一个时间点,第二个违约率对应的时间间隔为期限结构的第一个时间点到第二个时间点,依此类推。我们的计算中假设违约只可能发生在支付日与支付日之间的中点时间,见第25.2节的实例计算。
债务抵押债券
债务抵押债券(CDO)工作页根据用户输入的份额相关性计算CDO份额的报价。用户可以输入份额的附着点和离开点;报价可以是以溢差基点为单位或者涉及一个前端支付(up-front payment),是以份额面值百分比为计,此值可以是输入值,也可以为输出值(比如,iTraxx European或CDX NA IG的股权份额的固定溢差为500个基点)。积分点个数(见式(25-12))决定了计算的精度,在大多数情况下,10个积分点足以满足精度要求(最大值为30)。软件中会以份额本金的百分比形式显示预期损失(expLoss),并且以每年每10000个基点的比率显示预期支付的贴现值(PVPmts)。这样,溢差(spread)等于ExpLoss10000/PVPmts,前端支付为ExpLoss-(SpreadPVPmts/10000)。工作页可以根据用户输入的报价来推算出份额的复合相关性(compound correlation)或基底相关性(base correlation)。对于基底相关性,必须将第一个份额的附着点设为0%,一个份额的离开点是另一个份额的附着点。
希腊值的定义方式
在“Equity_FX_Index_Futures”工作页中,计算出的希腊值分别为:
Delta:当资产价格增长1美元时,期权价格相应的变化量;
Gamma:当资产价格增长1美元时,期权Delta相应的变化量;
Vega:当波动率增长1%时(例如,波动率由20%变为21%),期权价格相应的变化量;
Rho:当利率增长1%时(例如,利率由5%变为6%),期权价格相应的变化量;
Theta:日历日往前提进一日时,期权价格的变化量。
在“Bond_Options”和“Caps_and_Swap_Options”工作表中,计算出的希腊值分别为:
DV01:当收益曲线往上平移一个基点时,期权价格相应的变化量;
Gamma01:当收益曲线往上平移一个基点时,DV01相应的变化量;
Vega:当波动率增长1%时(例如,波动率由20%变为21%),期权价格相应的变化量。
应用工具
在熟悉了期权计算器(DG300.xls)后,你可以开始使用应用工具(Application Builder,DG300application.xls),通过这个应用工具,你可以进一步来研发新的应用。DerivaGem函数中含有VBA源代码,软件包含以下应用:
(1)二叉树收敛性(binomial convergence):这一应用实例用于检验第13章及第21章所讨论的二叉树的收敛性。
(2)希腊值(Greek Letters):这一应用实例将第19章所讨论的希腊值图形化。
(3)Delta对冲(DeltaHedge):这一应用实例用于检验表19-2及表19-3中的Delta对冲的表现。
(4)Delta及Gamma对冲(Deltaand GammaHedge):这一应用实例用于检验Delta及Gamma对冲对于两值期权的表现。
(5)风险价值度(value at risk):这一应用实例采用三种不同的方法来计算有同一标底的三个期权所组成的交易组合的风险价值度。
(6)障碍期权复制(barrier replication):这一应用实例进行静态期权复制计算(见26.16节)。
(7)三叉树收敛性(trinomial convergence):这一应用实例用于检验三叉树的收敛性。
