2. 订单簿与市场微观结构:限价订单簿(L2/L3)、买卖价差、市场深度、订单流分析

做市商这行,说白了就是跟「订单簿」打交道。你每天盯着的那个不断跳动的数字墙,就是市场的脉搏。我个人习惯把订单簿比作「战场地图」——谁在哪个价位埋伏了多少兵力,一目了然。

今天我们就来拆解这张地图。我会结合自己踩过的坑,把L2/L3数据、价差、深度这些概念讲透。

2.1 限价订单簿:市场的骨架

限价订单簿,英文叫Limit Order Book,简称LOB。它记录了所有未成交的限价单。交易所靠它来撮合买卖双方。

订单簿分两层:

  • L1数据:只有最优买卖价(Best Bid/Offer)。说白了就是「当前最高买价」和「当前最低卖价」。
  • L2数据:展示多个价位的挂单量。比如买一到买十,卖一到卖十。这是做市商最常用的数据。
  • L3数据:能看到每个价位的每一笔挂单。谁挂的、挂了多少、什么时候挂的。嗯,这个级别数据量巨大,一般只有高频玩家才用。

核心要点:L2告诉你「哪里有人」,L3告诉你「谁在那里」。做市商策略通常基于L2就够用了,但如果你做的是Tick级别的抢单策略,L3是必须的。

我在项目中遇到过一件事:有一次我们只用了L2数据做策略,结果发现某个价位突然出现大单,我们跟着撤单。后来复盘才发现,那是个「幽灵单」——挂上去一秒就撤了。如果当时有L3数据,就能看到这个单子来自同一个账户,明显是诱多行为。

2.2 买卖价差:做市商的饭碗

买卖价差,就是卖一价减去买一价。这个数字直接决定了你的利润空间。

举个例子:

买一:100.00  挂单量 1000股
卖一:100.05  挂单量 800股
价差 = 100.05 - 100.00 = 0.05

你作为做市商,如果能在100.00买入,在100.05卖出,每笔赚0.05。但别高兴太早——这是理论利润。实际中要考虑手续费、滑点、以及被对手方吃掉的风险。

我的经验:价差不是越小越好。价差太小,说明市场流动性好,但竞争也激烈。我曾经在某个山寨币上做市,价差只有0.01%,结果一天下来利润还不够手续费。后来我调整策略,专门做那些价差在0.1%-0.3%之间的品种,反而赚得稳。

价差的变化能告诉你很多信息:

  • 价差突然扩大:可能是大新闻来了,流动性瞬间枯竭
  • 价差持续收窄:说明有专业做市商在竞争,或者市场情绪趋于一致
  • 价差不对称:比如买盘价差小、卖盘价差大,说明买方更积极

2.3 市场深度:你能吃下多少单

市场深度,就是订单簿上各个价位的挂单总量。它回答一个问题:如果你想买1000股,价格会滑多少?

深度通常用「深度图」来展示。我习惯用Python画一个简单的深度曲线:

import numpy as np
import matplotlib.pyplot as plt

# 模拟订单簿数据
prices = np.arange(99.0, 101.0, 0.05)
bid_volumes = [500, 800, 1200, 1500, 2000, 1800, 1300, 900, 600, 300]
ask_volumes = [200, 400, 700, 1100, 1600, 2000, 2400, 2800, 3200, 3600]

# 计算累计深度
cum_bid = np.cumsum(bid_volumes[::-1])[::-1]
cum_ask = np.cumsum(ask_volumes)

plt.figure(figsize=(10, 6))
plt.step(prices[:10], cum_bid, where='mid', label='买方深度', color='green')
plt.step(prices[10:], cum_ask, where='mid', label='卖方深度', color='red')
plt.axvline(x=prices[9], color='gray', linestyle='--', label='当前价格')
plt.xlabel('价格')
plt.ylabel('累计挂单量')
plt.title('市场深度曲线')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

这张图能直观告诉你:

  • 曲线越陡峭,说明深度越浅,大单容易造成价格剧烈波动
  • 曲线越平缓,说明深度越好,大单可以被消化
  • 买卖两侧深度不对称,说明市场存在方向性偏好

避坑指南:我曾经以为深度图上的挂单量是「真实」的。后来发现,很多高频交易者会在关键价位挂「冰山单」——只显示一部分,实际挂单量可能是显示的5倍。所以,别完全相信你看到的深度。

2.4 订单流分析:读懂市场的语言

订单簿是静态的,订单流是动态的。订单流分析,就是研究每一笔成交和挂单的变化,从中找出规律。

我常用的几个指标:

指标 含义 我的用法
成交笔数 单位时间内的成交次数 突然暴增说明有大户在行动
主动买/卖量 吃单方是买方还是卖方 主动买量 > 主动卖量,短期看涨
订单撤销率 挂单后未成交就撤单的比例 撤单率高说明有人在试探市场
价差恢复时间 大单成交后价差回到正常水平的时间 恢复越快,流动性越好

举个例子,我写过一段简单的订单流分析代码:

def analyze_order_flow(trades):
    """
    分析订单流,返回主动买卖比例
    trades: list of dict, 每笔成交包含 price, volume, side (buy/sell)
    """
    buy_volume = sum(t['volume'] for t in trades if t['side'] == 'buy')
    sell_volume = sum(t['volume'] for t in trades if t['side'] == 'sell')
    total = buy_volume + sell_volume
    
    if total == 0:
        return {'buy_ratio': 0.5, 'sell_ratio': 0.5}
    
    return {
        'buy_ratio': buy_volume / total,
        'sell_ratio': sell_volume / total,
        'net_flow': buy_volume - sell_volume
    }

# 使用示例
sample_trades = [
    {'price': 100.0, 'volume': 100, 'side': 'buy'},
    {'price': 100.1, 'volume': 200, 'side': 'sell'},
    {'price': 100.0, 'volume': 150, 'side': 'buy'},
]
result = analyze_order_flow(sample_trades)
print(f"主动买入比例: {result['buy_ratio']:.2%}")

你想想看,如果主动买入比例持续高于60%,说明买方在抢筹。这时候你作为做市商,应该适当提高卖单价格,别傻乎乎地按原价卖。

2.5 知识体系总览

下面这张图,是我自己总结的订单簿与微观结构的知识框架。建议你保存下来,每次做策略前看一眼:

订单簿与市场微观结构知识体系 订单簿 (LOB) 限价订单簿(L2/L3) 买卖价差 市场深度 订单流分析 L1: 最优价 L2: 多档位 L3: 逐笔挂单 理论价差 实际价差 价差变化 深度曲线 冰山单 滑点估算 成交笔数 主动买卖量 撤单率 核心目标:从订单簿中提取alpha信号

最后说一句:订单簿分析不是玄学,是统计学。别试图预测每一笔成交,而是找概率上的优势。我刚开始做的时候,总想抓住每一个Tick的波动,结果亏得很惨。后来学会看大周期、看整体深度分布,才慢慢稳定下来。

嗯,这一章的内容就到这里。记住:订单簿是你的眼睛,订单流是你的耳朵。两者结合,才能听清市场在说什么。

专注资料整理