风险对冲
风险对冲是指通过投资或者购买与标的资产收益波动负相关的某种资产或者衍生证券,来冲销标的资产潜在损失的一种策略.
Delta对冲
Δ
\Delta
Δ定义为其他变量不变时期权价格变化
Δ
c
\Delta c
Δc与标的资产价格变化
Δ
S
\Delta S
ΔS的比率
Δ
=
Δ
c
Δ
S
\Delta=\frac{\Delta c}{\Delta S}
Δ=ΔSΔc
在使用Delta对冲风险时,需要定期调整对冲头寸,否则会承担头寸风险暴露风险.
不支付红利的股票欧式看涨期权的Delta为
Δ
=
N
(
d
1
)
\Delta=N(d_1)
Δ=N(d1)
在对一个看涨期权空头进行
Δ
\Delta
Δ对冲时,在任何时候需要同时持有数量为
N
(
d
1
)
N(d_1)
N(d1)的标的资产多头.
不支付红利的股票欧式看跌期权
Δ
\Delta
Δ为
Δ
=
N
(
d
1
)
−
1
<
0
\Delta=N(d_1)-1<0
Δ=N(d1)−1<0
看跌期权的多头需要用标的资产的多头头寸来对冲风险.
Theta对冲
Θ
\Theta
Θ定义为在其他变量不变期间期权价格变化相对于权利期变化的比率
Θ
=
∂
c
∂
(
T
−
t
)
\Theta=\frac{\partial c}{\partial(T-t)}
Θ=∂(T−t)∂c
不支付红利的股票欧式看涨期权的
Θ
\Theta
Θ为
Θ
=
∂
c
∂
(
T
−
t
)
=
−
S
n
(
d
1
)
1
2
σ
1
T
−
t
−
r
K
e
−
r
(
T
−
t
)
N
(
d
2
)
\Theta=\frac{\partial c}{\partial(T-t)}=-Sn(d_1)\frac{1}{2}\sigma\frac{1}{\sqrt{T-t}}-rKe^{-r(T-t)}N(d_2)
Θ=∂(T−t)∂c=−Sn(d1)21σT−t1−rKe−r(T−t)N(d2)
其中
n
(
x
)
=
1
2
π
e
−
x
2
2
n(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}
n(x)=2π1e−2x2
不支付红利的股票欧式看跌期权的
Θ
\Theta
Θ为
Θ
=
∂
∂
(
T
−
t
)
=
−
S
n
(
d
1
)
1
2
σ
1
T
−
t
+
r
K
e
−
r
(
T
−
t
)
N
(
−
d
2
)
\Theta=\frac{\partial}{\partial (T-t)}=-Sn(d_1)\frac{1}{2}\sigma\frac{1}{\sqrt{T-t}}+rKe^{-r(T-t)}N(-d_2)
Θ=∂(T−t)∂=−Sn(d1)21σT−t1+rKe−r(T−t)N(−d2)
Gamma对冲
Γ
\Gamma
Γ反映了资产价格变动对期权
Δ
\Delta
Δ变动的影响程度
Γ
=
∂
Δ
∂
S
\Gamma=\frac{\partial \Delta}{\partial S}
Γ=∂S∂Δ
Γ
\Gamma
Γ大小反映了为了保持
Δ
\Delta
Δ中性而需要调整的头寸,不支付红利的欧式看涨期权和看跌期权的
Γ
\Gamma
Γ均为
Γ
=
n
(
d
1
)
S
σ
T
−
t
\Gamma=\frac{n(d_1)}{S\sigma\sqrt{T-t}}
Γ=SσT−tn(d1)
Vega对冲
Vega定义为其他量不变时,期权价格
c
c
c变化对标的资产波动率
σ
\sigma
σ变化的比率
V
e
g
a
=
∂
c
∂
σ
Vega=\frac{\partial c}{\partial \sigma}
Vega=∂σ∂c
投资组合管理者需要缩小期权的Vega,将波动率的变化造成的损失降低到最小
V
e
g
a
=
S
n
(
d
1
)
T
−
t
Vega=Sn(d_1)\sqrt{T-t}
Vega=Sn(d1)T−t
Rho对冲
ρ
\rho
ρ定义为其他变量不变时,期权价格
c
c
c变化与利率
r
r
r变化之间的比率,即
ρ
=
∂
c
∂
r
\rho=\frac{\partial c}{\partial r}
ρ=∂r∂c
一般看涨期权的
ρ
\rho
ρ值大于零,看跌期权的
ρ
\rho
ρ值小于零.
不支付红利股票的欧式看涨期权
ρ
\rho
ρ值为
ρ
=
K
(
T
−
t
)
N
(
d
2
)
e
−
r
(
T
−
t
)
\rho=K(T-t)N(d_2)e^{-r(T-t)}
ρ=K(T−t)N(d2)e−r(T−t)
不支付红利股票的欧式看跌期权
ρ
\rho
ρ值为
ρ
=
−
K
(
T
−
t
)
N
(
−
d
2
)
e
−
r
(
T
−
t
)
\rho=-K(T-t)N(-d_2)e^{-r(T-t)}
ρ=−K(T−t)N(−d2)e−r(T−t)
案例
考虑一个不支付红利股票的欧式看涨期权,其标的资产价格是 50 50 50,行权价格是 50 50 50,无风险利率是 10 % 10\% 10%,年波动利率是 30 % 30\% 30%,权利期间还有6个月,求相关参数
解析
预处理参数
d
1
,
d
2
d_1, d_2
d1,d2和
n
(
x
)
n(x)
n(x)
d
1
=
ln
(
S
/
K
)
+
(
r
+
σ
2
/
2
)
(
T
−
t
)
σ
T
−
t
d
2
=
ln
(
S
/
K
)
+
(
r
−
σ
2
/
2
)
(
T
−
t
)
σ
T
−
t
=
d
1
−
σ
T
−
t
n
(
d
1
)
=
1
2
π
e
−
d
1
2
2
\begin{aligned} &d_1=\frac{\ln(S/K)+(r+\sigma^2/2)(T-t)}{\sigma\sqrt{T-t}}\\ &d_2=\frac{\ln(S/K)+(r-\sigma^2/2)(T-t)}{\sigma\sqrt{T-t}}=d_1-\sigma\sqrt{T-t}\\ &n(d_1)=\frac{1}{\sqrt{2\pi}}e^{-\frac{d_1^2}{2}} \end{aligned}
d1=σT−tln(S/K)+(r+σ2/2)(T−t)d2=σT−tln(S/K)+(r−σ2/2)(T−t)=d1−σT−tn(d1)=2π1e−2d12
根据公式计算对冲参数
Δ
=
N
(
d
1
)
Θ
=
−
50
n
(
d
1
)
∗
1
2
∗
σ
∗
1
T
−
t
−
0.1
∗
50
∗
e
−
0.1
∗
0.5
N
(
d
2
)
Γ
=
n
(
d
1
)
50
∗
0.3
∗
0.5
V
=
50
∗
n
(
d
1
)
∗
0.5
ρ
=
50
∗
0.5
∗
N
(
d
2
)
∗
e
−
0.1
∗
0.5
\begin{aligned} &\Delta=N(d_1)\\ &\Theta=-50n(d_1)*\frac{1}{2}*\sigma*\frac{1}{\sqrt{T-t}}-0.1*50*e^{-0.1*0.5}N(d_2)\\ &\Gamma=\frac{n(d_1)}{50*0.3*\sqrt{0.5}}\\ &V=50*n(d_1)*\sqrt{0.5}\\ &\rho=50*0.5*N(d_2)*e^{-0.1*0.5} \end{aligned}
Δ=N(d1)Θ=−50n(d1)∗21∗σ∗T−t1−0.1∗50∗e−0.1∗0.5N(d2)Γ=50∗0.3∗0.5n(d1)V=50∗n(d1)∗0.5ρ=50∗0.5∗N(d2)∗e−0.1∗0.5
cpp
计算对冲参数
#include<iostream>
#include<vector>
#include<cmath>
#include<cstring>
#include<cassert>
#include<iomanip>
#include<random>
#include<map>
using namespace std;
const double pi=3.1415926;
double N(const double &x){
if(x>6.0) return 1.0;
if(x<-6.0) return 0.0;
double b1=0.31938153;
double b2=-0.356563782;
double b3=1.781477937;
double b4=-1.821255978;
double b5=1.330274429;
double p=0.2316419;
double c=1.0/sqrt(2*pi);
double a=fabs(x);
double k=1.0/(1+a*p);
double b=c*exp(-pow(x, 2)/2.0);
double n=((((b5*k+b4)*k+b3)*k+b2)*k+b1)*k;
n=1.0-b*n;
if(x<0.0) n=1.0-n;
return n;
}
void hedge_parameters(const double &S, const double &K, const double &r, const double &sigma, const double &tm, double &Delta, double &Gamma, double &Theta, double &Vega, double &Rho){
double d1=(log(S/K)+(r+pow(sigma, 2)/2)*tm)/(sigma*sqrt(tm));
double d2=d1-sigma*sqrt(tm);
double nd1=exp(-pow(d1, 2)/2)/(sqrt(2*pi));
Delta=N(d1);
Gamma=nd1/(S*sigma*sqrt(tm));
Theta=-(S*sigma*nd1)/(2*sqrt(tm))-r*K*exp(-r*tm)*N(d2);
Vega=S*sqrt(tm)*nd1;
Rho=K*tm*exp(-r*tm)*N(d2);
}
int main(){
double S=50, K=50, r=0.10, sigma=0.30, tm=0.5;
double Delta, Gamma, Theta, Vega, Rho;
hedge_parameters(S, K, r, sigma, tm, Delta, Gamma, Theta, Vega, Rho);
cout<<"Delta: "<<Delta<<endl;
cout<<"Gamma: "<<Gamma<<endl;
cout<<"Theta: "<<Theta<<endl;
cout<<"Vega: "<<Vega<<endl;
cout<<"Rho: "<<Rho<<endl;
return 0;
}
python
计算对冲参数
from scipy.stats import norm as N
from scipy.stats import multivariate_normal as mvn
from math import log, exp, pi
import numpy as np
def hedge_p(S, K, r, sigma, tm):
d1=(log(S/K)+(r+sigma**2/2)*(tm))/(sigma*sqrt(tm))
d2=d1-sigma*sqrt(tm)
nd1=exp(-d1**2/2)/sqrt(2*pi)
Delta=N.cdf(d1)
Gamma=nd1/(S*sigma*sqrt(tm))
Theta=-(S*sigma*nd1)/(2*sqrt(tm))-r*K*exp(-r*tm)*N.cdf(d2)
Vega=S*sqrt(tm)*nd1
Rho=K*tm*exp(-r*tm)*N.cdf(d2)
print('Delta: {}'.format(Delta))
print('Gamma: {}'.format(Gamma))
print('Theta: {}'.format(Theta))
print('Vega: {}'.format(Vega))
print('Rho: {}'.format(Rho))
hedge_p(50, 50, 0.1, 0.3, 0.5)
参考资料
金融资产的定价理论与数值计算 北京大学出版社 田文昭