首页 > 其他分享 >3 Limit Order Books

3 Limit Order Books

时间:2024-11-01 20:21:09浏览次数:3  
标签:LOB orders text order 订单 Books Limit 提交 Order

Limit Order Book 的简单描述。

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

The Mechanics of LOB Trading

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

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

  • 方向,\(\varepsilon_x = \pm 1\). 对于 buy order 为 \(+1\).
  • 价格,\(p_x\).
  • 大小,\(v_x > 0\).
  • 提交时间 \(t_x\).

记为:

\[x:=(\varepsilon_x, p_x, v_x,t_x) \]

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

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

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


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

在时间 \(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)\),否则将直接撮合成交。

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\) 是最小的 volume 单位,所有的订单必须满足 \(v_x \in \{kv_0\mid k = 1,2,\cdots\}\).

tick size \(\theta\) 是最小的 price 单位,所有价格必须满足 \(p_x\in\{k \theta \mid k = 1,2,\cdots\}\).

\(v_0,\theta\) 被称为市场的 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\) 时间 \(t\) 的 buy-side volume 记为:

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

位于时间 \(t\) 的 Volume Profile 定义为 \(\{V _\pm (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\) 大小的订单。

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

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

  • 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,即使总成交量最大的最优撮合价格。

标签:LOB,orders,text,order,订单,Books,Limit,提交,Order
From: https://www.cnblogs.com/Clouder-Blog/p/18521202/3-limit-order-books-z1hmnkr

相关文章

  • order by 、sort by、distribute by、group by、cluster by的区别
    1.orderby:用途:主要用于对查询结果进行排序。返回的结果集是全局有序的。SELECT*FROMemployeesORDERBYsalaryDESC;2.SORTBY用途:主要用于对分布式查询结果进行排序。每个节点(分区)分别进行排序,但返回的结果集不一定全局有序。适用于Hive等大数据处理系统。SELEC......
  • 用哈希表封装myunordered_map和myunordered_set
    在学习这个之前,已经学习过,myunordered_map和myunordered_set的基本用法和哈希表怎么用哈希思想模拟实现;因此为了更深入的了解myunordered_map和myunordered_set与哈希表的内容,我们来自己用哈希表模拟实现myunordered_map和myunordered_set;这种模拟实现和之前模拟实现map与set......
  • limit
    1.SELECT列名FROM表名LIMIT行数;    行数表示希望返回的行数。可以为一个正整数,表示返回指定数量的行;也可以为两个整数,用逗号分隔,表示返回指定范围内的行。初始记录行的偏移量是0(而不是1),为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为-1......
  • OpenCV(cv::copyMakeBorder())
    目录1.函数定义2.示例代码3.应用场景4.注意事项cv::copyMakeBorder()是OpenCV中用于给图像添加边框的函数,可以将指定宽度和类型的边框添加到图像的四周。这种操作在图像处理和计算机视觉任务中非常常见,比如在卷积运算中,通过填充边框来避免边界效应影响结果。1.函数......
  • 极限limit
    TheLimit两个重要极限\[\displaystyle\lim_{x\to0}\frac{sinx}{x}=1\]\[\displaystyle\lim_{x\to\infty}(1+x)^{\frac{1}{x}}=e\]间断点1.第一类间断点第一类间断点是指在该点附近的函数值存在,但在该点的极限不存在。具体来说,若$f(x)$在$x=c$附近的左极......
  • 使用HTTP头进行403绕过 速率绕过 Rate Limit Bypass
    原理某些服务可能根据HTTP头部的信息(如User-Agent、X-Forwarded-For等)来识别用户。如果服务器未正确验证这些头部,攻击者可通过伪造这些头部来绕过限制。使用HTTP头进行403绕过速率绕过RateLimitBypassHTTPHeaders列表CACHE_INFO:127.0.0.1CF_CONNECTING_IP:127.0.0.1......
  • .obj file format limit
    .obj文件保存的内容非常有限:顶点、纹理坐标(最多一套)、法线、三角面;它不支持顶点色、多套纹理坐标(uv2,uv3)、TANGENT、BINORMAL、骨骼权重。搜索某度,被其内容所误导,花费不少时间搜索.obj文件支持多套纹理坐标方式,未果!后在Blender中尝试导出带有2套纹理坐标的模型,.obj中只......
  • MySql5.7及以上 ORDER BY 报错问题
    一、问题本人使用的MySql版本是8.0的当MySql5.7及以上的版本执行带有ORDERBY的SQL语句时可能会报错。例如,执行以下mysql语句:SELECTid,user_id,titleFROMm_articleWHEREuser_id>=100ANDuser_id<=200GROUPBYuser_id;SQL报错信息如下:1055-Expression#1o......
  • 【漏洞复现】灵当CRM getOrderList Sql注入漏洞
    免责声明:        本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严......
  • 除了无界鼠标mouse without borders之外还有什么其他的软件可以两台电脑共享一套键鼠
    除了无界鼠标(MouseWithoutBorders)之外,还有几款常见的软件可以实现两台或多台电脑共享一套键盘和鼠标。以下是一些替代选择:1.Synergy平台支持:Windows、macOS、Linux特点:Synergy是一款非常流行的跨平台键鼠共享软件,允许你在多台电脑之间无缝切换。同样支持不同操作系统间......