2. 订单簿微观结构:限价单与市价单、买卖价差、订单簿深度与弹性

做市商这行,说白了就是跟订单簿打交道。你每天盯着的那个不断跳动的数字列表,就是你的战场。我刚开始做市的时候,总觉得订单簿就是一堆买单卖单堆在那,后来被市场狠狠教育了几次,才真正理解它的微观结构有多重要。

今天咱们就聊聊订单簿的四个核心要素:限价单、市价单、买卖价差,还有深度和弹性。这些东西搞明白了,你才知道自己的库存风险到底在哪。

2.1 限价单与市价单:两种基本武器

做市商手里就两种订单类型,限价单和市价单。听起来简单,但用起来门道很多。

限价单(Limit Order),就是你指定一个价格,挂在那等人来吃。比如BTC当前价格30000,你挂个29950的买单,那就等着价格跌下来成交。限价单提供流动性,但存在不成交的风险——价格没到你的价位,你就只能干瞪眼。

市价单(Market Order),就是不管三七二十一,按当前最优价格立刻成交。你想买,就直接吃掉卖一价。市价单消耗流动性,但保证成交——代价是你要承受滑点。

我个人习惯把限价单比作钓鱼,市价单比作直接去菜市场买鱼。钓鱼可能等半天没收获,但价格好;直接买贵点,但马上能吃到。

核心关系:限价单提供流动性,市价单消耗流动性。做市商主要挂限价单赚价差,但必要时也会用市价单调整库存。

我在项目中遇到过一件事:有个新手做市商,为了抢成交量,大量使用市价单吃单。结果一天下来,手续费加上滑点,把赚的价差全赔进去了。嗯,这里要注意——市价单是工具,不是玩具。

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

买卖价差(Bid-Ask Spread),就是买一价和卖一价之间的差额。说白了,这就是做市商的利润来源。你低价买,高价卖,中间的差价就是你的收入。

但价差不是固定的。它受几个因素影响:

  • 流动性:交易量大的品种,价差通常小。比如BTC/USDT,主流交易所价差可能只有0.01%。
  • 波动性:市场波动大的时候,做市商不敢挂太近的价,价差会扩大。
  • 竞争程度:做市商越多,价差越薄。这是个内卷的行业。

举个例子,假设某股票当前买一价10.00,卖一价10.02,价差就是0.02元。如果你做市,每成交一个来回,理论上赚0.02元。但别忘了手续费和库存风险,实际利润要打折扣。

实战技巧:我一般会监控价差的动态变化。如果价差突然扩大,说明市场可能出问题了——要么流动性枯竭,要么有大波动要来。这时候我会缩小挂单量,甚至暂停做市。

2.3 订单簿深度:你的安全垫

订单簿深度,指的是不同价格水平上的挂单量。深度好的市场,你吃个几百万的单子,价格几乎不动。深度差的市场,几十万就能把价格打穿。

深度通常用深度图来展示。横轴是价格,纵轴是累计挂单量。你想想看,如果买一价下面密密麻麻全是买单,那价格就很难跌下去。反过来,卖一价上面堆满卖单,上涨也费劲。

我做市的时候,最怕的就是深度不足。有一次做一个小币种的做市,订单簿上买一只有几百个币,结果一个大户砸了5000个币的市价单,直接把价格砸穿了3%。我的库存瞬间亏损。从那以后,我给自己定了个规矩:深度不足的品种,坚决不做市。

避坑指南:我曾经因为只看买一卖一,忽略了深度,结果被大单打穿。现在我会同时看订单簿前10档的累计深度。如果前5档的总量小于我库存的10%,我会立刻缩小挂单规模。

2.4 订单簿弹性:市场的恢复能力

弹性(Resilience),指的是订单簿被大单冲击后,恢复到正常状态的速度。弹性好的市场,大单吃完后,新的限价单会迅速补上来,价差很快恢复正常。弹性差的市场,大单吃完后,订单簿就像被掏空了一样,半天恢复不过来。

弹性可以用一个简单的指标衡量:恢复时间。从大单成交到订单簿恢复到冲击前80%的深度,这个时间越短,弹性越好。

