【高频交易】限价订单薄的建模

论坛 期权论坛 期权     
期权匿名问答   2022-4-16 08:46   9475   0
在高频交易中,关于limit order book(LOB)的动态建模是一个非常重要的问题,如果能有一个模型可以很好地描述LOB随时间的演化,那么就能从微观上更好地理解价格的变化机理,从而更好地指导高频交易。这篇文章的内容主要来自《Trades, Quotes and Prices: Financial Markets Under the Microscope》的Part III,它从最基本的模型出发,逐步深入地介绍一些LOB模型,并利用这些理论模型来解释限价订单簿的形成与演化。
整体来说,这些模型会从限价订单薄的本质——订单队列入手进行建模,从一个订单队列的dynamic出发,逐步深入地研究订单的到达、撤销和执行等事件对于订单队列的影响,然后再由此扩展到关于LOB的价格变动,从而实现对于微观价格变化的理论建模。接下来我们就开始具体介绍LOB的建模,关于limit order book 的概念这里就不再过多介绍了,不了解的同学可以自行找资料学习。
Zero-Intelligence Modeling

显然,对一个LOB的dynamic进行完整的建模是一件很复杂的事情,因为LOB是由市场上所有的交易者发出的订单形成的,而我们不可能去估计每一个交易者的个体行为,因此为了使建模变得可行,我们这里假设所有的订单的行为都是随机产生的,即订单的到达、撤销和执行等行为都可以由某些随机过程来描述。当然,这样的假设并不符合实际,我们交易者通常是按照某些策略(strategy)来做行动的,因此这样的基于随机性假设的建模也被叫做零智能建模(zero-intelligence modeling)。虽然这样的假设很简单,但是却能够帮助我们对LOB进行建模,而且在一些特定条件下,其理论结果与实际市场表现符合地很好。
The Master Equation

我们知道,LOB其实是由不同价格的订单队列聚合而成的,因此我们先从最简单的情况出发,研究single-queue dynamic,即同价格、同方向的单队列情况,若令 表示t时刻订单队列的总量,我们假设该订单队列满足:

  • 所有的订单大小相同,均为
  • 限价单的到达服从速率为 的泊松过程。
  • 市价单的到达(队列中的订单被执行)服从速率为 的泊松过程。
  • 订单队列中限价单的撤销服从速率为 的泊松过程(与队列长度无关)。
根据泊松过程的性质,可知在 之间, 的演化为:


如果只考虑 的变动,其仍可以用泊松分布来描述,速率为 ;当变动发生时,增大方向的概率是 ,减小方向的概率是
注意到,这样的dynamic其实还忽略了一个实际情况,那就是当队列为空,即 时,订单就不可能再减小了。因此为了符合实际情况,我们这里假定当 时,队列会立即被补充至 ,这里 是从一个分布中采样出来的。
有了上面的简化建模,我们接下来就可以通过理论推导来分析订单队列的一些性质,首先令 表示在时刻t 队列长度为V的概率,单位时间内队列变空的概率,那么对于 时,满足:


为了便于分析,我们在等式两边乘以 ,其中等式左边变为 ,其代表在队列长度为 的状态下,其概率 在时间 内的变化。
而等式右边的第一项为 ,由泊松分布的性质,可知 表示从队列长度为 的状态变动到 的条件概率,因此该项表示从状态 流出的总概率(即经过 后队列长度从V变为其它值的概率);类似地,第二、三、四项表示从其他状态流入状态V的总概率(即经过 后队列长度从其它值变为V的概率)。
因此对于上式,我们可以这样理解:状态概率的变化 = -流出该状态的概率总和 + 流入该状态的概率总和,如下图所示。


在这里,我们关心的是状态概率密度 是否有稳态解 ,即状态V的概率密度不随时间改变,满足
显然,如果要存在稳态解,需要保证:1、 与时间无关,否则流入概率会随时间变化;2、 ,否则队列长度V会随时间增加至无穷大。
我们考虑 的一个简单形式,假设当 ,其余情况均为0,即对于任何空的队列,都会立即补充至长度 。基于这样的假设,我们可以推导得到稳态的解析解(推导过程可见原书),其形式为:


