深度指标计算:买卖价差、深度斜率、深度比率、加权深度、流动性黑洞识别

各位同学,今天我们来聊聊市场深度。说白了,深度就是看市场能「吃下」多大的单子而不引起价格剧烈波动。我刚开始做量化那会儿,总觉得看个买卖盘口就够用了,结果有一次策略回测跑得漂亮,实盘一上去就被深度不足的市场给「教育」了。嗯,从那以后,深度指标就成了我策略里的标配。

1. 买卖价差(Bid-Ask Spread)

这是最基础的深度指标。价差越小,流动性越好。公式很简单:

Spread = Ask_Price - Bid_Price
Relative_Spread = (Ask_Price - Bid_Price) / Mid_Price

我个人习惯用相对价差,因为不同价格的股票绝对值没法比。比如茅台价差5毛和垃圾股价差5毛,意义完全不同。

避坑指南: 我曾经在计算高频数据的价差时,忽略了盘口更新延迟。有些交易所的Level2数据其实有100ms左右的延迟,算出来的价差会偏大。建议做数据清洗时,先对齐时间戳。

2. 深度斜率(Depth Slope)

深度斜率衡量的是价格每变动一个单位,订单量变化多少。说白了,就是看订单簿的「陡峭程度」。

计算方式:

# 假设我们有买卖各5档数据
def depth_slope(bids, asks):
    # bids: [(price, volume), ...]
    # asks: [(price, volume), ...]
    bid_prices = [p for p, v in bids]
    bid_volumes = [v for p, v in bids]
    ask_prices = [p for p, v in asks]
    ask_volumes = [v for p, v in asks]
    
    # 用线性回归拟合价格-成交量关系
    from numpy import polyfit
    bid_slope = polyfit(bid_prices, bid_volumes, 1)[0]
    ask_slope = polyfit(ask_prices, ask_volumes, 1)[0]
    
    return bid_slope, ask_slope

你想想看,如果斜率很大,说明价格稍微一变动,成交量就急剧变化——这种市场其实很脆弱。我在做股指期货的流动性分析时,发现开盘后15分钟内的深度斜率往往是最陡的,这时候做市商还没完全进场。

3. 深度比率(Depth Ratio)

深度比率是买方深度和卖方深度的比值。公式:

Depth_Ratio = Total_Bid_Volume / Total_Ask_Volume

这个指标能告诉你当前市场的买卖力量对比。如果深度比率大于1,说明买方深度更大,市场偏多头;反之则偏空头。

实战经验: 我曾在监控某只小盘股时发现,深度比率突然从1.2跳升到2.5,但价格没怎么动。直觉告诉我有人在偷偷吸筹。果不其然,半小时后一个大单拉涨了5%。深度比率的变化往往比价格更早反映大资金的意图。

4. 加权深度(Weighted Depth)

加权深度考虑了价格距离的影响。离当前价格越近的订单,权重越大。计算方式:

def weighted_depth(bids, asks, decay_factor=0.9):
    mid_price = (bids[0][0] + asks[0][0]) / 2
    
    bid_weighted = 0
    for price, volume in bids:
        weight = decay_factor ** abs(price - mid_price)
        bid_weighted += volume * weight
    
    ask_weighted = 0
    for price, volume in asks:
        weight = decay_factor ** abs(price - mid_price)
        ask_weighted += volume * weight
    
    return bid_weighted, ask_weighted

为什么要加权?因为离当前价格远的订单,实际成交概率低。我记得有一次分析某只ETF的流动性,不加权时看起来深度很大,但加权后发现大部分流动性都在远离当前价的位置,实际能吃的单子很少。这就是所谓的「虚深度」。

5. 流动性黑洞识别

流动性黑洞,说白了就是市场突然「干涸」了。订单簿上的挂单瞬间消失,价差急剧扩大。识别方法:

  • 价差突变检测: 价差在短时间内扩大超过3倍标准差
  • 深度骤降检测: 总深度在1秒内下降超过50%
  • 订单簿斜率反转: 深度斜率从正变负或从负变正
def detect_liquidity_hole(orderbook_series):
    # orderbook_series: 时间序列的订单簿快照
    alerts = []
    for i in range(1, len(orderbook_series)):
        spread_change = (orderbook_series[i].spread - 
                        orderbook_series[i-1].spread) / orderbook_series[i-1].spread
        depth_change = (orderbook_series[i].total_depth - 
                       orderbook_series[i-1].total_depth) / orderbook_series[i-1].total_depth
        
        if spread_change > 3.0 and depth_change < -0.5:
            alerts.append({
                'time': orderbook_series[i].timestamp,
                'type': '流动性黑洞',
                'severity': '高'
            })
    return alerts
注意: 流动性黑洞往往伴随着市场恐慌。我曾经在2015年股灾期间监控到某只蓝筹股在3秒内深度下降了90%,价差从0.01元扩大到0.15元。这时候千万不要去接飞刀,等流动性恢复后再操作。

知识体系总览

下面这张图展示了深度指标之间的逻辑关系,我画了很久才理清楚:

市场深度指标知识体系 市场深度 买卖价差 深度斜率 深度比率 加权深度 绝对价差 买方斜率 买方深度比 指数加权 相对价差 卖方斜率 卖方深度比 线性加权 流动性黑洞识别 虚线表示:流动性黑洞由多个指标综合识别

这些指标单独看都有局限性,但组合起来就能构建一个完整的流动性监控体系。我个人习惯把深度比率和加权深度结合起来用,前者看方向,后者看真实可用的流动性。

核心要点:
  • 买卖价差:流动性最直接的度量,越小越好
  • 深度斜率:订单簿的陡峭程度,斜率突变是预警信号
  • 深度比率:买卖力量对比,领先于价格变化
  • 加权深度:剔除虚深度,反映真实可成交的流动性
  • 流动性黑洞:多个指标同时恶化时的极端情况

好了,这一章的内容就到这里。这些指标在实际项目中怎么用、怎么调参,需要你在回测中慢慢摸索。记住,没有万能的指标,只有适合你策略的组合。

专注资料整理