金融工程史上最全面的的期权定价——VBA模板
- 格式:xls
- 大小:504.50 KB
- 文档页数:3
期权定价理论期权定价是所有金融应用领域数学上最复杂的咨询题之一。
第一个完整的期权定价模型由FisherBlack和MyronScholes创立并于1973年公之于世〔有关期权定价的开展历史大伙儿能够参考书上第358页,有喜好的同学也能够自己查寻一下书上所列出的经典文章,只是这要求你有特不深厚的数学功底才能够瞧明白〕。
B—S期权定价模型发表的时刻和芝加哥期权交易所正式挂牌交易标准化期权合约几乎是同时。
不久,德克萨斯仪器公司就推出了装有依据这一模型计算期权价值程序的计算器。
现在,几乎所有从事期权交易的经纪人都持有各家公司出品的此类计算机,利用按照这一模型开发的程序对交易估价。
这项工作对金融创新和各种新兴金融产品的面世起到了重大的推动作用。
为此,对期权定价理论的完善和推广作出了巨大奉献的默顿和Scholes在1997年一起荣获了诺贝尔经济学奖〔Black在1995年往世,否那么他也会一起获得这份殊荣〕。
原始的B—S模型仅限于这类期权:资产可用于卖出期权;能够评估价值,资产价格行为随时刻连续运动。
随后建立在原始的B—S模型上的研究以及许多其他期权定价模型的变体相继出现,用于处理其他类型的标的资产以及其他类型的价格行为。
在大多数情况下,期权定价模型的推倒基于随机微积分〔StochasticCalculus〕的数学知识。
没有严密的数学推演,演示这种模型只是摸棱两可的。
然而,这并非要紧的咨询题,因为确定期权公平价格的必要计算已自动化,且到达上述目的的软件在大型计算机及微机中均可获得。
因此,在那个地点,我只简单介绍一下B—S模型的要害几个要素,至于具体的数学推导〔特不复杂〕,感喜好的同学能够在课后阅读一下相关资料〔一般根基上在期权定价理论章节的附录中〕。
首先,我们往返忆一下套利的含义套利套利〔arbitrage〕通常是指在金融市场上利用金融产品在不同的时刻和空间上所存在的定价差异、或不同金融产品之间在风险程度和定价上的差异,同时进行一系列组合交易,猎取无风险利润的行为。
期权的定价方法概述及利用matlab计算期权价格摘要期权是功能最多、最激动人心的融衍生工具之一。
期权定价问题一直是金融数学当中最复杂的问题之一,简要介绍几种基本的期权定价理论,并利用matlab金融工具箱计算出香港恒生指数期权的价格并与实际价格进行比较,指出可能导致偏差的一些原因。
关键词期权定价;MATLAB;B-S模型1 期权概述期权是一种独特的衍生金融产品,实质上是将权利和义务分开进行定价,使得权利的受让人在规定时间内对于是否进行交易,行使其权利具有选择权,而义务方必须履行其义务。
它使买方能够避免坏的结果,同时,又能从好的结果中获益。
2 期权的定价模型2.1 二项式期权定价模型设:S0=股票现行价格,u=股价上行乘数,d=股价下行乘数,r=无风险利率,C0=期权现行价格,Cu=股价上行时期权的到期日价值,Cd=股价下行时期权的到期日价值,X=期权的执行价格,H=套期保值比率,则二项式定价模型为:u=1+上升百分比=d=1+下降百分比=其中:e是自然对数;σ为标的资产连续复利收益率的标准差;t为以年表示的时段长度。
2.2 Black—Scholes期权定价模型1)假设条件B-S微分方程的推导是建立在以下假设的基础上的:①股价遵循预期收益率μ和标准差σ为常数的马尔科夫随机过程;②允许使用全部所得卖空衍生证券;③没有交易费用或税金,且所有证券高度可分;④在衍生证券的有效期内没有支付红利;⑤不存在无风险的套利机会;⑥证券交易是连续的,股票价格连续平滑变动;⑦无风险利率r为常数,能够用同一利率借入或贷出资金;⑧只能在交割日执行期权。
2)Black—Scholes期权定价公式C=SN(d1)-Xe-rTN(d2)P=C-X+Xe-rT=Xe-rT · N(-d2)-S · N(-d1),式中:C表示买入期权的价格;S表示标的资产的现行市场价格;r表示无风险利率(以连续复利率计算);σ表示标的资产的价格波动率;X表示看涨期权的执行价格;T表示距离期权到期日的时间(以年表示);t表示现在的时间;N(x)表示标准正态分布变量的累积概率分布函数。
金融工程中的期权定价模型一、期权定义期权是金融工具中的一种,是指在未来某个时间,按照约定的价格、数量和期限,有权买入或者卖出某种标的资产的一种金融合约。
通过买入期权,持有人可以在未来某个时间以约定的价格买进标的资产;通过卖出期权,交易人可以获得期权费用,承担未来某个时间按照约定价格进行买卖的义务。
期权的本质是对未来的权利,是一种寄予了未来的期望和信心。
二、期权定价方法期权定价是指通过计算期权价格,来实现期权交易的方法或模型。
期权定价的理论基础主要包括两个主流模型:布莱克-斯科尔斯模型和考克斯-鲁宾斯坦模型。
下面我们分别来介绍一下这两种期权定价模型。
1. 布莱克-斯科尔斯模型布莱克-斯科尔斯模型,是由弗兰克-布莱克和梅伦-斯科尔斯在1973年提出的一种期权定价模型。
这个模型的核心思想是将期权看作是一种债券和股票组成的投资组合,通过对这个投资组合的定价,来推导出期权的价格。
布莱克-斯科尔斯模型的核心公式如下:C = SN(d1) - Xe^(-rt)N(d2)P = Xe^(-rt)N(-d2) - SN(-d1)其中,C表示看涨期权的价格,P表示看跌期权的价格;S表示标的资产的价格,X表示行权价格;N()表示标准正态分布函数的值,其中d1和d2分别表示如下:d1 = [ln(S/X) + (r + σ^2/2)t] / σ√td2 = d1 - σ√t这个模型中,需要考虑的参数有标的资产的价格S、行权价格X、波动率σ、存续期t、无风险利率r。
其中,波动率是最重要的参数,它的大小决定了标的资产的风险水平,因此,布莱克-斯科尔斯模型中的波动率是需要通过历史数据或者其他方法进行计算和估算的。
2. 考克斯-鲁宾斯坦模型考克斯-鲁宾斯坦模型,是由约翰-考克斯和斯蒂芬-鲁宾斯坦在1979年提出的一种期权定价模型。
这个模型的最大特点是引入了离散时间的概念,将连续时间的布莱克-斯科尔斯模型离散化,以适应实际的市场需求。
ExcelVBA金融工程Section2-美式期权定价梦特卡罗期权价格计算美式期权指在合约期限内任何时点(直至及包括到期日)均可执行的一种期权,不同于只能在到期日才能执行的欧式期权。
例如,美式看跌期权可以在到期前行使而其内在价值是根據其期权金計算?(S)=max{K-S, 0}。
標的资产价格S t在時间t時,以美式看跌期权計算其公平价值在风险中性時如下F(S t, t)=ê(e?r(τs?t)?(Sτs)|S t(9.39)當隨机资产价格変动從S t開始到首次行使時间ζs。
它的發生可以是在期权到期時或是在期限内任何时点而當它的内在价值大過它的合理价值時。
在期限内任何时点t時,它的最优條款(S t) ≧F(S t, t) (9.40)美式看跌期权的价格应包括以下特性f(S t,t)=max{F(S t, t), ?(S t)} (9.41)公式(9.40)可以用來定義其价格S c(t)在時点t時其行使权的條件需符合S t≦S c(t)。
在此方法下,制定的條款便可輕易地實施只需简單地测試资产價格在特定的價格下便可。
特別注意其公平價值F(S t, t)可以被估計出當所有特定價格,或範圍,在時间t時都被计算出。
即是其特定價格S c(t)都可由倒退法找出開始由期权到期S c(T)=K。
要找出美式看跌期权的現貨價格,需要首先做出整個主要的範圍然后才評估其中性风险的期望値为f0=max{ê(e-rζs?(Sζs)|S0), ?(S0)} (9.42)再者,可以将一個非常大的N分为相等的時间间距Δt=T/N ,那庅便可产生整個期权的生命里當i由0走到N-1为止時每一個時间步骤t i=iΔt。
在時间t i時,試考慮S ti=x同時假設主要遠期時间範圍为{S c(t i+1),… , S c(t N)=K}。
美式看跌期权的公平價格可以用梦特卡罗模拟法中計算出F(S ti=x,t i)= ê(e-r(tζ-ti)?(S tζ )|S ti=x) (9.43)公式(9.43) 可产生资产價格迴路而餘下生命週期的期权则可将公式(9.44) 中的j由i走到N-1为止開始時由S ti=xS tj+1=S tjexp((r-12?σ2)Δt+σ√?tεj(9.44)假如在期权到期前任何时间里其产生價格是S tj+1≤S c(t j+1)的时候,同时当公式(9.43)里的τs=t j+1时該期权便应行使。
Black-Derman-Toy 模型Black-Derman-Toy 二义树及期限结构模型与股票期权相似,利率衍生产品都是倚靠其目标物-利率。
而利率期限结构是某个时点不同期限的利率所组成的一条曲线。
它是资产定价、金融产品设计、保值和风险管理、套利以及投机等的基准,也是中央银行控制短期利率变化以影响中长期利率变化的传递机制。
而单因素利率期限结构模型,瞬时短期利率r t 是起着决定性作用的内生变量。
根据市场期望假设,中长期利率等于未来相应时期内瞬时短期利率总和的期望。
而其衍生产品的价格便可根据此短期利率在风险中性下定价f 0=E (e −∫r t dt T 0f T |r 0) (1)在公式(1),期权的未来收益f T 是会根据产生出来到期利率进行评估。
已近代的方法则会以Health, Jarrow, and Morton 的无套利定价方法进行。
在期权定价上,以上的用树式方法便足够将风险中性的短期利率同现实的利率曲线比较。
而Black-Derman-Toy 因此发展出一个简单的二义树模型校正现实零息债券的利率期限结构及波动率.BDT 模型发展出结合将风险中性的短期利率的二义树及特定时间Δt ,如图1(a) 。
图1:(a) BDT 二义树模型结合树交叉点。
(b) 使用风险中性作为期权定价的单一个BDT 分支树在时间t=i Δt ,由上到下会有t+1个交叉点及短期利率r ij 而j 则由0到i 为止。
而其则代表按年计一个周期利率以最短可以借到的期限Δt 由t 到t+Δt 。
BDT 树则跟从Jarrow and Rudd 到参数设定及概率为p=12。
普遍来说,向上及向下的因素会倚赖时间及其相关短期利率的值。
假设设定为一个non-stochastic 结构的短期利率的波动率,就可表示其关系为时间及每一步骤i 时整个列里的短期利率都可设置为两个因素r ij =αi (βi )j (2)公式(1),BDT 树提供一个工具用来评估利率期权在风险中性的定价。
梦特卡罗期权价格计算欧洲看涨不派息股票期权我会将之前介绍到技巧应用在不派息的欧洲看涨期权上。
分别是控制変量方法CMcEuropeanCall()程序- 请参考源代码OP02,对偶変量法AMcEuropeanCall()程序-请参考源代码OP03及原模拟McEuropeanCall()程序- 请参考源代码OP04,。
当分别输入资料{S0, K, r, σ, T, n},而经由读取程序readData() -请参考源代码OP01后。
而readData()程序会分别将资料放到以上三个不同方法的程序里,最后结果会输回其期权现价及标准误差到readData()程序。
在全部程序里,随机抽样数ɛ会由StdNormNum()函数产生,并由此根据(FOP.16)带出抽様的到期价格S T(ɛ)。
就对偶変量法,在相同的随机数上加上负数即可S T(-ɛ)。
相同的数值在不同函数,引用不同公式(FOP.18), (FOP.19) 及(FOP.21)里运作后评估。
根据(FOP.2),其均值及方差的现值可将每个抽祥数分别加起来及将其倍乘即可,其可以一个小回路程序由1到n项。
可以更简单的将(FOP.2)的方差计算用以下方式表达S2=1n+1∑gni=12(xi)-nn−1m2(FOP.25)此两个流程都可以在估算期权现价时得出其均值。
在控制变量法,一定要时刻记者将S0包括在均值估算上当为控制变量(FOP.20)的解决方法。
在评估过程里的标准误差可以根据在方差计算时的附加因子1/√n所找出。
Sub readData()Dim assetPrice As Double: assetPrice = Cells(2, 2)Dim strike As Double: strike = Cells(3, 2)Dim maturity As Double: maturity = Cells(4, 2)Dim riskFree As Double: riskFree = Cells(5, 2)Dim sigma As Double: sigma = Cells(6, 2)Dim nsample As Long: nsample = Cells(7, 2)Dim optionPrice As DoubleDim stdEr As Doubleseed = 5678Call McEuropeanCall(assetPrice, strike, riskFree, sigma, maturity, nsample, optionPrice, stdEr)Cells(9, 2) = optionPriceCells(10, 2) = stdErCall CMcEuropeanCall(assetPrice, strike, riskFree, sigma, maturity, nsample, optionPrice, stdEr)Cells(9, 3) = optionPriceCells(10, 3) = stdErCall AMcEuropeanCall(assetPrice, strike, riskFree, sigma, maturity, nsample, optionPrice, stdEr)Cells(9, 4) = optionPriceCells(10, 4) = stdErEnd Sub源代码OP01: 读取基本期权资料程序Sub CMcEuropeanCall(assetPrice As Double, strike As Double, riskFree As Double, sigma As Double, maturity As Double, nsample As Long, ByRef optionPrice As Double, ByRef stdEr As Double)Dim sum01 As Double, sum02 As Double, Vnum As DoubleDim mean As Double, Vd As Double, Vs As LongDim sT As Double, fT As Double, pV As Doublesum01 = 0sum02 = 0For Vs = 1 To nsampleVnum = StdNormNum()sT = assetPrice * Exp((riskFree - 0.5 * sigma ^ 2) * maturity + sigma * Sqr(maturity) * Vnum)fT = CallPayoff(strike, sT) - sTpV = Exp(-riskFree * maturity) * fTsum01 = sum01 + pVsum02 = sum02 + pV * pVNext Vsmean = sum01 / nsampleVd = Sqr(sum02 / (nsample - 1) - (nsample / (nsample - 1)) * mean ^ 2)optionPrice = assetPrice + meanstdEr = Vd / Sqr(nsample)End Sub源代码OP02: 欧州看涨期权控制変量法梦特卡罗模拟程序Sub AMcEuropeanCall(assetPrice As Double, strike As Double, riskFree As Double, sigma As Double, maturity As Double, nsample As Long, ByRef optionPrice As Double, ByRef stdEr As Double)Dim sum01 As Double, sum02 As Double, Vnum As DoubleDim mean As Double, Vd As Double, Vs As LongDim sT As Double, sTa As Double, fT As Double, pV As Doublesum01 = 0sum02 = 0For Vs = 1 To nsampleVnum = StdNormNum()sT = assetPrice * Exp((riskFree - 0.5 * sigma ^ 2) * maturity + sigma * Sqr(maturity) * Vnum)sTa = assetPrice * Exp((riskFree - 0.5 * sigma ^ 2) * maturity + sigma * Sqr(maturity) * (-Vnum))fT = (CallPayoff(strike, sT) + CallPayoff(strike, sTa)) / 2pV = Exp(-riskFree * maturity) * fTsum01 = sum01 + pVsum02 = sum02 + pV * pVNext Vsmean = sum01 / nsampleVd = Sqr(sum02 / (nsample - 1) - (nsample / (nsample - 1)) * mean ^ 2)optionPrice = meanstdEr = Vd / Sqr(nsample)End Sub源代码OP03: 欧州看涨期权对偶変量法梦特卡罗模拟程序Sub McEuropeanCall(assetPrice As Double, strike As Double, riskFree As Double, sigma As Double, maturity As Double, nsample As Long, ByRef optionPrice As Double, ByRef stdEr As Double)Dim sum01 As Double, sum02 As Double, Vnum As DoubleDim mean As Double, Vd As Double, Vs As LongDim sT As Double, fT As Double, pV As Doublesum01 = 0sum02 = 0For Vs = 1 To nsampleVnum = StdNormNum()sT = assetPrice * Exp((riskFree - 0.5 * sigma ^ 2) * maturity + sigma * Sqr(maturity) * Vnum)fT = CallPayoff(strike, sT)pV = Exp(-riskFree * maturity) * fTsum01 = sum01 + pVsum02 = sum02 + pV * pVNext Vsmean = sum01 / nsampleVd = Sqr(sum02 / (nsample - 1) - (nsample / (nsample - 1)) * mean ^ 2)optionPrice = meanstdEr = Vd / Sqr(nsample)End Sub源代码OP04: 欧州看涨期权原梦特卡罗模拟程序Public seed As LongFunction StdNormNum() As DoubleDim v1 As Double, v2 As Double, w As Double, fac As DoubleDim snnUse As DoubleStatic flagSave As Integer: If IsEmpty(flagSave) Then flagSave = 0Static snnSave As DoubleIf (flagSave = 0) ThenNewTrial:v1 = 2# * ran0() - 1#v2 = 2# * ran0() - 1#w = v1 ^ 2 + v2 ^ 2If (w >= 1#) Then GoTo NewTrialfac = Sqr(-2# * Log(w) / w)snnSave = fac * v1snnUse = fac * v2flagSave = 1ElsesnnUse = snnSaveflagSave = 0End IfStdNormNum = snnUseEnd FunctionFunction ran0() As DoubleDim IA As Long: IA = 16807Dim IM As Long: IM = 2147483647Dim IQ As Long: IQ = 127773Dim IR As Long: IR = 2836Dim MASK As Long: MASK = 123459876Dim AM As Double: AM = 1# / IMDim k As Longseed = seed Xor MASKk = seed / IQseed = IA * (seed - k * IQ) - IR * kIf (seed < 0) Then seed = seed + IMran0 = AM * seedseed = seed Xor MASKEnd FunctionFunction CallPayoff(strike As Double, assetPrice As Double) As DoubleCallPayoff = Max(assetPrice - strike, 0)End FunctionFunction Max(x As Double, y As Double) As DoubleIf x > y Then Max = x Else Max = yEnd Function源代码OP05: 随机抽样数函数产生器及看涨期权净值函数m=12n ∑gni=1(x i) and S2=1n+1∑(gni=1(x i)- m)2(FOP.2)S T=S0exp((r-1/2σ2)T+σ√Tɛ(0,1)) (FOP.16) n r(ɛ)=max{S T(ɛ)-K, 0} (FOP.18) ńr(ɛ)=max{S T(ɛ)-K, 0} - S T(ɛ) (FOP.19)n0=S0+Ê(e-rTńr |S0) (FOP.20) ňr(ɛ)=1/2[max{S T(ɛ)-K, 0} +max{S T(-ɛ)-K, 0}] (FOP,21)欧洲看涨派息股票期权现在考虑欧洲看涨派息股票期权的计算方法,假知它支付的股息是{D1, … , D n}而支付时间为{t1, … , t n=T}。
Black-Derman-Toy 模型Black-Derman-Toy 二义树及期限结构模型与股票期权相似,利率衍生产品都是倚靠其目标物-利率。
而利率期限结构是某个时点不同期限的利率所组成的一条曲线。
它是资产定价、金融产品设计、保值和风险管理、套利以及投机等的基准,也是中央银行控制短期利率变化以影响中长期利率变化的传递机制。
而单因素利率期限结构模型,瞬时短期利率r t 是起着决定性作用的内生变量。
根据市场期望假设,中长期利率等于未来相应时期内瞬时短期利率总和的期望。
而其衍生产品的价格便可根据此短期利率在风险中性下定价f 0=E (e −∫r t dt T 0f T |r 0) (1)在公式(1),期权的未来收益f T 是会根据产生出来到期利率进行评估。
已近代的方法则会以Health, Jarrow, and Morton 的无套利定价方法进行。
在期权定价上,以上的用树式方法便足够将风险中性的短期利率同现实的利率曲线比较。
而Black-Derman-Toy 因此发展出一个简单的二义树模型校正现实零息债券的利率期限结构及波动率.BDT 模型发展出结合将风险中性的短期利率的二义树及特定时间Δt ,如图1(a) 。
图1:(a) BDT 二义树模型结合树交叉点。
(b) 使用风险中性作为期权定价的单一个BDT 分支树在时间t=i Δt ,由上到下会有t+1个交叉点及短期利率r ij 而j 则由0到i 为止。
而其则代表按年计一个周期利率以最短可以借到的期限Δt 由t 到t+Δt 。
BDT 树则跟从Jarrow and Rudd 到参数设定及概率为p=12。
普遍来说,向上及向下的因素会倚赖时间及其相关短期利率的值。
假设设定为一个non-stochastic 结构的短期利率的波动率,就可表示其关系为时间及每一步骤i 时整个列里的短期利率都可设置为两个因素r ij =αi (βi )j (2)公式(1),BDT 树提供一个工具用来评估利率期权在风险中性的定价。