其中 ,且有
得到稳态分布后,可以计算队列的期望长度 ,当满足极限 时,有 ,可以发现随着 趋近于 ,期望长度也会发散至无穷大。
First-Hitting Times

下面我们来研究订单队列的一个重要的变量,first-hitting times   ,这里指队列 首次变空的所用的时间,显然在随机性假设下,这是一个随机变量,下面我们将分析的一些统计性质。
我们令 表示长度为 的订单队列变空所需的期望时间,根据上文的定义, 为单位时间内队列变空的概率,那么有:


该结果也符合我们的直觉, 可以看做队列长度减小的“速率”,那么从初始的 出发,队列长度首次减小为0的预期时间就应该等于初始长度除以速率。
得到期望后,接下来我们更进一步,推导出 的概率分布。令 代表对于长度为V的序列,first-hitting times 的概率,下面我们就开始求解
我们可以按照动态规划“分而治之”的思想,求解概率 的问题,其实可以被划分为两个子问题, 即:=从 首次到达 的概率 + 从 首次到达 的概率,其中 是队列首次变动所需要的时间
注意这里只考虑首次到达 的概率,由于订单队列每次变动都是 ,因此我们仅需考虑订单队列从V开始的下一次变动的情况(因为只要队列进行一次变动,状态就一定会归结到 两个子问题其中之一)。由上文的泊松过程的假设可知,队列的下一次变动可以用泊松分布来描述,其速率为 ,现在我们考虑这样的事件:初始时刻为0,队列长度在 ~ 期间没有发生变化(即没有任何订单到达或撤销),然后在 ~ 期间,队列长度增加1(即有1个订单到达)。由泊松分布的性质可知,该事件发生的概率为 ,其中第一项为队列在 ~ 没有变动的概率,第二项为在 ~ 增加1的概率;类似地,队列在 ~ 没有变动、且在 ~ 减小1的概率为
由于 的求解需要考虑到所有可能的,因此有:


其边界条件为: ,该条件含义为:若队列长度V=0,则 的概率分布为 函数(在 处为无穷大,其余均为0)
这样我们得到了关于 的方程,对该方程进行求解,后续的推导可见原书,我们这里只给出一个关于first-hitting time 的重要结论:当 足够大时, 将会趋近于以 为均值、 为方差的高斯分布。
Fokker–Planck Equation

上面我们讨论的模型都是基于V是离散的情况,而当V足够大时,我们可以认为V的取值是连续的,这时就可以将上文的master equation扩展至连续情况,具体如下:
对于概率分布函数 ,对其做Taylor展开有


代入master equation,并令


引入drift constant 和diffusion constant ,则有


这样我们就得到了连续情况下的master equation,其是Fokker–Planck equation的一种简单形式,也叫做drift–diffusion equation。类似于离散情况,基于该方程我们可以得到在连续情况下的稳态解,令等式左边为0,并在等式右边加上 (队列长度为0时,立即恢复到 ),考虑到边界条件 ,通过推导可得出


其中
Linear Cancellation Rate

上文的模型都是基于一个固定的订单撤销速率的假设,显然该假设与实际情况有不小的差别,从我们的直觉来说,订单的撤销速率应该与当前订单队列长度有关,即 越大,撤销速率也越大。因此我们这里将撤单速率变为 ,即与序列长度呈线性关系,因此有


为了方便表述,这里令 分别表示 的转移速率,则有
值得注意的是,线性的撤销速率可以保证队列长度的稳定性,若V过大,则 使得队列长度减小,同样,若V过小则会使长度增加,如此可以保证队列的长度趋于稳定。我们计算出队列的稳定长度为
在线性撤销速率的设定下,若我们假设队列长度为0时,会立即恢复到1。那么新的master equation形式变为


这里直接给出稳态解的形式: ,该形式较为复杂,下图是 的一些数值解,可以看出若订单到达速率 越大,那么概率分布越倾向于更大的V;而若订单执行速率越大,则概率分布越倾向于更小的V,理论结果符合我们的直觉。


