期权定价Python实现

Posted 最老程序员闫涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了期权定价Python实现相关的知识,希望对你有一定的参考价值。

期权定价公式

期权定价通常使用BSM公式,如下所示:
C ( S t , K , t , T , r , σ ) = S t N ( d 1 ) − e − r ( T − t ) K N ( d 2 ) (1.1) C(S_{t}, K, t, T, r, \\sigma)=S_{t} N(d_{1})-e^{-r(T-t)}KN(d_{2}) \\tag{1.1} C(St,K,t,T,r,σ)=StN(d1)er(Tt)KN(d2)(1.1)
其中 N ( d ) N(d) N(d)为标准正态分布 x ∼ N ( 0 , 1 ) x \\sim N(0,1) xN(0,1) x < d x<d x<d时的概率,如下所示:
N ( d ) = 1 2 π ∫ − ∞ d e − 1 2 x 2 d x (1.2) N(d)=\\frac{1}{\\sqrt{2\\pi}} \\int^{d}_{-\\infty} e^{-\\frac{1}{2}x^{2}}dx \\tag{1.2} N(d)=2π 1de21x2dx(1.2)
式中 d 1 d_{1} d1 d 2 d_{2} d2为两个常数,定义为:
d 1 = log ⁡ S t K + ( r + σ 2 2 ) ( T − t ) σ T − t (1.3) d_{1}=\\frac{\\log \\frac{S_{t}}{K} + (r+\\frac{\\sigma^{2}}{2})(T-t) }{\\sigma \\sqrt{T-t}} \\tag{1.3} d1=σTt logKSt+(r+2σ2)(Tt)(1.3)
d 2 = log ⁡ S t K + ( r − σ 2 2 ) ( T − t ) σ T − t (1.4) d_{2}=\\frac{\\log \\frac{S_{t}}{K} + (r-\\frac{\\sigma ^{2}}{2})(T-t)}{\\sigma \\sqrt{T-t}} \\tag{1.4} d2=σTt logKSt+(r2σ2)(Tt)(1.4)
上式中的符号说明如下所示:

  • C:期权价格;
  • S t S_{t} St:标的资产价格;
  • K:期权行权价格;
  • t:当前时间;
  • T:期权到期时间;
  • r:短期无风险利率;
  • σ \\sigma σ:波动率;

迭代法

我们在初始状态下,先设定 σ \\sigma σ为一个随机值 σ 0 i m p \\sigma ^{imp}_{0} σ0imp,其中上标imp代表是隐含波动率,下标代表是第0步。将 σ 0 i m p \\sigma ^{imp} _{0} σ0imp代入上面的公式,就可以求出一个期权的计算值 C ^ \\hat{C} C^,其与当前市场上的期权价格 C C C的差值可以用来代表我们当初随机取的 σ 0 i m p \\sigma ^{imp}_{0} σ0imp接近真实值的程度。
我们可以通过牛顿法来求解,我们首先求出 ∂ C ∂ σ \\frac{\\partial{C}}{\\partial{\\sigma}} σC
v e g a = ∂ C ∂ σ = S t N ′ ( d 1 ) ) T − t (1.5) vega=\\frac{\\partial{C}}{\\partial{\\sigma}} = S_{t} N'(d_{1})) \\sqrt{T-t} \\tag{1.5} vega=σC=StN(d1))Tt (1.5)
我们可以通过迭代法来找到更好的 σ \\sigma σ的值:
σ n + 1 i m p = σ n i m p − 1 v e g a ( C ^ n − C ) (1.6) \\sigma ^{imp}_{n+1} = \\sigma ^{imp}_{n} - \\frac{1}{vega}(\\hat{C}_{n}-C) \\tag{1.6} σn+1imp=σnimpvega1(C^nC)(1.6)
上式中 n n n代表迭代步数,C代表期权的真实价格, C ^ n \\hat{C}_{n} <

以上是关于期权定价Python实现的主要内容,如果未能解决你的问题,请参考以下文章

期权定价Python实现

期权定价Python实现

期权定价模型之Heston模型--参数校准与定价附python代码

谁有最小二乘蒙特卡洛方法的美式期权定价python程序代码

r语言二元期权barrier option实现案例

实现欧式期权类