3、流动性因子:Amihud非流动性指标、Roll spread估计量、有效价差与实现价差、流动性比率
流动性,说白了就是你能不能快速把资产卖掉,还不怎么亏钱。
我刚开始做量化那会儿,总觉得流动性是个很虚的概念。直到有一次,我拿着一个看似完美的因子策略去跑回测,结果实盘一跑就崩——因为那个小票根本没人接盘。嗯,从那以后,我再也不敢忽视流动性了。
这一章,我们来拆解几个最经典的流动性因子。它们各有各的脾气,但组合起来用,效果往往出奇的好。
3.1 Amihud非流动性指标
这个指标是我个人最常用的。它由Yakov Amihud在2002年提出,核心思想很简单:交易量越大,价格波动越小,流动性就越好。
公式长这样:
ILLIQ_i = (1/D) * Σ(|R_i,d| / Volume_i,d)
其中:
- R_i,d 是股票i在第d天的收益率
- Volume_i,d 是当天的成交金额(注意,不是股数)
- D 是交易天数
说白了,就是每单位成交金额能撬动多大的价格变化。数值越大,说明流动性越差。
实战经验:我在做A股因子时发现,Amihud指标对ST股和次新股特别敏感。如果你不做剔除,这些股票会把整个因子截面拉偏。我建议至少剔除上市不满60天的股票。
代码实现也不复杂:
import pandas as pd
import numpy as np
def calc_amihud(returns, volume):
"""
计算Amihud非流动性指标
returns: 日收益率序列
volume: 日成交金额序列(单位:元)
"""
# 防止除零
volume = volume.replace(0, np.nan)
illiq = np.abs(returns) / volume
# 月度平均
monthly_illiq = illiq.resample('M').mean()
return monthly_illiq
避坑指南:我曾经犯过一个低级错误——直接用成交股数代替成交金额。结果小盘股和大盘股的流动性差异被严重扭曲。记住,一定要用成交金额(元),不是股数。
3.2 Roll spread估计量
Roll spread是个很有意思的指标。它不需要高频数据,只用日度收益率就能估算买卖价差。
原理是这样的:如果市场存在买卖价差,那么收益率序列会表现出负的一阶自相关。你想想看,买方推动的价格上涨,下一笔很可能就是卖方砸下来。这种来回震荡,就是价差的体现。
公式:
Roll Spread = 2 * √(-Cov(ΔP_t, ΔP_{t-1}))
其中ΔP是价格变化。注意,如果协方差为正,则取0。
注意:Roll spread有个硬伤——它假设市场是有效的,且价差恒定。现实中,这个假设经常不成立。我实测过,在A股市场,Roll spread对大盘股估计偏小,对小盘股估计偏大。使用时最好做截面标准化。
代码实现:
def calc_roll_spread(prices):
"""
计算Roll spread估计量
prices: 日度价格序列
"""
dp = prices.diff().dropna()
cov = dp.rolling(window=20).cov(dp.shift(1))
# 只取负协方差
cov = cov.clip(upper=0)
spread = 2 * np.sqrt(-cov)
return spread
3.3 有效价差与实现价差
这两个指标需要高频数据,但精度比Roll spread高得多。
有效价差衡量的是:你的成交价格相对于真实价格的偏离程度。
有效价差 = 2 * |成交价格 - 买卖中间价|
实现价差则更关注:你成交后,价格朝不利方向跑了多少。
实现价差 = 2 * (成交价格 - 成交后一段时间内的中间价)
我个人的习惯是:做日内策略时用实现价差,做隔夜策略时用有效价差。为什么?因为实现价差能捕捉到订单对市场的冲击,而有效价差更多反映的是流动性提供者的补偿。
实战案例:有一次我在回测一个高频因子,发现有效价差因子在开盘后30分钟内特别有效。后来一查,原来是集合竞价后的价格发现过程还没完成,价差被系统性高估了。这个窗口期,就是套利的机会。
3.4 流动性比率
流动性比率是个大家族。最常用的是Amivest流动性比率和Hui-Heubel流动性比率。
Amivest比率:
L_Amivest = Σ(Volume_t) / Σ(|R_t|)
说白了,就是每单位价格波动能承载多少成交量。数值越大,流动性越好。
Hui-Heubel比率:
L_HH = (P_max - P_min) / P_min / (Volume / Shares)
这个指标考虑了价格振幅和换手率的关系。我一般在做跨市场比较时用它,因为它对市值做了归一化。
| 指标名称 | 数据需求 | 优点 | 缺点 |
|---|---|---|---|
| Amihud | 日度收益率+成交额 | 数据易得,计算简单 | 对极端值敏感 |
| Roll spread | 日度价格 | 仅需价格数据 | 假设过强,估计有偏 |
| 有效价差 | 高频订单簿 | 精度高 | 数据成本高 |
| 流动性比率 | 日度量价 | 直观易懂 | 不同比率结果可能矛盾 |
我的建议:如果你刚开始做流动性因子,先从Amihud入手。它数据要求低,逻辑清晰,而且和很多异象因子都有相关性。等你把基础打牢了,再上高频指标。
知识体系总览
下面这张图,是我自己梳理的流动性因子框架。你可以把它当作一个检查清单:
嗯,流动性因子这块,内容其实挺多的。但核心就一句话:流动性差的资产,需要更高的收益来补偿。这个逻辑在A股、美股、港股都成立,只是强度不同。
我个人在实盘中,一般会同时监控3-4个流动性指标。如果它们同时发出信号,那这个交易决策的置信度就高得多。如果只有一个指标在叫,我会再等等。