欧式香草期权(普通看涨、看跌)的定价公式及实现
本文将从文献中查阅欧式看涨、看跌期权的定价公式,用代码实现该公式。
·
本文将从文献中查阅欧式香草(欧式看涨、欧式看跌)期权的定价公式,用代码实现该公式。
公式来自于文献[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.
更多推荐



所有评论(0)