我记得有一次做ETH的做市,一个巨量市价单把卖一到卖五全吃了。但不到3秒钟,新的卖单就涌了进来,价差只扩大了0.02%就恢复了。这就是弹性好的典型表现。

反过来,如果一个大单吃完后,订单簿空了十几秒,价差扩大了好几倍,那你就要小心了——市场可能处于脆弱状态,随时可能继续波动。

2.5 知识体系结构图

下面这张图,把订单簿微观结构的核心逻辑串起来了。你可以看到,限价单和市价单是基础,它们决定了价差和深度,而弹性则是整个系统的动态特性。

订单簿微观结构知识体系 订单簿微观结构 限价单 市价单 买卖价差 深度与弹性 提供流动性 不成交风险 消耗流动性 滑点风险 利润来源 受波动影响 抗冲击能力 恢复速度 理解微观结构 → 控制库存风险 → 稳定盈利

2.6 实战中的订单簿分析

光讲理论没用,咱们得能动手。下面是我常用的一个订单簿分析代码片段,用来计算价差和深度指标。

import pandas as pd
import numpy as np

def analyze_orderbook(bids, asks):
    """
    分析订单簿的核心指标
    bids: [[price, volume], ...] 买单列表
    asks: [[price, volume], ...] 卖单列表
    """
    # 买卖价差
    best_bid = bids[0][0]
    best_ask = asks[0][0]
    spread = best_ask - best_bid
    spread_bps = spread / best_bid * 10000  # 以基点表示
    
    # 前5档深度
    bid_depth_5 = sum([v for p, v in bids[:5]])
    ask_depth_5 = sum([v for p, v in asks[:5]])
    
    # 深度不平衡指标
    depth_imbalance = (bid_depth_5 - ask_depth_5) / (bid_depth_5 + ask_depth_5)
    
    # 价格冲击成本(吃100个单位的成本)
    def market_impact(volume, side='buy'):
        remaining = volume
        cost = 0
        if side == 'buy':
            for price, vol in asks:
                if remaining <= 0:
                    break
                trade_vol = min(remaining, vol)
                cost += trade_vol * price
                remaining -= trade_vol
        else:
            for price, vol in bids:
                if remaining <= 0:
                    break
                trade_vol = min(remaining, vol)
                cost += trade_vol * price
                remaining -= trade_vol
        avg_price = cost / volume
        return avg_price
    
    impact_buy = market_impact(100, 'buy')
    impact_sell = market_impact(100, 'sell')
    
    return {
        'spread': spread,
        'spread_bps': spread_bps,
        'bid_depth_5': bid_depth_5,
        'ask_depth_5': ask_depth_5,
        'depth_imbalance': depth_imbalance,
        'impact_buy': impact_buy,
        'impact_sell': impact_sell
    }

# 示例数据
bids = [[100.0, 50], [99.9, 100], [99.8, 150], [99.7, 200], [99.6, 250]]
asks = [[100.1, 50], [100.2, 100], [100.3, 150], [100.4, 200], [100.5, 250]]

result = analyze_orderbook(bids, asks)
print(f"价差: {result['spread_bps']:.2f} bps")
print(f"买五档深度: {result['bid_depth_5']}, 卖五档深度: {result['ask_depth_5']}")
print(f"深度不平衡: {result['depth_imbalance']:.2%}")

这段代码我用了好几年,每次接入新交易所都会跑一遍,看看订单簿的健康状况。你想想看,如果深度不平衡指标超过0.3,说明买单明显多于卖单,价格可能短期偏强。这时候我会调整做市策略,多挂一些卖单。

个人习惯:我每天开盘前会跑一次这个分析,记录当天的价差和深度基线。如果盘中指标偏离基线超过2倍标准差,我会手动检查市场,看是不是有什么异常。

好了,订单簿微观结构就聊到这。这些东西看着基础,但真正吃透了,你就能从订单簿的跳动中读出市场的情绪和风险。做市商不是靠运气赚钱,是靠对微观结构的深刻理解。

专注资料整理