3. 订单簿与市场微观结构

做量化交易,尤其是高频抢单策略,你绕不开一个东西——订单簿

说白了,订单簿就是交易所的「实时记账本」。每一笔挂单、撤单、成交,都在上面写得清清楚楚。我个人习惯把订单簿比作一个菜市场:买菜的(买方)和卖菜的(卖方)各自报价,谁出价合适,当场成交。

嗯,今天我们就来拆解这个「菜市场」的底层逻辑。

3.1 订单簿数据结构

先看最基础的东西。订单簿的数据结构其实不复杂,核心就两个队列:买单队列(Bid)卖单队列(Ask)

每个队列里,价格从高到低(买单)或从低到高(卖单)排列。每条记录包含:价格、数量、订单编号、时间戳。

我截取一个典型的L2行情快照,你感受一下:

{
  "bids": [
    [100.50, 1200],  // 价格100.50,数量1200股
    [100.49, 800],
    [100.48, 1500]
  ],
  "asks": [
    [100.51, 900],
    [100.52, 1100],
    [100.53, 600]
  ],
  "timestamp": 1699000000123
}

注意,这里只展示了价格和数量。实际生产环境中,订单簿还会包含订单ID订单类型(限价单/市价单)、交易所标识等字段。

关键点:订单簿是动态变化的。每毫秒都有新订单进来,也有旧订单被吃掉或撤销。你的策略必须能处理这种「流式更新」。

我在项目中遇到过一个问题:有些交易所的订单簿更新不是全量推送,而是增量推送。比如只告诉你「第3档买单数量变了」。如果你没处理好增量合并,订单簿就会「错位」,策略直接崩掉。

3.2 买卖盘口深度分析

盘口深度,就是看「各个价位上到底有多少单子」。这玩意儿能告诉你市场的真实流动性。

举个例子。假设某股票当前买一价100.50,数量1000股;卖一价100.51,数量500股。表面上看,买卖价差只有1分钱,流动性不错。

但你往深了看:

  • 买二价100.49,数量只有200股
  • 买三价100.48,数量只有100股
  • 卖二价100.52,数量却有10000股

这说明什么?买方深度极差,卖方深度极强。一旦有大单砸下来,价格很容易被打穿。反过来,如果大单往上拉,上方卖单稀薄,价格可能瞬间飙升。

我个人习惯用深度斜率来衡量盘口健康度。计算方式很简单:

深度斜率 = (累计数量变化) / (价格变化)

斜率越小,说明该方向流动性越差。抢单策略里,我一般会避开深度斜率小于某个阈值的品种——你想想看,进去容易,出来可就难了。

实战技巧:我建议你在回测时,把盘口深度作为一个特征加入模型。比如计算「买一到买五的总量 / 卖一到卖五的总量」,这个比值能反映短期多空力量对比。

3.3 价差与滑点模型

价差,就是买一价和卖一价之间的差值。滑点,就是你实际成交价和预期价格之间的差值。

这两个东西,是抢单策略的「隐形杀手」。

先说话价差。理想情况下,价差越小越好。比如某ETF的价差只有1个tick(0.001元),你来回交易的成本就很低。但有些冷门股票,价差可能达到几十个tick,你一买一卖,光价差就亏掉1%。

我常用的价差模型是这样的:

spread = ask_price_1 - bid_price_1
relative_spread = spread / mid_price

其中mid_price = (ask_price_1 + bid_price_1) / 2。相对价差超过0.5%的品种,我个人基本不会碰。

再说滑点。滑点模型要复杂一些。它取决于:

  • 订单规模:你下的单子越大,滑点越严重
  • 市场流动性:流动性越差,滑点越大
  • 下单速度:你比别人慢1毫秒,可能就多滑1个tick

我曾经踩过一个坑:回测时假设滑点为0,结果实盘一跑,每天亏掉2%的滑点成本。后来我学乖了,回测时至少加2个tick的滑点惩罚。

避坑指南:我曾经在回测中忽略了大单对盘口的冲击。结果策略在模拟中赚得飞起,实盘一跑就亏。后来我加入了「市场冲击模型」——简单说,就是根据你的订单量,动态计算它会吃掉几档盘口。

这里给出一个简单的滑点估算公式:

slippage = (order_quantity / total_volume_at_best_price) * tick_size

比如你想买1000股,但卖一档只有500股。那么你的订单会吃掉卖一档的500股,然后继续吃卖二档。滑点就是两个价位之间的差值。

3.4 知识体系总览

为了让你更直观地理解本章内容,我画了一张结构图:

订单簿与市场微观结构 订单簿数据结构 • 买单队列 / 卖单队列 • 价格、数量、订单ID • 全量快照 vs 增量更新 买卖盘口深度分析 • 各价位挂单数量 • 深度斜率计算 • 多空力量对比 价差与滑点模型 • 绝对价差 / 相对价差 • 滑点估算公式 • 市场冲击模型 核心要点 订单簿是微观结构的基石 盘口深度决定流动性质量 价差与滑点是成本控制的关键

这张图把本章的三个核心模块串起来了。你仔细看,它们其实是层层递进的关系:先理解数据结构,再分析盘口深度,最后用价差和滑点模型来量化成本。

好了,这一章的内容就到这里。记住一句话:订单簿是市场的「心电图」,读懂了它,你才能抓住真正的交易机会。


公众号:蓝海资料掘金营,微信deep3321