今天开始复习(学习)量化相关知识,记点笔记以防下次忘了又学,又想半天
对于一个股票,认为股票价格变化服从布朗运动
d
S
(
t
)
S
(
t
)
=
μ
d
t
+
σ
d
B
(
t
)
{dS(t)\over S(t)} = μdt+σdB(t)
S(t)dS(t)=μdt+σdB(t)
B(t)是从0到t时刻的偏移量
dB(t)是t时刻的偏移量
个人理解:视dB(t)服从N(0, dt),则可以认为 d 2 B ( t ) = d t d^2B(t)=dt d2B(t)=dt
假设期权的价格与股票价格和时间有关,利用泰勒展开:
d
C
t
=
∂
C
t
∂
t
d
t
+
1
2
∂
2
C
t
∂
t
2
d
t
2
+
.
.
.
+
∂
C
t
∂
S
(
t
)
d
S
(
t
)
+
1
2
∂
2
C
t
∂
S
2
(
t
)
d
S
2
(
t
)
+
.
.
.
dC_t={\partial C_t\over \partial t}dt+{1 \over 2}{ \partial ^2 C_t\over \partial t^2}dt^2+...+{\partial C_t \over \partial S(t)}dS(t)+{1 \over 2}{\partial ^2 C_t \over \partial S^2(t)}dS^2(t)+...
dCt=∂t∂Ctdt+21∂t2∂2Ctdt2+...+∂S(t)∂CtdS(t)+21∂S2(t)∂2CtdS2(t)+...
其中,
d
t
2
dt^2
dt2项及之后的项因为是高阶小量,所以忽略,而
d
S
2
(
t
)
=
S
2
(
t
)
(
μ
2
d
2
t
+
2
μ
σ
d
t
d
B
(
t
)
+
σ
2
d
2
B
(
t
)
)
dS^2(t)=S^2(t)(μ^2d^2t+2μσdtdB(t)+σ^2d^2B(t))
dS2(t)=S2(t)(μ2d2t+2μσdtdB(t)+σ2d2B(t)),其后的项因高阶小而忽略,但
d
2
B
(
t
)
=
d
t
d^2B(t)=dt
d2B(t)=dt要留下
所以有
d
C
t
=
(
∂
C
t
∂
t
+
μ
S
(
t
)
∂
C
t
∂
S
(
t
)
+
1
2
σ
2
S
2
(
t
)
∂
2
C
t
∂
S
2
(
t
)
)
d
t
+
σ
S
(
t
)
∂
C
t
∂
S
(
t
)
d
B
(
t
)
dC_t = ({\partial C_t \over \partial t}+μS(t){\partial C_t \over \partial S(t)}+{1 \over 2}σ^2S^2(t){ \partial ^2 C_t \over \partial S^2(t)})dt + σS(t){\partial C_t \over \partial S(t)}dB(t)
dCt=(∂t∂Ct+μS(t)∂S(t)∂Ct+21σ2S2(t)∂S2(t)∂2Ct)dt+σS(t)∂S(t)∂CtdB(t)
利用期权
d
C
t
dC_t
dCt和股票
d
S
(
t
)
dS(t)
dS(t)构建投资组合,使
d
B
(
t
)
dB(t)
dB(t)项被消除
因此我们做多1单位期货做空
∂
C
t
∂
S
(
t
)
\partial C_t \over \partial S(t)
∂S(t)∂Ct的股票
我们持有的投资组合P,有
d
P
t
=
(
∂
C
t
∂
t
+
μ
S
(
t
)
∂
C
t
∂
S
(
t
)
+
1
2
σ
2
S
2
(
t
)
∂
2
C
t
∂
S
2
(
t
)
−
μ
S
(
t
)
∂
C
t
∂
S
(
t
)
)
d
t
dP_t= ({\partial C_t \over \partial t}+μS(t){\partial C_t \over \partial S(t)}+{1 \over 2}σ^2S^2(t){ \partial ^2 C_t \over \partial S^2(t)}-μS(t){\partial C_t \over \partial S(t)})dt
dPt=(∂t∂Ct+μS(t)∂S(t)∂Ct+21σ2S2(t)∂S2(t)∂2Ct−μS(t)∂S(t)∂Ct)dt
d
P
t
=
(
∂
C
t
∂
t
+
1
2
σ
2
S
2
(
t
)
∂
2
C
t
∂
S
2
(
t
)
)
d
t
dP_t= ({\partial C_t \over \partial t}+{1 \over 2}σ^2S^2(t){ \partial ^2 C_t \over \partial S^2(t)})dt
dPt=(∂t∂Ct+21σ2S2(t)∂S2(t)∂2Ct)dt
这个投资组合是无风险的,所以其收益率应当等于无风险收益率(无套利原则),故
d
P
t
d
t
=
r
P
t
{dP_t \over dt}=rP_t
dtdPt=rPt
∂
C
t
∂
t
+
1
2
σ
2
S
2
(
t
)
∂
2
C
t
∂
S
2
(
t
)
=
r
C
t
−
r
S
(
t
)
∂
C
t
∂
S
(
t
)
{\partial C_t \over \partial t}+{1 \over 2}σ^2S^2(t){ \partial ^2 C_t \over \partial S^2(t)}=rC_t-rS(t){\partial C_t \over \partial S(t)}
∂t∂Ct+21σ2S2(t)∂S2(t)∂2Ct=rCt−rS(t)∂S(t)∂Ct
r
C
t
=
∂
C
t
∂
t
+
r
S
(
t
)
∂
C
t
∂
S
(
t
)
+
1
2
σ
2
S
2
(
t
)
∂
2
C
t
∂
S
2
(
t
)
rC_t={\partial C_t \over \partial t}+rS(t){\partial C_t \over \partial S(t)}+{1 \over 2}σ^2S^2(t){ \partial ^2 C_t \over \partial S^2(t)}
rCt=∂t∂Ct+rS(t)∂S(t)∂Ct+21σ2S2(t)∂S2(t)∂2Ct
#得到了BS微分方程
利用极限二叉树法推导期权定价公式,假设有一个欧式看涨C,标的物的初始价格为S,执行价格为K,到期时间为T,无风险利率r。将时间分为n步,从初始到到期,每一步或上涨u或下跌d,根据前面的假设
u
=
e
x
p
(
σ
T
n
)
,
d
=
e
x
p
(
−
σ
T
n
)
u=exp(σ \sqrt {T \over n}), d=exp(-σ \sqrt {T \over n})
u=exp(σnT),d=exp(−σnT)
假设每一步,股票上涨的概率是p,则股票上涨i次下跌n-i次的概率为:
n
!
(
n
−
i
)
!
i
!
p
i
(
1
−
p
)
n
−
i
{n! \over (n-i)!i!}p^i(1-p)^{n-i}
(n−i)!i!n!pi(1−p)n−i
到期时期权的期望收益为:
∑
i
=
0
n
n
!
(
n
−
i
)
!
i
!
p
i
(
1
−
p
)
n
−
i
m
a
x
(
S
u
i
d
n
−
i
−
K
,
0
)
\sum_{i=0}^n {n! \over (n-i)!i!}p^i(1-p)^{n-i}max(Su^id^{n-i}-K,0)
i=0∑n(n−i)!i!n!pi(1−p)n−imax(Suidn−i−K,0)
由于仅在
S
u
i
d
n
−
i
−
K
>
0
Su^id^{n-i}-K>0
Suidn−i−K>0时期权才可以行权
即
S
e
(
2
i
−
n
)
σ
T
n
>
K
Se^{ (2i-n)σ \sqrt {T \over n}}>K
Se(2i−n)σnT>K
解之可得,仅在
i
>
n
2
+
l
n
(
K
S
)
2
σ
T
n
i>{n \over 2}+{ln({K \over S}) \over 2σ \sqrt {T \over n}}
i>2n+2σnTln(SK)时(令该值为
a
a
a),期权可以行权
故,期权的期望收益可以改写为:
∑
i
>
a
n
n
!
(
n
−
i
)
!
i
!
p
i
(
1
−
p
)
n
−
i
m
a
x
(
S
u
i
d
n
−
i
−
K
)
\sum_{i>a}^n {n! \over (n-i)!i!}p^i(1-p)^{n-i}max(Su^id^{n-i}-K)
i>a∑n(n−i)!i!n!pi(1−p)n−imax(Suidn−i−K)
p怎么计算呢?
因为无套利,所以期望的收益率是无风险利率:
p
u
+
(
1
−
p
)
d
=
r
pu+(1-p)d=r
pu+(1−p)d=r
p
=
(
r
−
d
)
(
u
−
d
)
p={(r-d) \over (u-d)}
p=(u−d)(r−d)
p
=
e
r
T
n
−
e
−
σ
T
n
e
σ
T
n
−
e
−
σ
T
n
p={{e^{r{T \over n}}-e^{-σ \sqrt {T \over n}}} \over {e^{σ \sqrt {T \over n}}}-e^{-σ \sqrt {T \over n}}}
p=eσnT−e−σnTernT−e−σnT
再来看期望收益,首先看K的部分,定义
U
1
=
∑
i
>
a
n
n
!
(
n
−
i
)
!
i
!
p
i
(
1
−
p
)
n
−
i
U_1=\sum_{i>a}^n {n! \over (n-i)!i!}p^i(1-p)^{n-i}
U1=i>a∑n(n−i)!i!n!pi(1−p)n−i
是一个二项分布B(n,p)涨的次数大于
a
a
a的概率,当n趋于无穷是,二项分布可以看做正态分布N(np,np(1-p)),故当n趋于无穷时,
U
1
=
N
(
n
p
−
a
n
p
(
1
−
p
)
)
U_1=N{({{np-a}\over {\sqrt {np(1-p)}}})}
U1=N(np(1−p)np−a)
注:N()是正态分布的累积分布函数
代入 a = n 2 + l n ( K S ) 2 σ T n a={n \over 2}+{ln({K \over S}) \over 2σ \sqrt {T \over n}} a=2n+2σnTln(SK)
U 1 = N ( − l n ( K S ) 2 σ T p ( 1 − p ) + n ( p − 1 2 ) p ( 1 − p ) ) U_1=N(-{ln({K \over S}) \over {2σ \sqrt T {\sqrt {p(1-p)}} }}+{\sqrt n{(p-{1\over 2})}\over{\sqrt {p(1-p)}} }) U1=N(−2σTp(1−p)ln(SK)+p(1−p)n(p−21))
再回到p,
现在p看起来很复杂,我们使用x来代替
T
n
\sqrt {T \over n}
nT,得到:
p
=
e
r
x
2
−
e
−
σ
x
e
σ
x
−
e
−
σ
x
p={{e^{rx^2}-e^{-σ x}} \over {e^{σx}}-e^{-σx}}
p=eσx−e−σxerx2−e−σx
根据泰勒展开,
e
x
=
x
+
1
2
x
2
+
.
.
.
e^x=x+{1 \over 2}x^2+...
ex=x+21x2+...
所以,我们把p泰勒展开,省略高阶项(>3)可得:
p
=
σ
x
+
(
r
−
1
2
σ
2
)
x
2
2
σ
x
p={{σx+(r-{1 \over 2}σ^2)x^2} \over {2σx}}
p=2σxσx+(r−21σ2)x2
当n趋于无穷时,x趋于0,p趋于
1
2
1\over 2
21,
p
(
1
−
p
)
\sqrt {p(1-p)}
p(1−p)趋于
1
4
1\over 4
41,代入
n
=
T
x
n={\sqrt T\over x}
n=xT 有
n
(
p
−
1
2
)
=
T
(
r
−
1
2
σ
2
)
2
σ
\sqrt n{(p-{1\over 2})}={\sqrt T(r-{1\over2}σ^2)\over 2σ}
n(p−21)=2σT(r−21σ2)
故当n趋于无穷时,
U
1
=
N
(
l
n
(
S
K
)
+
(
r
−
1
2
σ
2
)
T
σ
T
)
U_1=N({ ln({S \over K})+(r- {1 \over 2}σ^2)T \over σ \sqrt T })
U1=N(σTln(KS)+(r−21σ2)T)
括号里的数就是BS期权定价公式里的 d 2 d_2 d2
然后我们转到S的部分,S前面的参数我们定义为:
U
2
=
∑
i
>
a
n
n
!
(
n
−
i
)
!
i
!
p
i
(
1
−
p
)
n
−
i
u
i
d
n
−
i
U_2=\sum_{i>a}^n {n! \over (n-i)!i!}p^i(1-p)^{n-i}u^id^{n-i}
U2=i>a∑n(n−i)!i!n!pi(1−p)n−iuidn−i
U
2
=
[
p
u
+
(
1
−
p
)
d
]
n
∑
i
>
a
n
n
!
(
n
−
i
)
!
i
!
(
p
u
p
u
+
(
1
−
p
)
d
)
i
(
(
1
−
p
)
d
p
u
+
(
1
−
p
)
d
)
n
−
i
U_2=[pu+(1-p)d]^n\sum_{i>a}^n {n! \over (n-i)!i!}({pu \over {pu+(1-p)d}})^i({(1-p)d \over {pu+(1-p)d}})^{n-i}
U2=[pu+(1−p)d]ni>a∑n(n−i)!i!n!(pu+(1−p)dpu)i(pu+(1−p)d(1−p)d)n−i
因为无套利,故
p
u
+
(
1
−
p
)
d
=
e
r
T
n
pu+(1-p)d=e^{r {T\over n}}
pu+(1−p)d=ernT
令
p
∗
=
p
u
p
u
+
(
1
−
p
)
d
p^*={pu \over {pu+(1-p)d}}
p∗=pu+(1−p)dpu,则
U
2
=
e
r
T
∑
i
>
a
n
n
!
(
n
−
i
)
!
i
!
(
p
∗
)
i
(
1
−
p
∗
)
n
−
i
U_2=e^{rT}\sum_{i>a}^n {n! \over (n-i)!i!}(p^*)^i(1-p^*)^{n-i}
U2=erTi>a∑n(n−i)!i!n!(p∗)i(1−p∗)n−i
这样就得到了同
U
1
U_1
U1时的式子,按照同样的推导,我们可以得到:
U
2
=
e
r
T
N
(
l
n
(
S
K
)
+
(
r
+
1
2
σ
2
)
T
σ
T
)
U_2=e^{rT}N({ ln({S \over K})+(r+ {1 \over 2}σ^2)T \over σ \sqrt T })
U2=erTN(σTln(KS)+(r+21σ2)T)
括号中的内容就是BS期权定价公式里的
d
1
d_1
d1
由此我们可以得到期权的期望收益为:
S
e
r
T
N
(
d
1
)
−
K
N
(
d
2
)
Se^{rT}N(d_1)-KN(d_2)
SerTN(d1)−KN(d2)
折旧到发行日,乘
e
−
r
T
e^{-rT}
e−rT可得到期权的初始价格:
C
=
S
N
(
d
1
)
−
K
e
−
r
T
N
(
d
2
)
C=SN(d_1)-Ke^{-rT}N(d_2)
C=SN(d1)−Ke−rTN(d2)
其中,
d
1
=
l
n
(
S
K
)
+
(
r
+
1
2
σ
2
)
T
σ
T
d_1={ ln({S \over K})+(r+ {1 \over 2}σ^2)T \over σ \sqrt T }
d1=σTln(KS)+(r+21σ2)T
d
2
=
l
n
(
S
K
)
+
(
r
−
1
2
σ
2
)
T
σ
T
d_2={ ln({S \over K})+(r- {1 \over 2}σ^2)T \over σ \sqrt T }
d2=σTln(KS)+(r−21σ2)T
今天又学废了呢。
然后想起来之前上课用C++,根据Trigeorgis(1992)(TRG)编写的二叉树定价模型,一起放在这里,也算有点关系吧
#include <iostream>
#include <cmath>
using namespace std;
double maxi(double a, double b){
return (a>b)? a:b;
}
double btPricer(double s, double k, double T, double vol, double r, int n){// call option
//输入标的物价格,执行价格,到期时间,波动率,无风险利率,n step
double dt = T/n;
double nu = r-0.5*vol*vol;// r - 0.5sigma^2
double delta = sqrt(dt*vol*vol+nu*nu*dt*dt);//增长的比率,参考Trigeorgis
double p = 0.5+0.5*nu*dt/delta;
double* St = new double[n+1]; //二叉树的叶结点
double* V = new double[n+1]; //option price
int i, j;
//at maturity
St[0]=s*exp(-n*delta);//最低价格
for(i=1;i<=n;i++){
St[i] = St[i-1]*exp(2*delta);//每个可能的价格
}
for (i=0;i<=n;i++){
V[i]=maxi(St[i]-k,0);//在期末时的payoff,计算看跌修改这句就好了
}
for(j=n-1;j>=0;j--){
for(i=0;i<=j;i++){
V[i] = exp(-r*dt)*(p*V[i+1]+(1-p)*V[i]);//一步一步往前推,计算每个结点的期权价格,有点抽象,建议思考一下
}
}
double price = V[0];//0时刻的价格
delete[] St;//free up the memory
delete[] V;
return price;
}
int main(){
cout << btPricer(100,100,1,0.2,0.01,100)<<endl;
return 0;
}
输出8.X的样子,上Computaitonal Finance时写的了
(写给自己:代码原理看不懂的时候记得翻翻week1,不要在那里自己想了,想不出来的)