24、交易量与因子模型:交易量因子
多因子模型中的量价因子
做量化这些年,我越来越觉得交易量是个被低估的宝贝。很多人盯着价格K线看半天,却忽略了成交量里藏着的秘密。说白了,价格是结果,交易量是过程——没有量的配合,价格的变动往往不可持续。
我记得刚入行那会儿,带我的老交易员说过一句话:「量在价先」。当时不太理解,后来在实盘里摔了几次跟头才明白,这短短四个字背后是几十年的经验沉淀。
交易量因子的理论基础
为什么交易量能成为因子?核心逻辑其实很简单:
- 信息流假说:交易量反映了信息进入市场的速度。量突然放大,说明有「聪明钱」在行动
- 流动性溢价:交易量低的股票,买卖价差大,持有成本高,需要更高的预期收益来补偿
- 分歧度指标:高交易量往往意味着市场参与者对价格走势存在较大分歧
我个人习惯把交易量因子分成两类:一类是「绝对量」,比如日均成交量;另一类是「相对量」,比如量比、换手率。实战中,相对量的预测能力往往更强。
核心观点:交易量因子不是独立存在的,它和价格因子是「孪生兄弟」。量价配合才是完整的信号系统。
常见的交易量因子构造方法
嗯,这里我直接上干货。以下是我在项目中常用的几种构造方式:
| 因子名称 | 计算公式 | 逻辑解释 |
|---|---|---|
| 换手率因子 | 成交量 / 流通股本 | 衡量股票的交易活跃度 |
| 量比因子 | 当前成交量 / 过去N日均量 | 捕捉成交量的异常变化 |
| 成交额因子 | 成交量 × 均价 | 考虑价格因素后的资金流量 |
| Amihud非流动性因子 | |日收益率| / 日成交额 | 衡量价格对交易量的敏感度 |
我曾经踩过一个坑:直接用原始成交量做因子。结果回测曲线漂亮得不行,一上实盘就崩。后来才发现,原始成交量受股本大小影响太大,必须做标准化处理。换手率才是更稳定的选择。
量价因子的组合策略
单独用交易量因子,效果其实一般。真正厉害的是把量和价结合起来。我常用的组合方式:
- 量价背离:价格上涨但成交量萎缩,往往是趋势衰竭的信号
- 量价齐升:价格和成交量同步放大,趋势延续的概率较高
- 放量突破:价格突破关键位时伴随成交量放大,突破的有效性更强
实战技巧:我习惯用「量价相关系数」作为辅助因子。计算过去20天价格变动和成交量变动的相关性,负值越大,背离越明显,反转概率越高。
多因子模型中的权重分配
在多因子模型里,交易量因子通常不会单独占很大权重。我个人习惯给它10%-20%的权重,剩下的分配给动量、价值、质量等因子。为什么?因为交易量因子的稳定性不如基本面因子,但它能提供独特的「信息增量」。
举个例子:两个股票基本面一模一样,但一个交易量持续放大,另一个交易量萎缩。你选哪个?我肯定选前者——至少说明有人在关注它。
避坑指南:我曾经在2015年股灾期间吃过亏。那时候很多股票交易量异常放大,我以为是机会,结果是被套牢盘在出货。记住:交易量因子需要结合价格位置来判断,高位放量和低位放量完全是两回事。
交易量因子的知识体系
下面这张图是我自己整理的交易量因子知识框架,方便大家理解各个概念之间的关系:
代码实现示例
最后,分享一段我在项目中实际用过的Python代码,用来计算换手率因子和量比因子:
import pandas as pd
import numpy as np
def calc_volume_factors(df, window=20):
"""
计算交易量因子
df: 包含['volume', 'close', 'shares_outstanding']的DataFrame
"""
# 换手率因子
df['turnover'] = df['volume'] / df['shares_outstanding']
# 量比因子(当前量 / 过去N日均量)
df['volume_ma'] = df['volume'].rolling(window).mean()
df['volume_ratio'] = df['volume'] / df['volume_ma']
# Amihud非流动性因子
df['return'] = df['close'].pct_change()
df['dollar_volume'] = df['volume'] * df['close']
df['amihud_illiq'] = abs(df['return']) / df['dollar_volume']
# 标准化处理
df['turnover_z'] = (df['turnover'] - df['turnover'].mean()) / df['turnover'].std()
return df
小提示:代码里的标准化步骤千万别省。我见过太多人直接把原始因子扔进模型,结果被极端值带偏了。用Z-score或者分位数标准化都行,关键是让因子之间可比。
交易量因子这块,说白了就是「跟着聪明钱走」。但聪明钱不会举着牌子告诉你它在哪,你得从数据里自己找线索。多因子模型给了我们一个系统化的框架,但最终决策还是要靠你对市场的理解。