3. 订单簿动态特征:订单到达、撤销与成交的随机过程
订单簿不是静止的。它每时每刻都在变化。
我刚开始做高频策略时,总盯着订单簿的快照看。后来发现,这就像看一张照片去理解一部电影——你根本不知道下一秒会发生什么。真正有价值的信息,藏在订单的到达、撤销和成交这三个动态过程里。
3.1 订单到达:泊松过程还是更复杂?
先问个问题:订单到达是随机的吗?
学术上常用泊松过程来建模。说白了,就是假设订单到达的时间间隔服从指数分布。我在早期项目中也是这么用的,但很快发现不对劲。
核心观察:真实市场的订单到达具有明显的聚集效应。大单到来前后,小单会密集出现。这不是纯泊松过程能描述的。
我个人习惯用自激点过程(Hawkes Process)来建模。它考虑了历史事件对未来的影响——一个订单到达后,会短暂地增加后续订单到达的概率。
# 一个简单的Hawkes过程模拟
import numpy as np
def hawkes_process(mu, alpha, beta, T):
"""
mu: 背景到达率
alpha: 自激强度
beta: 衰减速率
T: 模拟时长
"""
events = []
t = 0
while t < T:
# 计算当前强度
lambda_t = mu + alpha * sum(np.exp(-beta * (t - e)) for e in events if e < t)
# 生成下一个事件
u = np.random.uniform()
t += -np.log(u) / lambda_t
if t < T:
events.append(t)
return events
嗯,这里要注意:参数alpha如果大于beta,过程会爆炸。我在实盘回测中吃过这个亏,模拟出来的订单密度高得离谱,完全不符合现实。
3.2 订单撤销:被忽视的流动性信号
很多人只盯着成交看。但我告诉你,撤销订单里藏着大秘密。
为什么会撤销?无非三种情况:
- 策略调整:价格变了,原来的挂单不再合理
- 信息驱动:有人发现了新信息,赶紧撤单重挂
- 试探性挂单:挂个单看看市场反应,然后撤掉
我曾经分析过某交易所的逐笔数据,发现一个有趣现象:大额买单频繁撤销后,往往伴随着价格下跌。你想想看,这其实是在制造虚假的买盘深度,引诱你进场。
实战技巧:监控「撤销率」——单位时间内撤销订单数与到达订单数的比值。当这个比值突然飙升,尤其是买单撤销率异常高时,我建议你谨慎做多。
3.3 成交过程:微观价格发现的引擎
成交是订单簿动态的最终结果。它连接了买方和卖方,也决定了价格的变动。
我习惯把成交过程拆成三个维度来看:
| 维度 | 含义 | 我的用法 |
|---|---|---|
| 成交速率 | 单位时间内的成交笔数 | 判断市场活跃度,速率突增往往意味着大事件 |
| 成交方向 | 主动买还是主动卖 | 计算买卖压力比,比单纯看涨跌更敏感 |
| 成交规模 | 每笔成交的手数 | 区分散户单和机构单,大单成交后价格容易惯性延续 |
举个例子。有一次我发现某股票的成交速率从每秒5笔突然跳到每秒50笔,但价格没怎么动。我当时就觉得不对劲——这明显是有人在偷偷吸筹。果不其然,半小时后一根大阳线拉起来了。
3.4 三个过程的联动:订单簿的生命周期
订单到达、撤销、成交不是孤立的。它们构成了一个完整的循环:
核心逻辑:订单到达 → 订单簿更新 → 部分订单成交 → 剩余订单可能撤销 → 新的订单继续到达
下面这张图展示了这个动态过程:
3.5 实战:如何捕捉动态特征?
光说不练假把式。我分享几个我在实盘中用过的指标:
- 订单到达率的时间序列:按分钟统计订单到达数量,观察是否有周期性或突变
- 撤销/成交比:撤销订单数除以成交订单数。比值大于3时,说明市场犹豫不决,容易变盘
- 主动成交占比:主动买单成交量 / 总成交量。持续高于60%时,多头占优
避坑提醒:我曾经在回测中直接用全量数据计算这些指标,结果实盘时发现延迟太高。后来改用滑动窗口,只保留最近1000笔订单的数据,计算速度提升了10倍,效果反而更好。
说白了,订单簿的动态特征就是市场的呼吸节奏。你抓住了这个节奏,就能提前感知到市场的意图。我个人习惯每天早上开盘前先跑一遍这些指标,看看今天的「呼吸」是否正常——这比看K线图直观多了。
一个小技巧:把订单到达率、撤销率和成交率画在同一张图上。当三条线同时向上发散时,往往意味着大行情要来了。我靠这个信号抓住过好几次突破行情。
嗯,关于订单簿的动态特征,今天就聊这么多。记住一句话:静态的订单簿是过去,动态的过程才是未来。