Press "Enter" to skip to content

扩展期权定价模型到二元期权定价

 

欧式期权定价回顾

 

我们通过蒙特卡罗模拟为欧式期权定价的模型可以作为定价各种奇异期权的基础。在我们此前的模拟中,我们定义了一种在到期时分配资产价格的方法,以及一种用该价格评估到期期权价值的方法。

 

这种模拟方法一般可以被认为是这样的:

 

while i < num_iterations:
    S_T = generate_asset_price()
    payoffs += payoff_function(S_T)
    i += 1
option_price = exp(-r*T) * (payoffs / num_iterations)

 

通过改变我们生成资产价格的方式,以及我们评估期权收益的方式,我们可以为一些奇异期权生成价格。详细步骤,请参考我们的历史文章。

 

二元期权

 

二元期权(也称为全有全无,或数字期权)是一种收益为一定数量或根本没有收益的期权。 回报通常是固定数量的现金或资产的价值。

 

对于我们的模拟,我们将研究现金或无现金二元期权。 二元看涨期权和看跌期权的收益如下所示。

 

 

二元看涨期权的收益图告诉我们,如果股票价格大于或等于 40.00 美元(我们的行使价),则期权支付 1.00 美元。我们可以将一个二元看涨期权的收益写成一个 Python 函数:

 

def binary_call_payoff(K, S_T):
    if S_T >= K:
        return 1.0
    else:
        return 0.0

 

模拟计算过程

 

我们的资产价格仍将遵循几何布朗运动,因此我们可以使用此前文章中的 generate_asset_price() 函数。该函数实现代码如下:

 

def gbm(S, v, r, T):
    return S * exp((r - 0.5 * v**2) * T + v * sqrt(T) * random.gauss(0,1.0))

 

这就是我们需要为二元现金或非现金看涨期权定价的全部内容了。把上述内容组合起来:

 

import random
from math import exp, sqrt
def gbm(S, v, r, T):
    return S * exp((r - 0.5 * v**2) * T + v * sqrt(T) * random.gauss(0,1.0))
def binary_call_payoff(K, S_T):
    if S_T >= K:
        return 1.0
    else:
        return 0.0
# parameters
S = 40.0 # asset price
v = 0.2 # vol of 20%
r = 0.01 # rate of 1%
maturity = 0.5
K = 40.0 # ATM strike
simulations = 50000
payoffs = 0.0
# run simultaion
for i in xrange(simulations):
    S_T = gbm(S, v, r, maturity)
    payoffs += binary_call_payoff(K, S_T)
# find prices
option_price = exp(-r * maturity) * (payoffs / float(simulations))
print 'Price: %.8f' % option_price

 

运行上述代码,得到 0.48413327 的价格,约等于 0.484 。

 

检验结果

 

当然,二元期权也可以使用传统的 Black Scholes 模型定价,使用以下公式:

 

 

其中 N 是累积正态分布函数,d2 由标准 Black Scholes 公式给出。

 

让我们通过插入此前模拟中的参数来测试上一步我们所计算的价格是否准确:

 

>>> from scipy.stats import norm
>>> from math import exp, log, sqrt
>>> S, K, v, r, T = 100.0, 100.0, 0.2, 0.01, 0.5
>>> d2 = (log(S/K) + (r - 0.5 * v**2) * T) / v*sqrt(T)
>>> print exp(-r * T) * norm.cdf(d2)
0.490489409105

 

可以看到,Black Scholes 公式给出的价格约为 0.490 。这意味着我们的模拟计算价格,仅与BS公式计算的价格相差 0.006 ,从这个结果可以验证,我们的计算结果是比较准确的。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注