本文将从文献中查阅欧式香草(欧式看涨、欧式看跌)期权的定价公式,用代码实现该公式。

公式来自于文献[1]。在某些假设下,期权、标的资产的价格满足一个扩散方程(某一类偏微分方程)。

该方程的解析解,就是期权的价格。因此,没有什么难度,无非就是照着书抄公式。

网上例子有很多,随便一搜一大把,我就不在这里废话了。

为了后期的对称性、统一性,可以用一种取巧的方法,不用硬打公式。

定义如下一些函数。

import numpy as np
from scipy.stats import norm

def blsd(x, u, v, t):
    return (np.log(x) + u * t) / (v * (t ** 0.5))

def blsd_1(s, k, t, v, r, d):
    return blsd(s / k, r - d + 0.5 * v ** 2, v, t)

def blsd_2(s, k, t, v, r, d):
    return blsd(s / k, r - d - 0.5 * v ** 2, v, t)

def nd_1(s, k, t, v, r, d):
    return norm.cdf(blsd_1(s, k, t, v, r, d))

于是,就有欧式看涨期权的解析解

import numpy as np
from scipy.stats import norm

def calc_price(s, k, v, r, d):
    """
    欧式看涨期权的价格
    :param s: 标的资产价格
    :param k: 行权价
    :param v: 波动率
    :param t: 距离到期时间(以“年”为单位)
    :param r: 无风险利率
    :param d: 分红率(连续复利)
    :return: 
    """
    price = s * np.exp(-d * t) * norm.cdf(
        blsd(s / k, r - d + 0.5 * v * v, v, t)) - k * np.exp(
        -r * t) * norm.cdf(
        blsd(s / k, r - d - 0.5 * v * v, v, t))
    return price

欧式看跌期权,就不写了。

下面是文献[1]的截图。

 

Ref.

[1] 约翰·赫尔. 期权、期货及其他衍生产品[M]. 机械工业出版社, 2016.

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