应用背景
QuantPlus Analytics为用户提供了多种美式期权的定价引擎,用户可以在Excel中快速创建期权定价的模型。为了便于用户快速创建模型,QuantPlus提供了一套建模的思想和机制,该机制很好了利用了面向对象建模的思想,能够基于对象的概念进行模型的创建、以及利用多态的概念对各种金融工具利用同一个函数进行定价。这里对于任何金融工具的定价都可以使用qpNPV函数公式,该函数是多态的一个很好的实例。该函数的参数都是以对象的方式进行传入。
下面我们将重点介绍该机制在美式期权中具体应用。首先,让我们看看该美式期权的具体合约属性:
1. 假设该合约是IBM股票的期权合约,该合约是标准美式期权。合约起始日是1998-5-15,合约到日期为1999-5-17年。
2. 标的资产为股票。股票服从BS随机过程,当前的价格为36元。其波动率设为常量0.2。股票价格和无风险利率可由市场数据得到为0.06;
3. 股票期权的敲定价格为40元。
利用QuantPlus来进行定价,实现基本参数的对象化构建
QuantPlus定价引擎通过三个重要参数:Instrument、PricingMethod以及RiskFactorModel来创建定价引擎,为指定的美式期权进行定价。这三个参数均是以对象的方式进行传入,首先我们要构造这三个对象。
1. 交易产品定义—Instrument
American Option_1:创建美式期权对象,使用qpVanillaOption函数,所需参数如下:
Objectid:对象名称;
Payoff:回报对象名称;
Exercise:行权对象名称;
American Option_2:同American Option_1,设立另一个美式期权对象,用不同方法定价;
Payoff对象
Payoff Type:回报类型,这里设立为Vanilla;
Option Type:期权类型,call或put;
Strike:行权价;
Strike Type Payoff:行权类型对象,这里用qpStrikedTypePayoff函数,所需参数如下:
Objectid:对象名称;
Payoffid:回报类型;
Option Type:期权类型;
Strike:行权价;
Exercise Date:行权日
Exercise对象
Exercise Object:行权对象,这里使用qpAmericanExercise函数,所需参数如下:
Objectid:对象名称;
Earliestdasy:最早可行权日;
Latestday:最晚可行权日;
2. 风险因子模型—RiskFactorModel
Black Constant Vol Object:设置波动率对象,这里我们设波动率为常量,用用qpBlackConstantVol函数,所需输入参数如下:
Objectid:对象名称;
SettlementDate:清算日;
Calendar:交易日历;
Volatility:波动率;
Daycounter:日期计数规则;
Underlying:股票价格;
Risk Free Rate:无风险利率;
Dividend Yield:红利;
Stochastic Process Object:随机过程对象,设为一般BS模型,用qpGeneralizedBlackScholesProcess函数,所需参数如下:
Objectid:对象名称;
Blackvolid:上一步设立的波动率对象;
Underlying:股票价格;
Daycounter:日期计数规则;
SettlementDate:清算日;
Risk Free Rate:无风险利率;
Dividend Yield:红利;
3. 计算方法—PricingMethod
AEQPB是Additive EQP(Equal Probability) Binomial Tree方法,是使用二叉树定价,但此处go up 和go down的概率都是50%。
CRR是Cox-Ross-Rubinstein (multiplicative)equal jumps binomial tree,也是二叉树模型,但上涨、下跌概率不是50%,而是根据上涨幅度u和下跌幅度d计算得出。
BAWA是Barone Adesi Whaley Approximation Engine,基于Black-Scholes Merton模型,利用二次方程近似解进行定价。
下一步我们创建美式期权对象,输入如下信息:
下面我们用BAWA方法定价:
Pricing Engine Type:输入BAWA;
Pricing Engine:定价引擎,用qpPricingEngine函数,参数如下:
Objectid:对象名称;
Enginejectid:引擎名称;
Processid:随机过程名称;
Set Engine:是否使用引擎,用qpInstrumentSetPricingEngine函数,参数如下:
Objectid:对象名称;
Priceengine:引擎名称
NPV:计算期权价格,用qpInstrumentNPV函数,参数如下:
Objectid:设立的美式期权名称;
Trigger:引用之前的set engine;
使用AEQPB方法定价设置过程和用BAWA定价相同,只是引擎不同,用qpBinomialPricingEngine函数建立引擎对象。主要这里我们设立了两个引擎,分别对应之前设立的两个美式期权对象。
附件是示例演示。
Attachments
- American option updated (26 kB)