第七章 订单簿动态建模:从随机过程到高频预测

做市商这行,说白了就是跟订单簿谈恋爱。你得懂它的脾气,知道它下一秒想干嘛。我个人习惯把订单簿看作一个活物——它有呼吸(订单到达),有心跳(价格跳动),偶尔还会抽风(大单砸盘)。

这一章我们聊聊怎么给订单簿建模。别被「随机过程」四个字吓到,其实没那么玄乎。我刚开始做量化时也觉得这玩意儿是数学家的玩具,直到有一次实盘被连续吃掉三层深度...嗯,从那以后我老老实实把Poisson过程啃完了。

核心观点:订单簿的动态本质是「事件驱动」的随机过程。每个订单的到达、撤单、成交,都是一个随机事件。我们要做的,就是找到这些事件背后的统计规律。

7.1 订单到达过程:Poisson过程及其变种

先问个问题:订单到达是随机的吗?答案是:是,也不是。

说「是」,因为微观上你确实无法预测下一秒会不会来一个买单。说「不是」,因为宏观上订单到达率有明显的日内模式——开盘密集、午盘稀疏、收盘前又密集。

最简单的模型是齐次Poisson过程。假设订单到达率λ是常数,那么时间t内到达k个订单的概率是:

P(N(t) = k) = (λt)^k * e^(-λt) / k!

我在项目中遇到过一个问题:用齐次Poisson拟合某币种订单流,结果残差大得离谱。后来发现,这币种在新闻发布时段订单率能飙到平时的20倍。所以实际中我几乎不用齐次Poisson,而是用非齐次Poisson过程——让λ(t)随时间变化。

模型类型 λ是否恒定 适用场景 我的经验
齐次Poisson 流动性极好的成熟市场 基本不用,太理想化
非齐次Poisson 有日内效应的市场 常用,配合时间函数
Cox过程 随机 波动率剧烈变化时 复杂但精准

避坑指南:我曾经用齐次Poisson做回测,策略表现好得离谱。一上实盘就崩。为什么?因为回测时订单到达均匀,实盘时订单扎堆来。记住:金融数据几乎没有「均匀」这回事。

7.2 订单簿的马尔可夫模型

马尔可夫模型的核心假设是:未来只跟现在有关,跟过去无关。你想想看,订单簿是不是这样?

其实不完全对。一个限价单挂在那里,它的命运(成交、撤单、被越过)确实只取决于当前的市场状态。但订单簿的「状态」本身包含了很多历史信息——比如深度、价差、订单密度。

我常用的做法是把订单簿离散化。比如把价格分成若干个bin,每个bin记录挂单量。这样订单簿就变成了一个高维向量。然后假设这个向量服从马尔可夫过程:

P(S_{t+1} | S_t, S_{t-1}, ...) = P(S_{t+1} | S_t)

这里S_t是t时刻的订单簿状态。听起来简单,但实际做起来有两个坑:

  • 维度灾难:如果价格分100个bin,每个bin有10种可能挂单量,状态空间就是10^100。根本算不了。
  • 非平稳性:订单簿的统计特性随时间变化,马尔可夫链的转移矩阵不是固定的。

怎么解决?我个人的经验是:

  1. 只关注关键价格位(买一卖一、买二卖二)
  2. 用隐马尔可夫模型(HMM),把订单簿的「模式」作为隐状态
  3. 定期重估转移矩阵

注意:马尔可夫模型在订单簿上的应用有个致命弱点——它假设状态转移是「无记忆」的。但大单拆单时,后续订单跟前面订单明显相关。这时候马尔可夫模型会失效。我曾经因为这个亏过不少手续费。

7.3 限价订单簿的随机控制

做市商的核心问题是什么?说白了就是:我该在什么价格挂单?挂多少?什么时候撤单?

这本质上是一个随机控制问题。你的动作(挂单、撤单、改单)会影响订单簿的状态,而订单簿的状态又反过来影响你的收益。

经典的框架是Avellaneda-Stoikov模型。它把做市商问题建模成:

