4、市场深度(Market Depth)与流动性:深度指标、流动性黑洞与套利执行

市场深度,说白了就是订单簿的「厚度」。

我刚开始做跨市场套利时,总觉得只要价差算对了就能赚钱。结果呢?有一次在港股和美股之间做价差,看着价差有5个基点,我直接一把梭进去。成交回报回来,我傻眼了——实际成交价差了15个基点。为什么?因为市场深度不够,我的订单把买一买二全吃光了,价格被推上去,利润全没了。

嗯,从那以后,我每次做策略前,第一件事就是看深度。

4.1 深度指标:限价订单簿斜率

深度指标有很多种,我个人最常用的是限价订单簿斜率。这个指标能直观告诉你:订单簿是「陡峭」还是「平缓」。

核心定义:

订单簿斜率 = 价格变化 / 累积挂单量变化

斜率越大,说明价格对订单量越敏感——你稍微买一点,价格就跳得厉害。

斜率越小,说明深度越好——大单进去,价格纹丝不动。

我习惯把斜率分成三个区间来判断:

斜率区间 深度特征 套利执行建议
斜率 > 0.5 深度极差,薄如纸 只能做小单,或者用冰山订单
0.1 < 斜率 < 0.5 中等深度 可以分批执行,注意滑点
斜率 < 0.1 深度良好 大单可以放心吃,但也要看流动性黑洞

计算代码其实很简单,我贴一段我常用的:

def orderbook_slope(book, levels=10):
    """
    计算限价订单簿斜率
    book: 包含 bids 和 asks 的字典
    """
    bids = book['bids'][:levels]  # 取前10档
    asks = book['asks'][:levels]
    
    # 买盘斜率:价格变化 / 累积量变化
    bid_prices = [b[0] for b in bids]
    bid_volumes = [b[1] for b in bids]
    cum_bid_vol = np.cumsum(bid_volumes)
    
    bid_slope = (bid_prices[-1] - bid_prices[0]) / cum_bid_vol[-1]
    
    # 卖盘同理
    ask_prices = [a[0] for a in asks]
    ask_volumes = [a[1] for a in asks]
    cum_ask_vol = np.cumsum(ask_volumes)
    
    ask_slope = (ask_prices[-1] - ask_prices[0]) / cum_ask_vol[-1]
    
    return bid_slope, ask_slope

我的经验:斜率不是固定值,它会随着时间变化。我一般在开盘后15分钟、午盘开盘、收盘前30分钟这三个时段重新计算一次。因为这三个时段流动性变化最大。

4.2 流动性黑洞:你以为是机会,其实是陷阱

流动性黑洞这个词听起来挺吓人,其实说白了就是:订单簿突然「塌了」

为什么会这样?我遇到过好几次。比如某个消息出来,所有做市商同时撤单。前一秒还有几百万的挂单,下一秒全没了。你的订单就像掉进了黑洞,成交不了,或者成交在极差的价格上。

流动性黑洞有几个典型特征:

  • 挂单量骤降:买一卖一档位突然变薄,甚至出现空档
  • 价差急剧扩大:正常1个基点的价差,瞬间变成10个基点
  • 成交速度异常:要么极快(被吃光),要么极慢(没人接盘)

避坑指南:我曾经在某个小币种上做跨所套利,看到价差有20个基点,觉得是捡钱。结果一进去,两个交易所的订单簿同时塌了——原来那个币种的主力做市商在维护系统。我的订单被卡在中间,最后亏损出局。所以,遇到价差异常大的时候,先查深度,别急着下单

检测流动性黑洞,我一般用这个指标:

def detect_liquidity_hole(book, threshold=0.3):
    """
    检测流动性黑洞
    threshold: 挂单量相对于前一分钟的下降比例阈值
    """
    current_bid_vol = sum([b[1] for b in book['bids'][:5]])
    current_ask_vol = sum([a[1] for a in book['asks'][:5]])
    
    # 假设有历史数据
    prev_bid_vol = get_prev_minute_volume('bid')
    prev_ask_vol = get_prev_minute_volume('ask')
    
    bid_drop = (prev_bid_vol - current_bid_vol) / prev_bid_vol
    ask_drop = (prev_ask_vol - current_ask_vol) / prev_ask_vol
    
    if bid_drop > threshold or ask_drop > threshold:
        return True, f"检测到流动性黑洞,买盘下降{bid_drop:.1%},卖盘下降{ask_drop:.1%}"
    return False, "正常"

4.3 深度对套利执行的影响

深度直接影响套利的可执行性实际收益。你想想看,理论价差是5个基点,但如果你要吃掉整个订单簿才能完成套利,实际滑点可能吃掉3个基点,剩下2个基点还不够手续费。

我总结了一个深度影响矩阵:

套利类型 深度要求 典型场景 我的做法
统计套利(高频) 极高 股指期货 vs ETF 只做斜率<0.1的品种,超过就放弃
跨所套利(中频) 中等 BTC/USDT 不同交易所 分5-10批执行,每批检查深度
期现套利(低频) 较低 期货 vs 现货 可以接受较大滑点,但必须设置止损

这里有个关键点:深度不是静态的。你下单的那一刻,深度就在变化。我习惯用「动态深度」这个概念——也就是把订单簿的实时变化考虑进去。

举个例子:

  • 你看到买一有100个BTC,价格10000
  • 你下单买入50个BTC
  • 但就在你下单的瞬间,有人也下了50个BTC的买单
  • 结果你的50个BTC只成交了30个在10000,剩下20个成交在10001

这就是动态深度的影响。我解决这个问题的方法是:用「深度时间序列」来预测未来几毫秒的深度变化。说白了,就是看过去几秒深度是怎么变的,然后推测下一秒会怎样。

核心公式(我自己的经验公式):

实际可执行量 = 当前深度 × (1 - 深度衰减率 × 订单规模系数)

其中深度衰减率 = 过去1秒内深度下降的平均速度

订单规模系数 = 你的订单量 / 当前总深度

这个公式不完美,但我在实盘中用了两年,效果还不错。至少能避免「看着深度够,一进去就塌」的尴尬。

4.4 知识体系总览

我把这一章的核心逻辑画了个图,方便你理解:

市场深度与流动性:知识体系 深度指标 流动性黑洞 执行影响 限价订单簿斜率 价格变化/累积量变化 陡峭→深度差,平缓→深度好 分三个区间判断 特征与检测 挂单量骤降 价差急剧扩大 成交速度异常 动态深度模型 实际可执行量 深度衰减率 订单规模系数 套利执行决策 根据深度指标选择执行策略 → 避开流动性黑洞 → 动态调整订单规模 核心原则:深度决定可执行性,流动性黑洞决定风险,动态模型决定收益

这张图把三个核心概念串起来了。你从深度指标出发,判断当前市场状态;然后检测是否有流动性黑洞风险;最后根据动态深度模型决定怎么执行。三个环节缺一不可。

最后说一句:深度这东西,你盯盘盯久了会有感觉。我做了三年跨市场套利,现在看一眼订单簿的「形状」,基本就能判断能不能做。但新手别学我,还是老老实实算斜率、测黑洞、用模型。等你有经验了,直觉自然会准起来。


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