流动性定义与度量:三维度与常见指标

聊到利率债流动性,我经常被问到:到底什么是流动性?

说白了,流动性就是资产变现的难易程度。你手里拿着10个亿的国债,想半小时内卖掉,能不能做到?能做到,说明流动性好;做不到,说明流动性差。就这么简单。

但做量化分析不能只靠感觉。我们需要把流动性拆解成可量化的维度。我个人习惯从三个角度去看——宽度、深度、弹性。这三个维度,基本能覆盖流动性的全貌。

一、流动性的三维度

1. 宽度(Width)——交易成本维度

宽度衡量的是交易成本。最直观的指标就是买卖价差。

举个例子:某只国债的买一价是100.01元,卖一价是100.03元。价差2分钱。你买进去立刻卖,亏的就是这2分钱。价差越小,说明流动性越好。

我在项目中遇到过这样的情况:有些老券的买卖价差能到5毛钱以上,基本就是"僵尸券"了。做市商都不愿意报价,你挂单进去可能一天都成交不了。

核心公式:
相对买卖价差 = (卖一价 - 买一价) / 中间价 × 100%

2. 深度(Depth)——交易量维度

深度看的是市场能承载多大的交易量而不引起价格剧烈波动。

你想想看,一个深度好的市场,你砸进去1个亿,价格可能只波动1个bp。深度差的市场,500万就能把价格打穿好几个bp。

深度指标通常用订单簿数据来算。比如看买一到买五的总挂单量,或者卖一到卖五的总挂单量。我习惯用"深度比率"——即某个价格区间内的挂单总量占流通量的比例。

实战经验:
做回测时,千万别忽略深度。我见过有人用高频数据做策略,回测收益漂亮得很,一上实盘就亏钱。为什么?因为回测时假设了无限深度,实际市场根本吃不下那么大单子。

3. 弹性(Resilience)——价格恢复维度

弹性衡量的是:当大单冲击后,价格需要多久能回到均衡水平。

弹性好的市场,比如活跃券,大单砸下去,几分钟内价格就回来了。弹性差的市场,比如某些地方债,砸下去可能半天都缓不过来。

弹性指标不太好直接算,我一般用"价格冲击衰减时间"来近似。具体做法是:找到大额成交事件,看成交后价格恢复到冲击前水平所需的时间。

注意:
弹性指标对数据频率要求很高。用日频数据算弹性基本是扯淡,至少要用分钟级数据。我建议用tick级数据,效果最好。

二、常见流动性指标

三维度是理论框架。落到实际交易中,我们还需要具体的量化指标。下面这三个是我最常用的。

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

这是最直接的流动性指标。计算方式前面已经说了。

实际应用中,我建议用加权平均价差,而不是简单价差。因为有些券的买卖挂单量很不均衡,比如买一挂了1000万,卖一只挂了100万。这时候简单价差会低估实际交易成本。

# 加权买卖价差计算示例
def weighted_spread(bid_prices, bid_volumes, ask_prices, ask_volumes):
    """
    计算加权买卖价差
    bid_prices: 买盘价格列表 [买一价, 买二价, ...]
    bid_volumes: 买盘量列表
    ask_prices: 卖盘价格列表
    ask_volumes: 卖盘量列表
    """
    total_bid_vol = sum(bid_volumes)
    total_ask_vol = sum(ask_volumes)
    
    weighted_bid = sum(p * v for p, v in zip(bid_prices, bid_volumes)) / total_bid_vol
    weighted_ask = sum(p * v for p, v in zip(ask_prices, ask_volumes)) / total_ask_vol
    
    spread = (weighted_ask - weighted_bid) / ((weighted_ask + weighted_bid) / 2)
    return spread * 10000  # 返回bp单位

2. 换手率(Turnover Rate)

换手率 = 成交量 / 流通量。这个指标简单粗暴,但很有效。

一般来说,活跃券的日换手率在5%-15%之间。低于1%的基本就是冷门券。我记得有一次做地方债流动性分析,发现某只10年期地方债的月换手率只有0.3%,相当于一个月都没怎么交易过。

换手率区间 流动性评级 典型券种
> 10% 极好 新发活跃国债
3% - 10% 良好 次新国债、部分政金债
1% - 3% 一般 老券、部分地方债
< 1% 超老券、冷门地方债
避坑指南:
我曾经犯过一个错误:直接用日换手率做流动性排序。后来发现,有些券虽然日换手率高,但都是小单刷出来的,深度很差。所以我现在都是换手率+深度指标一起看。

3. Amihud非流动性指标

这个指标是学术界最常用的流动性度量之一。它的逻辑很简单:价格对成交量的敏感度。

公式:Amihud = |日收益率| / 日成交额

数值越大,说明单位成交额引起的价格波动越大,流动性越差。

举个例子:某国债日收益率0.01%,成交额100亿。Amihud = 0.01% / 100亿 = 1e-12。另一只券日收益率0.05%,成交额只有5亿。Amihud = 0.05% / 5亿 = 1e-10。后者流动性差了两个数量级。

# Amihud指标计算
def amihud_illiquidity(returns, volumes):
    """
    计算Amihud非流动性指标
    returns: 日收益率序列
    volumes: 日成交额序列(单位:元)
    """
    import numpy as np
    
    # 避免除零
    volumes = np.where(volumes == 0, np.nan, volumes)
    
    illiquidity = np.abs(returns) / volumes
    
    # 通常取月度或季度均值
    monthly_avg = np.nanmean(illiquidity.reshape(-1, 20), axis=1)
    
    return monthly_avg * 1e6  # 放大系数,便于观察
使用注意:
Amihud指标对零成交日很敏感。如果某只券经常零成交,Amihud会变成无穷大。我建议先剔除零成交日,或者用成交额加权的滚动窗口来计算。

三、三维度与指标的关系

讲到这里,你可能已经发现了:三个维度并不是孤立的。宽度、深度、弹性之间相互影响。

比如,宽度窄的券通常深度也好,因为做市商愿意提供流动性。弹性差的券往往宽度也宽,因为市场恢复慢,做市商需要更大的价差来补偿风险。

我习惯用一张图来展示它们的关系:

流动性三维度与指标关系图 宽度 交易成本 买卖价差 深度 交易量 换手率 弹性 价格恢复 冲击衰减时间 综合流动性 Amihud指标 三个维度共同决定流动性,Amihud指标是综合反映

嗯,这张图我画了很多遍。你看,三个维度交叉的区域就是综合流动性。Amihud指标其实就落在中间,因为它同时反映了宽度和深度的影响。

实际做分析时,我建议三个维度都看,但侧重点可以不同。比如做日内交易,宽度最重要;做持仓管理,深度更重要;做风险对冲,弹性更关键。

好了,流动性定义和度量就讲到这里。记住一句话:没有完美的流动性指标,只有最适合你交易场景的指标。


专注资料整理