3. 订单簿深度模型:深度图的构建、累计深度与市场深度、深度对价格波动的影响

做市商这行干久了,你会发现一个有意思的现象:很多人盯着盘口那几档价格看半天,却忽略了订单簿真正的核心——深度。说白了,深度就是市场的厚度,是你能在多大程度上「吃」掉对手盘而不引起价格剧烈波动。

我个人习惯把订单簿想象成一个蓄水池。价格是水位线,深度就是池子的容量。池子浅,扔块石头就水花四溅;池子深,扔个炸弹也就冒个泡。今天我们就来聊聊这个池子怎么建、怎么量、怎么用。

3.1 深度图的构建:从原始数据到可视化

先说说深度图怎么来的。很多人以为交易所直接给你一张图,其实不是。原始数据是逐笔的挂单,你得自己把它们「堆」起来。

我记得第一次做这个的时候,直接拿所有订单累加,结果图出来乱七八糟。后来才明白,得按价格聚合。

核心逻辑其实就三步:

  1. 按价格分组:把同一价格的所有买单或卖单合并
  2. 按价格排序:买单从高到低,卖单从低到高
  3. 计算累计量:从最优价开始,一层层往上累加

嗯,这里要注意,累计量不是简单的加总。你想想看,如果你要买100个BTC,你不可能只吃最优价那一档,你得把后面几档也吃掉。所以累计深度表示的是「从当前价格到某个价格区间内,所有可成交的总量」。

下面这个图是我自己项目里常用的深度图结构,你可以直观感受一下:

订单簿深度图结构 价格 累计深度 买盘深度 卖盘深度 最优卖价 最优买价 红色:买盘(Bid) | 绿色:卖盘(Ask) | 黄色虚线:最优报价

构建深度图的代码其实不复杂,我贴一段核心逻辑:

def build_depth_curve(order_book, side='bid'):
    """
    构建单边深度曲线
    :param order_book: 原始订单簿数据
    :param side: 'bid' 或 'ask'
    :return: (prices, cumulative_volumes)
    """
    # 按价格聚合
    price_levels = {}
    for order in order_book[side]:
        price = order['price']
        volume = order['volume']
        price_levels[price] = price_levels.get(price, 0) + volume
    
    # 排序:买单降序,卖单升序
    sorted_prices = sorted(price_levels.keys(), reverse=(side == 'bid'))
    
    # 计算累计深度
    cum_volumes = []
    cum = 0
    for p in sorted_prices:
        cum += price_levels[p]
        cum_volumes.append(cum)
    
    return sorted_prices, cum_volumes
💡 个人经验: 实际生产环境中,订单簿更新频率极高(毫秒级)。我建议不要每次都全量重建深度图,而是用增量更新的方式——只处理新增、取消、成交的订单,效率能提升10倍以上。

3.2 累计深度与市场深度:两个容易混淆的概念

很多人把「累计深度」和「市场深度」混为一谈,其实它们有本质区别。

累计深度是一个函数,描述的是「在某个价格水平上,总共能成交多少量」。它是一个曲线,横轴是价格,纵轴是累计量。

市场深度是一个数值,通常指「在当前最优买卖价附近,市场能承受的订单量」。它衡量的是市场的流动性水平。

我举个例子你就明白了。假设BTC当前价格30000,买一档有10个BTC,买二档有20个BTC。那么:

  • 在29990这个价格上,累计深度 = 10(只吃买一档)
  • 在29980这个价格上,累计深度 = 10 + 20 = 30(吃买一+买二档)
  • 而市场深度,通常取买一到买五的总和,或者某个固定价格区间(比如±0.1%)内的总量

我曾经在做一个高频策略时,只看了市场深度没看累计深度曲线,结果一个大单进来,价格直接滑了3个档位,亏了不少。后来我学乖了,每次下单前先看累计深度曲线,确认「吃」到目标价格需要多少量。

指标 定义 用途
累计深度 从最优价到指定价格区间内的总挂单量 评估大单对价格的冲击成本
市场深度 当前最优报价附近的流动性总量 衡量市场整体流动性水平
深度斜率 累计深度曲线的导数(变化率) 判断价格支撑/阻力强度

核心观点: 市场深度告诉你「现在有多少水」,累计深度告诉你「要喝到某个水位需要多少水」。做市商更关心后者,因为我们的每一笔订单都在改变水位线。

3.3 深度对价格波动的影响:为什么薄市场容易暴涨暴跌

这个问题其实很直观。你想想看,一个深度只有10个BTC的市场,和一个深度有1000个BTC的市场,同样一个100BTC的买单进来,效果能一样吗?

薄市场里,100BTC的买单可能直接吃掉5档甚至10档价格,价格瞬间拉升2%。而厚市场里,可能连最优价都没吃完,价格纹丝不动。

我总结了几条规律:

  1. 深度越薄,波动越大:这是最直接的结论。薄市场里,小资金就能撬动大行情。
  2. 深度分布不均匀时,容易发生「踩踏」:如果某个价格区间深度特别薄,一旦价格突破这个区间,会加速向下一档移动。
  3. 深度恢复速度也很关键:有些市场虽然深度不错,但被吃掉后恢复很慢。这种市场其实比薄市场更危险,因为你会误以为流动性很好。

我记得有一次做ETH的做市,发现某个交易所的深度图看起来挺厚,但一吃就「塌」了。后来查日志才发现,很多订单是「虚挂」的——挂上去就撤,根本不成交。这种虚假深度会误导策略,一定要过滤掉。

⚠️ 避坑指南: 我曾经踩过一个坑——只看深度绝对值,没看深度变化率。有一次深度突然从1000BTC降到200BTC,我还在按原来的参数下单,结果连续吃了好几个滑点。后来我加了一个监控:如果深度在1秒内下降超过30%,自动降低下单量。

最后说一个实战技巧。我习惯用「深度斜率」来判断价格支撑位。具体做法是:

  • 计算累计深度曲线的一阶导数(斜率)
  • 斜率突然变陡的地方,就是强支撑/阻力位
  • 斜率突然变平的地方,就是容易突破的位置

说白了,深度就是市场的「肌肉」。肌肉越发达,抗打击能力越强。做市商要做的,就是摸清这块肌肉的每一寸纹理,知道哪里硬、哪里软、哪里一碰就倒。

嗯,关于深度模型的核心内容就这些。记住一句话:深度不是静态的,它是市场参与者行为的实时映射。你看到的每一笔挂单,背后都是一个人的判断和策略。理解深度,就是理解市场本身。


专注资料整理