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