4、市场微观结构:订单簿与深度、买卖价差与滑点、流动性分析
做TWAP执行,说白了就是在跟市场微观结构打交道。你想想看,一个大单砸进去,市场会怎么反应?这背后就是订单簿、价差、滑点这些东西在起作用。我刚开始做量化交易那会儿,总觉得这些概念太理论,直到有一次实盘被滑点吃掉了一大截利润……嗯,从那以后我再也不敢轻视微观结构了。
4.1 订单簿与深度:市场的“实时心电图”
订单簿(Order Book)就是交易所里所有挂单的集合。它分两边:买盘(Bid)和卖盘(Ask)。每一档价格上,都挂着对应的委托量。
我个人习惯把订单簿看作市场的“实时心电图”。你盯着它,就能感受到多空双方的力量对比。
- 买一(Best Bid):当前最高的买入价格
- 卖一(Best Ask):当前最低的卖出价格
- 深度(Depth):某个价格区间内的累计委托量
- 市场深度:通常指买卖盘各档位的总挂单量
举个例子,假设BTC/USDT的订单簿长这样:
| 档位 | 买价 | 买量 | 卖价 | 卖量 |
|---|---|---|---|---|
| 1 | 50000 | 10 BTC | 50005 | 8 BTC |
| 2 | 49995 | 15 BTC | 50010 | 12 BTC |
| 3 | 49990 | 20 BTC | 50015 | 18 BTC |
这时候,如果你想买入20 BTC,直接吃卖一只能吃到8 BTC,剩下的12 BTC就得去卖二档吃,价格就变成了50010。这就是深度不够带来的问题。
4.2 买卖价差与滑点:你的隐形交易成本
买卖价差(Bid-Ask Spread)就是卖一和买一之间的差价。它代表了市场的流动性成本。
公式很简单:Spread = Ask₁ - Bid₁
但真正要命的不是价差本身,而是滑点(Slippage)。滑点是你实际成交价和预期价格之间的偏差。
滑点分两种:
- 瞬时滑点:下单瞬间,因为订单簿深度不够导致的立即价格偏移
- 持续滑点:大单执行过程中,市场因你的订单而持续移动
我举个例子你就明白了。假设你想买1000股某股票,当前卖一是10.00元,挂了500股。你下单后,先吃掉这500股,然后剩下的500股只能去卖二档10.01元成交。你的平均成交价是(500×10.00 + 500×10.01)/1000 = 10.005元。这就是滑点。
4.3 流动性分析:选对战场才能打赢仗
流动性,说白了就是市场能容纳多大订单而不引起显著价格变动。流动性越好,你的TWAP执行成本越低。
衡量流动性的几个关键指标:
- 市场深度(Market Depth):买卖盘各档位的累计挂单量
- 价差宽度(Spread Width):价差越小,流动性越好
- 订单簿斜率(Order Book Slope):深度随价格变化的速率
- 成交量(Volume):单位时间内的成交活跃度
我个人习惯用“流动性评分”来快速判断:
def liquidity_score(order_book, n_levels=5):
"""
计算流动性评分
分数越高,流动性越好
"""
bid_depth = sum([level['size'] for level in order_book['bids'][:n_levels]])
ask_depth = sum([level['size'] for level in order_book['asks'][:n_levels]])
spread = order_book['asks'][0]['price'] - order_book['bids'][0]['price']
# 深度越大越好,价差越小越好
score = (bid_depth + ask_depth) / (spread + 1e-8)
return score
这个评分虽然粗糙,但在实盘里够用了。我一般会设定一个阈值,低于这个值的品种,TWAP的时间切片就要拉长,或者干脆不做。
- 流动性会随时间变化:开盘、收盘、数据发布前后流动性最差
- 不同交易所的流动性差异巨大,同一个品种在不同平台可能差10倍
- 大单执行前,先做一次“流动性探测”——下一个小单看看市场反应
4.4 知识体系总览
下面这张图,是我自己整理的市场微观结构知识框架。你看一眼就能明白各个概念之间的关系。
你看,这三个概念是环环相扣的。订单簿告诉你当前的市场状态,价差和滑点告诉你交易成本,流动性分析则帮你判断这个品种适不适合跑TWAP。
嗯,这一章的内容就到这里。记住一句话:理解微观结构,就是理解市场的呼吸节奏。你的TWAP能不能跑好,很大程度上取决于你对订单簿、价差和流动性的把握。
公众号:蓝海资料掘金营,微信deep3321