做市商获利点
做市商的利润主要来自于买卖价差,在设计定价模型之前应该要主要考量这个定价模型的值域以及收敛值。如果值域就出了问题,那么这个定价模型基本来说是不合格的。最后依赖于if placebid > bestbid
,或是if placeask < bestask
,那就是无效定价。这种需要保险的情况只应该存在于长尾模型中,否则避免对这种条件边界值过于依赖。在成交记录中发现买的是当时的ASK,卖的是当时的BID,这就是给市场中其他做市商送菜。对于这点,以后有时间再细说。
定价模型
这里提出一个FairSpread模型
Vol
=
∑
i
=
1
n
−
1
w
i
+
1
∣
p
i
+
1
−
p
i
∣
\text{Vol}=\sum_{i=1}^{n-1}w_{i+1}|p_{i+1}-p_i|
Vol=i=1∑n−1wi+1∣pi+1−pi∣
其中
w
w
w为成交价的权重,它可以是一个Constant vector,也可以是一个Auto-increment sequence,如果是前者,可以写为
Vol
=
w
∑
i
=
1
n
−
1
∣
p
i
+
1
−
p
i
∣
\text{Vol}=w\sum_{i=1}^{n-1}|p_{i+1}-p_i|
Vol=wi=1∑n−1∣pi+1−pi∣
这取决于窗口的长短,如果是后者,可以定义
w
w
w为Auto-increment sequence,并且它服从概率公理:Non-negativity + Normativity + Listability
{
a
i
}
1
n
=
{
a
i
=
a
1
r
i
−
1
∣
a
1
=
1
}
,
{
m
i
}
1
n
=
{
a
i
∑
a
}
1
n
,
{
w
i
}
1
n
=
{
m
i
}
n
1
\begin{align}\{a_i\}_1^n=\{a_i=a_1r^{i-1}|\ a_1=1\}\end{align},\{m_i\}_1^n=\{\frac{a_i}{\sum a}\}_1^n,\ \{w_i\}_1^n={\{m_i\}_n^1}
{ai}1n={ai=a1ri−1∣ a1=1},{mi}1n={∑aai}1n, {wi}1n={mi}n1
这时可以写为
Vol
=
W
P
T
\text{Vol}=WP^T
Vol=WPT,通过这样的方式可以短暂性预测价差。
对于orderbookImbalance,业内常见用法是
Im
=
ν
b
ν
b
+
ν
a
,
1
−
Im
=
ν
a
ν
b
+
ν
a
\text{Im}=\frac{\nu_b}{\nu_b+\nu_a},\ 1-\text{Im}=\frac{\nu_a}{\nu_b+\nu_a}
Im=νb+νaνb, 1−Im=νb+νaνa
如果我们要计算multi layer microprice imbalance,计算方式为
ℑ
=
∑
w
i
log
∑
j
:
p
j
b
⩾
p
b
∗
(
1
−
d
i
)
q
j
b
∑
k
:
p
k
a
⩽
p
a
∗
(
1
+
d
i
)
q
k
a
\Im=\sum w_i\log\frac{\sum_{j:p_j^b\geqslant p_b^*(1-d_i)q_j^b}}{\sum_{k:p_k^a\leqslant p_a^*(1+d_i)q_k^a}}
ℑ=∑wilog∑k:pka⩽pa∗(1+di)qka∑j:pjb⩾pb∗(1−di)qjb
一个不平衡度的成立,应遵从这样的原则:
∑
p
b
∑
p
a
∬
D
∈
[
0
,
t
σ
2
π
]
ℑ
(
ω
)
d
Ω
−
ε
=
1
2
n
∑
i
=
1
n
(
p
i
b
+
p
i
a
)
\frac{\sum p_b}{\sum p_a}\iint_{D\in[0,\frac{t\sigma}{\sqrt{2\pi}}]}\Im(\omega)d\Omega-\varepsilon=\frac{1}{2n}\sum_{i=1}^n(p_i^b+p_i^a)
∑pa∑pb∬D∈[0,2πtσ]ℑ(ω)dΩ−ε=2n1i=1∑n(pib+pia)
简单来说,可以写成比较好的形式:
∬
D
∈
[
0
,
t
σ
2
π
]
ℑ
(
ω
)
d
Ω
−
S
p
a
ε
S
p
b
=
S
p
a
S
p
b
2
n
∑
i
=
1
n
(
p
i
b
+
p
i
a
)
\iint_{D\in[0,\frac{t\sigma}{\sqrt{2\pi}}]}\Im(\omega)d\Omega-\frac{S_{p_a}\varepsilon}{S_{p_b}}=\frac{S_{p_a}}{S_{p_b}2n}\sum_{i=1}^n(p_i^b+p_i^a)
∬D∈[0,2πtσ]ℑ(ω)dΩ−SpbSpaε=Spb2nSpai=1∑n(pib+pia)
这里说明一点,由于回归原理,
ε
→
0
\varepsilon\to0
ε→0,则可直接写为
2
n
∬
D
∈
[
0
,
t
σ
2
π
]
ℑ
(
ω
)
d
Ω
=
S
p
a
S
p
b
∑
i
=
1
n
(
p
i
b
+
p
i
a
)
+
ε
2n\iint_{D\in[0,\frac{t\sigma}{\sqrt{2\pi}}]}\Im(\omega)d\Omega=\frac{S_{p_a}}{S_{p_b}}\sum_{i=1}^n(p_i^b+p_i^a)+\varepsilon
2n∬D∈[0,2πtσ]ℑ(ω)dΩ=SpbSpai=1∑n(pib+pia)+ε
一个Imbalance成立后,应当考虑值域问题是否需要映射到[-1,1]中去,最简单的比方是这样:
Im
=
(
ν
b
ν
b
+
ν
a
−
0.5
)
∈
[
−
1
,
1
]
\text{Im}=\left(\frac{\nu_b}{\nu_b+\nu_a}-0.5\right)\in[-1,1]
Im=(νb+νaνb−0.5)∈[−1,1]
以下是microprice imbalance最一般的定义:
p
micro
=
p
a
ν
b
+
p
b
ν
a
ν
b
+
ν
a
p_\text{micro}=\frac{p_a\nu_b+p_b\nu_a}{\nu_b+\nu_a}
pmicro=νb+νapaνb+pbνa
其实定价这件事情最后都是考验经验的时候,并没有那么复杂,从最一般的定义出发也可以做出很好的定价模型 ,比如这里使用VAM:
p
vam
=
B
fair
+
A
fair
2
p_\text{vam}=\frac{B_\text{fair}+A_\text{fair}}{2}
pvam=2Bfair+Afair
再定义一个Alpha迭代序列
{
α
(
1
−
α
)
i
}
1
n
\{\alpha(1-\alpha)^i\}_1^n
{α(1−α)i}1n
就可以做出一些比较好的定价模型。至于Alpha遵从怎样的定义方式,这里就不过多赘述了。以下是一种基于VAM的一种Spread形式:
δ
vam
=
β
log
p
micro
p
vam
\delta_\text{vam}=\beta\log\frac{p_\text{micro}}{p_\text{vam}}
δvam=βlogpvampmicro
在以上
p
vam
p_\text{vam}
pvam中,没有具体给出
B
fair
B_\text{fair}
Bfair和
A
fair
A_\text{fair}
Afair的定义,最后在这里给出此FairPrice的定价公式:
X
fair
=
∑
j
=
1
n
f
X
(
p
j
,
q
j
)
∑
i
=
1
n
g
X
(
q
i
)
X_\text{fair}=\sum_{j=1}^n\frac{f_X(p_j,q_j)}{\sum_{i=1}^ng_X(q_i)}
Xfair=j=1∑n∑i=1ngX(qi)fX(pj,qj)
这里就不提供显式
f
f
f和
g
g
g的定义了,这里就是读者们可以自行设计的地方,可以设计为线性函数,也可以设计为非线性函数,取决于运行效率和模型精确度之间的抉择。
综上,我们给出了FairSpread和FairPrice的定价思路,并且明确给出了理论约束。剩下的就看大家是如何运用了。以上模型具有很强的泛化能力,可能稍微有一些复杂度,如果数学还可以的小伙伴不妨可以试着去推广。
这里告诉大家一个隐含的内容,通过一些推广,可以推出BSE模型的关联形式。