3 Limit Order Books

Limit Order Book 的简单描述。

Ref: https://clouder0.com/zh-cn/posts/limit-order-books/

The Mechanics of LOB Trading

与传统的 Quote-Driven 系统不同,基于 LOB 的系统是完全由 submissions 和 cancellations 驱动的。

一个 order 可以由以下四个属性描述:

  • 方向, ε x = ± 1 \varepsilon_x = \pm 1 εx=±1. 对于 buy order 为 + 1 +1 +1.
  • 价格, p x p_x px.
  • 大小, v x > 0 v_x > 0 vx>0.
  • 提交时间 t x t_x tx.

记为:

$$x:=(\varepsilon_x, p_x, v_x,t_x)$$

每当一个 buy order x x x 提交后,LOB 的 trade-matching algorithm 开始检查是否存在 sell order y y y 满足 p y ≤ p x p_y \le p_x pypx.
如果有,那么这笔订单将被撮合成交。如果还剩下一部分 x x x 尚未被满足,则自动留在 LOB 的价格档位 p x p_x px 上。

提交后直接成交的订单叫做 market orders. 其他的叫做 limit orders. LOB 是公开的、未被满足的交易意愿的集合。可以将其划分为 Bid Orders B ( t ) \mathcal{B}(t) B(t) 和 Ask Orders A ( t ) \mathcal{A}(t) A(t).

在本书中,考虑在时间 t t t 提交的订单不属于 L ( t ) \mathcal{L}(t) L(t),但属于 L ( t + d t ) , d t → 0 \mathcal{L}(t+\mathrm{d}t), \mathrm{d} t \to 0 L(t+dt),dt0.


提交 Limit Order 可以视作:Trader 向 Market 提供了一个在挂单价格成交的机会。也就是提供了流动性。当然,这种情况下也就会面临 Adverse Selection 的风险。
Limit Orders 一般在 mean-revert 时获取收益,在 trend 时承受损失。

在时间 t t t,bid-price 指的是所有 buy limit orders 中最高的价格,ask-price 则是所有 sell limit orders 中最低的价格。

$$\begin{aligned} b(t) := \max \limits _{x\in \mathcal{B}(t)}p_x \\ a(t) := \min _{x\in \mathcal{A}(t)}p_x \end{aligned}$$

在任意时刻, b ( t ) < a ( t ) b(t) < a(t) b(t)<a(t),否则将直接撮合成交。

mid-price 定义为:

$$m(t) := \dfrac{1}{2}\left[a(t) +b(t)\right]$$

spread 定义为:

$$s(t) := a(t)-b(t)>0$$

使用 overline notation 来标记某个时刻后的瞬间的属性:

$$\overline{m}(t) = \lim \limits_{t' \downarrow t} m(t')$$

image

lot size v 0 v_0 v0 是最小的 volume 单位,所有的订单必须满足 v x ∈ { k v 0 ∣ k = 1 , 2 , ⋯   } v_x \in \{kv_0\mid k = 1,2,\cdots\} vx{kv0k=1,2,}.

tick size θ \theta θ 是最小的 price 单位,所有价格必须满足 p x ∈ { k θ ∣ k = 1 , 2 , ⋯   } p_x\in\{k \theta \mid k = 1,2,\cdots\} px{kθk=1,2,}.

v 0 , θ v_0,\theta v0,θ 被称为市场的 resolution parameters. 不同的市场会有不同的设置。这两个参数在各种方面都会影响交易。


研究 LOB 时,常常使用 same-side quote-relative coordinates.

$$d(p_x,t) :=\begin{cases} b(t) - p_x, \text{if } x \text{ is a buy limit order}\\ p_x - a(t), \text{if } x \text{ is a sell limit order} \end{cases}$$

很多时候,使用 opposite-side quote-relative coordinates 是更好的:

$$d^\dagger(p_x,t) :=\begin{cases} a(t) - p_x, \text{if } x \text{ is a buy limit order}\\ p_x - b(t), \text{if } x \text{ is a sell limit order} \end{cases}$$

有:

$$d^\dagger(p_x,t) = d(p_x,t) + s(t)$$

大部分时候,我们通过 volume profile 来观察 LOB. 在价格 p p p 时间 t t t 的 buy-side volume 记为:

$$V_+(p,t) := \sum \limits _{\{x \in \mathcal{B}(t) \mid p_x=p\}} v_x$$

位于时间 t t t 的 Volume Profile 定义为 { V ± ( p , t ) } \{V _\pm (p,t)\} {V±(p,t)}.


image

进行撮合时,同一个价格上可能有多笔订单。此时需要确定 priority.

最常见的是 price-time priority. 先比较价格,再比较时间。

还有另一种常用的方法是 pro-rata priority,当某个价格档位发生成交时,所有相关的 Limit Order 根据其在该价格档位所占的 Volume Size 分到一部分的成交。
在这个撮合机制中,有一个有趣的手法:如果你希望尽快成交,可以提交比你实际需求更大的 Volume,这样可以在撮合匹配时抢到更大的份额。

Price-time priority 鼓励 Traders 尽早提交,抢先以更高的价格提交从而减小 Spread、增加流动性。Pro-rata priority 则鼓励 Traders 提交更大的订单,从而在 best quotes 提供更大的深度。


Traders 在 LOB 上的行为可以被拆解为 elementary size v 0 v_0 v0 大小的订单。

例如:当我在 p x = 1.5 p_x=1.5 px=1.5 提交 v x = 10 v 0 v_x = 10v_0 vx=10v0 的 buy order 时,实际上等效于在 p x = 1.5 p_x=1.5 px=1.5 提交 10 笔 v x = v 0 v_x=v_0 vx=v0 的 buy orders. 在做研究时,为了方便,经常直接考虑 elementary size v 0 v_0 v0 的单位订单。

但实际上订单的种类多种多样:

  • Stop orders:止损订单,当价格达到某个位置后触发自动挂单。
  • Iceberg orders:用于隐藏真实意图的冰山订单,只有一小部分 peak volume 被公开挂在 LOB 上,而每次这部分成交后,继续挂单保持 peak volume,直到 hidden volume 被执行完毕。
  • Immediate-or-cancel orders:提交订单,撮合并立即成交能成交的那部分,随后自动撤掉未成交的部分。如果一点都没有成交,等效于没有提交订单。不会在 LOB 上留下痕迹。
  • Fill-or-kill orders:和 IOC 类似,但这种情况要么全部成交,要么全部撤单。
  • ...

有一些市场还有 opening & closing auctions:在开盘、收盘的一段时间中,可以挂单,但不发生撮合成交。直到最终截止的时候再一次性撮合。在这个过程中,Traders 可以提交订单,提交的订单也会显示在 LOB 上,同时还会有一个 auction price,即使总成交量最大的最优撮合价格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值