2. 公开市场流动性基础:订单簿结构、买卖价差、市场深度、成交量分析
各位同学,今天我们来聊聊公开市场的流动性基础。说实话,这部分内容看着基础,但我在做高频策略那几年,发现很多团队亏钱就亏在对这几个概念的理解不够深。你想想看,订单簿就是市场的骨架,价差和深度是血肉,成交量是心跳。搞不懂这些,量化交易就是盲人摸象。
2.1 订单簿结构:市场的骨架
订单簿,说白了就是所有挂单的集合。它分两边:买盘(Bid)和卖盘(Ask)。每一笔挂单都包含价格和数量。我个人习惯把订单簿想象成一个排队系统——想买的人在左边排队出价,想卖的人在右边排队要价。
这里有个关键点:订单簿不是静态的。我在项目中遇到过一种情况,看着深度很好,但一撤单就全没了。嗯,这就要说到订单类型了。
核心概念:订单簿的实时性决定了市场质量的真实性。别只看快照,要看变化率。
订单簿通常包含以下层级:
- 最优买卖价(Top of Book):最高买价和最低卖价,这是最直接的交易窗口。
- 深度层级(Depth Levels):从最优价往下/往上,每一档的价格和累计量。
- 订单簿斜率(Order Book Slope):价格变化时,挂单量的变化速度。斜率越陡,流动性越脆弱。
我曾经在分析某只小盘股时,发现它的订单簿前五档看着很厚,但第六档直接空了。这种结构就是典型的“纸老虎”——大单一来,价格直接跳空。
2.2 买卖价差:流动性的温度计
买卖价差(Bid-Ask Spread),就是最优卖价减去最优买价。这个数字越小,说明市场越活跃,流动性越好。为什么?因为做市商愿意用更小的利润来换取成交量。
价差不是固定的。我记得在2015年股灾期间,很多股票的价差从0.01元直接飙到0.10元以上。那时候做高频的兄弟基本都歇菜了——你想想看,一个来回就吃掉10个tick,谁受得了?
| 市场状态 | 典型价差(以A股为例) | 流动性评价 |
|---|---|---|
| 正常交易 | 0.01 - 0.03元 | 良好 |
| 波动加剧 | 0.05 - 0.10元 | 一般 |
| 极端行情 | 0.20元以上 | 差 |
实战技巧:我个人习惯用“相对价差”(价差/中间价)来衡量。比如一只10元的股票价差0.01元,和一只100元的股票价差0.05元,相对价差分别是0.1%和0.05%。后者其实流动性更好。
2.3 市场深度:你能吃下多少单?
市场深度,指的是在某个价格水平上,你能成交多少量。深度越大,大单对价格的冲击越小。这里有个常见的误区:很多人只看最优价位的深度,但实际交易中,大单往往要吃掉好几档。
我建议用“深度曲线”来评估。横轴是价格偏移量,纵轴是累计成交量。曲线越平缓,说明市场能吸收大单的能力越强。
举个例子:
# 模拟深度计算
def calculate_depth(order_book, price_offset):
cumulative_volume = 0
for level in order_book:
if abs(level['price'] - mid_price) <= price_offset:
cumulative_volume += level['volume']
return cumulative_volume
# 假设中间价10元,偏移0.05元
depth_at_5ticks = calculate_depth(book, 0.05)
print(f"在5个tick范围内,可成交量为: {depth_at_5ticks}股")
我曾经在分析某只ETF时,发现它的深度曲线在某个价位突然变陡。后来一查,原来是有个大户在那里挂了假单——挂单后马上撤单。这种“幽灵深度”在暗池里更常见,但在公开市场也不少见。
避坑指南:我曾经因为只看前五档深度,结果一个大单进来直接打穿了我的止损线。从那以后,我至少看十档深度,并且会计算“深度衰减率”——每档深度的递减速度。如果衰减太快,说明市场承接力不足。
2.4 成交量分析:市场的脉搏
成交量,是市场最诚实的指标。价格可以骗人,但成交量不会。我个人习惯把成交量拆成三部分看:
- 主动买盘 vs 主动卖盘:谁在主动吃单?这能反映多空力量的真实对比。
- 大单 vs 小单:大单占比高,说明机构在行动;小单为主,则是散户行情。
- 成交量分布(Volume Profile):在哪些价格区间成交量最大?这些就是“价值区域”。
你想想看,如果一只股票价格涨了,但成交量萎缩,这叫什么?这叫“无量空涨”,大概率是陷阱。反过来,放量下跌虽然吓人,但至少说明有人在接盘——市场还有流动性。
这里我分享一个我常用的指标:
# 成交量加权平均价(VWAP)
def calculate_vwap(trades):
total_volume = 0
total_value = 0
for trade in trades:
total_volume += trade['volume']
total_value += trade['price'] * trade['volume']
return total_value / total_volume
# 判断成交量异常
def is_volume_surge(current_volume, avg_volume, threshold=3.0):
return current_volume > avg_volume * threshold
嗯,这里要注意:成交量分析不能只看绝对值。我建议用“相对成交量”——当前成交量除以过去N日的平均成交量。如果超过3倍,基本可以确认有异常事件发生。
2.5 知识体系总览
为了让你更直观地理解这几个概念的关系,我画了一张图:
这张图把四个核心概念串起来了。你从订单簿入手,看价差判断活跃度,用深度评估承接力,最后用成交量验证一切。我在做策略回测时,一定会把这四个维度都跑一遍,缺一个都不放心。
好了,这一章的内容就到这里。记住,公开市场的流动性分析,本质上是在回答三个问题:能不能快速成交?成交成本高不高?大单会不会砸穿市场?把这三点搞明白,你就算入门了。