再进一步,在连续情况下,则有Fokker–Planck equation


其中drift ,diffusion
这里直接给出稳态解的形式:
这样我们就得到了在线性撤销速率的设定下V的概率分布,而关于first-hitting times的分析这里就不再介绍了,感兴趣的同学可以看原书的5.4.2节。
Large-Tick Stocks

上文介绍了single-queue dynamic,接下来我们就通过在原有模型的基础上加入一些设定,来将其用于large tick股票的LOB建模。所谓large tick股票指的是价格的最小变动(tick)占价格比例很大的股票,例如对于一支1元的股票和一支1000元的股票,价格最小变动单位都是0.01元,那么1元的股票相对来说就是large tick股票,因为0.01/1=1%相对来说更大。
我们关注large tick股票的LOB建模主要是考虑到该类股票在最优买(卖)价上的订单队列不会频繁地被清空。我们知道对于small tick股票(即高价股),价格的变化很频繁,而且往往是几个甚至几十tick的变动,对于这样的股票,最优买(卖)价的订单队列可能在极短时间内就被清空,这样就很难用我们之前的single-queue dynamic进行建模;而对于large tick股票,通常价格的变动并不频繁,一般就是在一两个tick之间变动,一个订单队列的“生存”时间相对来说比较长(粗略估计,对于tick/price为0.2%的股票,价格可能每5分钟才会变动一次),因此更加适合进行single-queue dynamic的建模。
假设当前的订单队列为最优卖单队列(best bid-queue),即 ,为了能够对LOB进行建模,我们需要在之前的single-queue设定的基础上做一些补充:买卖价差(bid-ask spread)始终保持为1个tick,即当,要么有新的买单恢复队列(这时买卖价都不会变),要么该价格档位上转变为卖单队列(这时价格下降一个tick),因此只有当订单队列为空时,才有可能出现价格的变化。
具体来说,当时,有 的概率出现新的买单来恢复队列,订单大小 服从分布 ;还有 的概率出现新的卖单来转化为卖单队列,订单大小同样服从分布 ,这时新的卖单队列变为之前第二档的卖单队列,其长度 服从分布 。类似地,对于最优卖单队列(best ask-queue),该设定同样保持一致。
下面我们就推导出在新设定下的Fokker–Planck equation,由上文可知其基本形式为:


其中 代表队列变空的情况对 产生的影响,我们之前的模型都是简单地认为队列会直接恢复至某一长度,不过在现在的模型会考虑得复杂一些,现在我们开始分析的表达式。
分别表示买单和卖单队列在单位时间变空的概率,以最优买单队列为例,有以下几种情况,如下所示:



  • 最优买单队列变空,然后有新的买单到达,恢复买单队列至某一长度。该情况发生的概率为 ,这时队列长度V从0增加至
  • 最优买单队列变空,然后有新的卖单到达,转化为卖单队列,最优买单队列变为原先第二档的买单队列。该情况发生的概率为 ,这时V从0增加至
  • 最优卖单队列变空,然后有新的买单到达,转化为最优买单队列。该情况发生的概率为 ,队列长度从 变为 (因为这时原先的买单队列不再是最优买单队列)
  • 最优卖单队列变空,然后有新的卖单到达,恢复卖单队列。该情况发生的概率为 ,由于没有影响到最优买单队列,因此V保持不变。
由于情况4不会对最优买单队列造成影响,因此的表达式为


我们在这里做对称性假设: ,最终有如下形式,显然对该方程的求解很困难,需要做一些近似处理,这里就不过多介绍了,感兴趣的同学可以看原书6.2节的有关内容。


现在我们用上述的模型来对实证数据进行拟合,来观察模型是否可以解释实际市场中的某些行为。由于频繁的价格变化不符合模型的设定,因此这里去除了开盘后1小时和收盘前1小时的交易数据。为了在不同股票、不同时间段上进行比较,这里采用rescaled volume 作为队列长度,其中 是平均队列长度。
对于挑选的一些large tick股票(书中选择的是CSCO和INTC股票),首先可以从实证数据中总结出一些统计规律:

  • rescaled volume 的变动通常都比较小(大约为6%),这更符合基于连续假设的Fokker–Planck equation。
  • 在订单队列变空之前,队列平均的变动次数足够大(约100次),这样的情况就比较适合于single-queue dynamic。
  • 订单序列变空之后,大约有20%的概率会恢复同方向订单队列,即
