期权定价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) \\tag1.1
C(St,K,t,T,r,σ)=StN(d1)−e−r(T−t)KN(d2)(1.1)
其中
N
(
d
)
N(d)
N(d)为标准正态分布
x
∼
N
(
0
,
1
)
x \\sim N(0,1)
x∼N(0,1)时
x
<
d
x<d
x<d时的概率,如下所示:
N
(
d
)
=
1
2
π
∫
−
∞
d
e
−
1
2
x
2
d
x
(1.2)
N(d)=\\frac1\\sqrt2\\pi \\int^d_-\\infty e^-\\frac12x^2dx \\tag1.2
N(d)=2π1∫−∞de−21x2dx(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 \\fracS_tK + (r+\\frac\\sigma^22)(T-t) \\sigma \\sqrtT-t \\tag1.3
d1=σT−tlogKSt+(r+2σ2)(T−t)(1.3)
d
2
=
log
S
t
K
+
(
r
−
σ
2
2
)
(
T
−
t
)
σ
T
−
t
(1.4)
d_2=\\frac\\log \\fracS_tK + (r-\\frac\\sigma ^22)(T-t)\\sigma \\sqrtT-t \\tag1.4
d2=σT−tlogKSt+(r−2σ2)(T−t)(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
^
\\hatC
C^,其与当前市场上的期权价格
C
C
C的差值可以用来代表我们当初随机取的
σ
0
i
m
p
\\sigma ^imp_0
σ0imp接近真实值的程度。
我们可以通过牛顿法来求解,我们首先求出
∂
C
∂
σ
\\frac\\partialC\\partial\\sigma
∂σ∂C:
v
e
g
a
=
∂
C
∂
σ
=
S
t
N
′
(
d
1
)
)
T
−
t
(1.5)
vega=\\frac\\partialC\\partial\\sigma = S_t N'(d_1)) \\sqrtT-t \\tag1.5
vega=∂σ∂C=StN′(d1))T−t(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 - \\frac1vega(\\hatC_n-C) \\tag1.6
σn+1imp=σnimp−vega1(C^n−C)(1.6)
上式中
n
n
n代表迭代步数,C代表期权的真实价格,
C
^
n
\\hatC_n
C期权定价Python实现