最大化:E[最终现金 + 库存清算价值 - 风险惩罚]
控制变量:买卖价差、挂单深度
约束:库存不能爆仓

我在项目中实现过这个模型。说实话,原始版本太理想化了。它假设订单到达率是常数,但实际中订单到达率跟价差高度相关——价差越小,订单来得越快。

所以我做了两个改进:

  • 让订单到达率随价差指数衰减
  • 加入库存惩罚项,防止单边持仓过大

效果怎么样?嗯,至少没爆仓。而且夏普比率从原来的0.8提升到了1.3。虽然不算惊艳,但在实盘中已经够用了。

关键公式:最优报价价差 ≈ 库存风险项 + 订单流不平衡项 + 常数项。这个公式我每次做策略都会默念一遍。

7.4 高频订单流预测

最后聊聊预测。很多人觉得高频预测是玄学,其实不然。订单流中确实存在可预测的模式,只是信噪比极低。

我常用的预测方法有三类:

方法 原理 预测时长 我的评价
自回归模型 利用订单流的历史自相关性 1-5个事件 简单有效,但容易过拟合
LSTM/Transformer 捕捉长程依赖 10-50个事件 效果好,但训练慢
点过程模型 用Hawkes过程建模事件簇 1-10个事件 我最喜欢,解释性强

我个人最推荐Hawkes过程。它假设一个事件的发生会增加后续事件的发生概率——这不就是订单流的真实写照吗?一个大买单进来,往往后面跟着更多买单。

# 简单的Hawkes过程模拟
λ(t) = μ + Σ α * e^(-β(t - t_i))
# μ: 背景强度
# α: 触发强度
# β: 衰减速度

我曾经用Hawkes过程预测某加密货币的订单流方向。准确率只有55%,但已经足够赚钱了。为什么?因为高频交易中,55%的胜率配合合适的赔率,就是印钞机。

实战技巧:预测订单流时,别只看方向。还要预测「强度」——下一波订单会有多猛?这比单纯预测买卖方向更有价值。我习惯把预测结果分成三档:弱、中、强,然后对应不同的做市策略。

知识体系总览

下面这张图是我自己整理的订单簿动态建模知识体系。每次做新策略前,我都会对照这张图检查自己有没有遗漏。

订单簿动态建模知识体系 订单到达过程 • 齐次Poisson过程 (λ恒定) • 非齐次Poisson过程 (λ(t)时变) • Cox过程 (λ随机) • 日内效应与事件驱动 → 核心:事件到达率的建模 马尔可夫模型 • 状态空间定义与离散化 • 转移矩阵估计 • 隐马尔可夫模型 (HMM) • 维度灾难与降维技巧 → 核心:状态转移的统计规律 随机控制 • Avellaneda-Stoikov模型 • 最优报价策略推导 • 库存风险与惩罚项 • 实盘改进与调参 → 核心:在随机环境中做最优决策 高频订单流预测 • 自回归模型 (AR/ARMA) • 深度学习 (LSTM/Transformer) • Hawkes点过程模型 • 方向预测 vs 强度预测 → 核心:从噪声中提取信号 四者结合 → 完整的做市商策略框架

这张图把四个模块串起来了。你想想看:订单到达过程告诉你「事件怎么来」,马尔可夫模型告诉你「状态怎么变」,随机控制告诉你「怎么应对」,高频预测告诉你「未来怎么走」。四者缺一不可。

最后说一句:模型再漂亮,也要经得起实盘检验。我见过太多人在回测里赚得盆满钵满,一上实盘就原形毕露。所以我的建议是——先跑模拟,再跑小资金,最后才上量。每一步都要验证你的订单簿模型是否跟真实市场一致。

本章核心:订单簿动态建模不是学术游戏,而是做市商的生存工具。Poisson过程帮你理解订单流,马尔可夫模型帮你刻画状态,随机控制帮你做决策,高频预测帮你抢跑。把这四样东西吃透了,你就能在订单簿的波涛中游刃有余。


无相订单流研究社 微信Lucian808555