流动性定义与度量:四个维度与常见指标
大家好,我是你们的讲师。今天咱们来聊聊流动性——这个在量化交易里听着玄乎、但实际特别实在的概念。
说实话,我刚入行那会儿,觉得流动性不就是“能不能买卖”嘛。后来在实盘里吃过亏,才明白这东西远没那么简单。你想想看,一个标的流动性好不好,直接决定了你的策略能不能跑起来、跑得稳不稳。
一、流动性的四个维度
业内对流动性的定义,通常从四个维度来拆解。我个人习惯把这四个维度记成“宽深即弹”,好记又好用。
核心框架:流动性的四个维度
- 宽度(Width):交易成本,说白了就是买卖价差
- 深度(Depth):市场能承载的订单量
- 即时性(Immediacy):成交速度有多快
- 弹性(Resilience):价格被冲击后恢复的速度
下面我用一张图把这四个维度的关系串起来,方便你理解。
二、宽度:交易成本的第一道门槛
宽度,最直观的体现就是买卖价差(Bid-Ask Spread)。你打开任何交易软件,看到的买一价和卖一价之间的差值,就是宽度。
我在做高频策略时,最怕遇到价差突然拉大的情况。有一次,某个小盘股在财报发布前,价差从0.01元直接跳到0.05元。我挂的单子瞬间被吃掉,多付了4倍的成本。嗯,从那以后,我所有策略都会加一个价差监控模块。
实战小贴士:
价差通常用相对值来衡量:相对价差 = (卖一价 - 买一价) / 中间价。这样不同价格的标的之间才有可比性。
三、深度:你能吃下多少货
深度看的是订单簿上挂了多少单。一个深度好的市场,你下个大单,价格不会剧烈波动。
举个例子,某只股票买一挂了1000手,卖一挂了800手。你想买500手,那没问题,直接吃掉卖一就行。但如果你想买2000手,那就要把卖一到卖五全吃掉,价格自然就上去了。
深度指标里,我常用的是订单簿斜率——把不同档位的挂单量画成一条曲线,斜率越陡,说明深度越差。
# 计算订单簿斜率(简化版)
def order_book_slope(bids, asks):
"""
bids: [(价格, 数量), ...] 买盘
asks: [(价格, 数量), ...] 卖盘
"""
# 取前5档
top_bids = bids[:5]
top_asks = asks[:5]
# 计算累计深度
bid_depth = sum([q for p, q in top_bids])
ask_depth = sum([q for p, q in top_asks])
# 价差范围
spread = top_asks[0][0] - top_bids[0][0]
# 斜率 = 深度 / 价差
slope = (bid_depth + ask_depth) / spread if spread > 0 else 0
return slope
四、即时性:快就是一切
即时性,说白了就是你下单后多久能成交。在T+1市场里,这个指标没那么敏感。但在期货、外汇这些T+0市场,即时性直接决定了你的滑点成本。
我记得有一次做股指期货的套利策略,两边合约的价差只有0.2个点。理论上能赚,但实际执行时,因为一边成交慢了0.5秒,价差已经变了。那次亏得不多,但让我记住了:没有即时性的流动性,是假的流动性。
注意:
即时性不能只看成交速度,还要看成交率。有些市场挂单后半天不成交,那即时性就是零。我建议用“挂单到成交的平均时间”来衡量,而不是单纯看撮合速度。
五、弹性:市场受伤后能自愈吗
弹性,是四个维度里最容易被忽视的。它衡量的是:大单冲击后,价格能不能回到原来的位置。
弹性好的市场,比如沪深300成分股,一个大单砸下去,几分钟内价格就恢复了。弹性差的市场,比如某些小盘股,砸下去就起不来了——那说明流动性已经被破坏了。
我一般用价格恢复系数来量化弹性:
# 计算价格恢复系数
def resilience_coefficient(price_series, shock_time, window=60):
"""
price_series: 价格序列
shock_time: 大单冲击发生的时间点
window: 观察窗口(秒)
"""
pre_price = price_series[shock_time - 1]
post_prices = price_series[shock_time: shock_time + window]
# 最大偏离
max_deviation = max(abs(p - pre_price) for p in post_prices)
# 最终恢复程度
final_deviation = abs(post_prices[-1] - pre_price)
# 恢复系数 = 1 - (最终偏离 / 最大偏离)
coefficient = 1 - (final_deviation / max_deviation) if max_deviation > 0 else 1
return coefficient
六、常见流动性指标
聊完四个维度,咱们看看实际中怎么度量。下面这三个指标,是我在项目中用得最多的。
| 指标 | 计算公式 | 衡量维度 | 我的使用场景 |
|---|---|---|---|
| 价差(Spread) | 卖一价 - 买一价 | 宽度 | 日内策略、高频交易 |
| Amihud 非流动性指标 | |日收益率| / 日成交额 | 宽度+深度 | 选股、因子分析 |
| 换手率(Turnover) | 成交量 / 流通股本 | 深度+即时性 | 中低频策略、风控 |
七、Amihud 指标:一个指标看透流动性
Amihud 指标是我个人非常喜欢的一个指标。它用一个公式,同时捕捉了宽度和深度两个维度。
公式很简单:Amihud = |日收益率| / 日成交额
什么意思呢?你想想看,如果一只股票涨了1%,但只用了100万的成交额,说明流动性很差——一点点钱就能把价格拉起来。反过来,如果涨了1%用了10个亿,那流动性就很好。
我在做多因子模型时,Amihud 指标是必选的流动性因子。它的好处是数据容易获取,而且在不同市场之间可比。
避坑指南:
我曾经在回测时直接用 Amihud 的原始值,结果发现它和市值高度相关——大盘股天然 Amihud 小。后来我做了市值中性化处理,因子效果才真正出来。这一点你一定要注意。
八、换手率:最朴素的流动性指标
换手率,大家应该都很熟悉。它反映的是股票被交易的活跃程度。
换手率高,说明市场参与者多,流动性好。但这里有个坑:换手率高的股票,往往波动也大。你不能只看换手率就判断流动性好,还要结合价差来看。
举个例子,某只妖股换手率50%,但买卖价差有2%。这说明什么?说明大家都在赌,但没人愿意做市。这种流动性,其实是虚的。
我个人习惯把换手率和价差放在一起看,做一个二维分类:
- 高换手 + 低价差:真正的流动性好(比如茅台)
- 高换手 + 高价差:投机性强,流动性虚(比如某些小盘妖股)
- 低换手 + 低价差:机构控盘,流动性一般
- 低换手 + 高价差:流动性极差,尽量避开
九、总结一下
流动性这东西,说起来抽象,但落到实盘里,每一个维度都直接关系到你的盈亏。宽度决定成本,深度决定容量,即时性决定执行,弹性决定稳定性。
我建议你从今天开始,在回测框架里加上这几个流动性指标。哪怕只是简单算一下持仓标的的 Amihud 值,也能帮你避开不少坑。
好了,这一章就到这里。流动性是微观结构的基础,后面我们会一步步深入,把每个维度都拆开来看。