其次,我们可以用单位时间 内的实证数据来估计drift 和diffusion ,方法如下所示:


得到的估计结果如下,其中纵轴是drift和diffusion的估计值,横轴是rescaled volume,可以看出两支股票的统计结果比较接近。首先对于drift ,其递减的趋势与上文关于线性撤销速率的假设大体是一致的:当队列长度较小时, 队列倾向于增大,当队列长度较大时, 队列倾向于减小。不过 还是与线性假设存在一些出入,因此如果要建立更符合实际市场的模型,还是需要更加复杂的设定。


最后,对于订单队列长度的分布,将模型的理论结果(即状态概率分布的稳态解 )与实证统计结果进行对比,如下图所示。结果证明使用Fokker–Planck equation 来建模large tick股票的LOB是可行的。


The Race to the Bottom

通过上面的介绍我们知道,价格的变动的前提是最优买单或卖单订单队列变空,因此如果我们能够对最优买单和卖单队列同时建模,那么就能够用模型估计价格下一次变动的方向及其概率,而这也是高频交易中的核心问题。由于该部分公式较多,受限于篇幅,这里只简单介绍分析思路及部分结果,想深入了解的同学可以看原书第7章。
价格下一次变动的问题其实可以看做为两条最优队列之间的the race to the bottom,即两条队列变空的“竞赛”。如果最优买单队列变空,那么价格就有一定概率减小(参考上一节的情况2),因此我们可以通过上述模型研究the race to the bottom问题,最终估计出价格上涨或下跌的概率
具体来说;令最优买单和卖单队列的长度分别为 ,我们要研究的问题类似一个二维粒子的随机运动,我们要研究它会先在哪一个维度到达0。对于一个初始位置为 的随机粒子,其运动轨迹如下图所示,其中左图为完全随机游走的粒子(即买单和卖单队列的dynamic相互独立),右图为真实股票CSCO的运动轨迹。


首先看真实股票的统计结果,考虑到真实样本在某些状态 上的数量可能很少甚至缺失,所以这里将二维的 转化为一维的queue imbalance ratio ,用来表示买卖队列长度的不平衡,而且无需再针对于不同股票和时间段做标准化。在真实数据上的统计结果如下所示,其中虚线为模拟数据的结果(两队列长度是独立的随机游走),可以看出虽然价格在下一次变动时为上涨的概率与 呈正相关,但简单的随机游走模型还是与真实情况存在较大差异。


最后简单介绍一些joint-queue dynamics的建模思路:首先我们可以直接采用上一节的LOB模型,然后通过模型分别得到最优买单和卖单队列的first-hitting time,在一些极限条件下,价格在下一次变动时为上涨的概率,可以近似为: ,结果如下图所示。更进一步,我们还可以直接建立二维的Fokker–Planck equation,来更加灵活地建模买卖队列之间的耦合关系(见原书7.4节),这里就不过多介绍了。


总结

这篇文章我们从浅到深介绍了一系列LOB的建模方法,这类模型在零智能建模假设下,通过对一些实际情况的理想化处理(例如large tick、连续性、spread等),实现了订单队列以及LOB的建模,推导出了一些重要的量(例如订单队列的概率分布 、first-hitting time ),并由此可以研究高频交易中很关心的价格变动概率 问题 。其实,这类模型还能用来研究很多其他重要的问题,诸如估计队列中某一订单被执行的概率、在给定时间内价格上涨的速率等等,都可以套用这篇文章中介绍的模型框架来研究。

参考资料


  • Bouchaud J P, Bonart J, Donier J, et al. Trades, quotes and prices: financial markets under the microscope[M]. Cambridge University Press, 2018.
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP