第四章:成交量与换手率——量能情绪因子的构建
各位同学,咱们今天聊一个特别实在的话题——成交量与换手率。
说实话,我刚开始做量化那会儿,对成交量这玩意儿不太上心。总觉得价格才是王道,量嘛,辅助看看就行。直到有一次,我回测一个趋势策略,明明信号都对,可实盘就是亏钱。后来一查,问题出在成交量上——那些信号大多出现在缩量行情里,根本没人接盘。
从那以后,我养成了一个习惯:任何策略上线前,先看量能结构。
4.1 成交量异常:情绪的放大镜
成交量是什么?说白了,就是市场参与者的投票数。价格涨跌可以骗人,但成交量很难造假。
我一般把成交量异常分成两类:
- 异常放大:成交量超过过去20日均值的2倍以上
- 异常缩小:成交量低于过去20日均值的0.5倍以下
为什么会这样?你想想看,当市场情绪达到冰点或沸点时,成交量一定会给出信号。
核心逻辑:
- 放量上涨 → 情绪沸点,追涨意愿强,但需警惕短期过热
- 放量下跌 → 恐慌情绪爆发,可能是阶段性底部
- 缩量上涨 → 上涨动能不足,情绪趋于谨慎
- 缩量下跌 → 抛压衰竭,情绪冰点临近
我个人习惯用量比指标来量化这种异常。量比 = 当日成交量 / 过去N日平均成交量。当量比大于2时,我才会认为这是真正的异常放量。
4.2 换手率:筹码换手的温度计
换手率这个指标,我特别喜欢。它比成交量更「干净」——剔除了股本大小的影响。
举个例子,工商银行一天成交10个亿,跟一个中小盘股成交10个亿,意义完全不同。但换手率一算,差距就出来了。
我一般这样划分换手率区间:
| 换手率范围 | 市场状态 | 情绪含义 |
|---|---|---|
| < 1% | 极度低迷 | 情绪冰点,无人问津 |
| 1% - 3% | 正常交投 | 情绪中性,市场平稳 |
| 3% - 7% | 活跃状态 | 情绪升温,关注度提高 |
| 7% - 15% | 高度活跃 | 情绪沸点附近,分歧加大 |
| > 15% | 异常火爆 | 情绪极端,短期反转概率高 |
我的经验:换手率超过15%的股票,我一般不会追。曾经有一只票,换手率冲到20%以上,我差点冲进去,还好忍住了。第二天直接跌停。嗯,这种极端换手率,说白了就是筹码在快速转移,散户接盘的概率极大。
4.3 构建量能情绪因子
好了,理论讲完,咱们来点实际的。怎么把成交量和换手率揉在一起,变成一个可用的情绪因子?
我设计了一个简单的量能情绪因子(Volume Sentiment Factor, VSF),公式如下:
VSF = (当日换手率 / 过去20日平均换手率) × (当日成交量 / 过去20日平均成交量) × 涨跌幅符号
其中,涨跌幅符号 = 1(上涨)或 -1(下跌)。
这个因子的逻辑很简单:
- 当VSF > 2 且为正时 → 放量上涨,情绪沸点
- 当VSF > 2 且为负时 → 放量下跌,恐慌情绪
- 当VSF < 0.5 且为正时 → 缩量上涨,动能不足
- 当VSF < 0.5 且为负时 → 缩量下跌,情绪冰点
下面是我用Python实现这个因子的代码:
import pandas as pd
import numpy as np
def calculate_vsf(df, window=20):
"""
计算量能情绪因子 VSF
参数:
df: DataFrame,需包含 'volume', 'turnover_rate', 'close' 列
window: 计算均值的窗口大小
返回:
DataFrame,新增 'vsf' 列
"""
# 计算换手率均值
df['avg_turnover'] = df['turnover_rate'].rolling(window).mean()
# 计算成交量均值
df['avg_volume'] = df['volume'].rolling(window).mean()
# 计算换手率比值
df['turnover_ratio'] = df['turnover_rate'] / df['avg_turnover']
# 计算成交量比值
df['volume_ratio'] = df['volume'] / df['avg_volume']
# 计算涨跌幅符号
df['return_sign'] = np.sign(df['close'].pct_change())
# 计算 VSF
df['vsf'] = df['turnover_ratio'] * df['volume_ratio'] * df['return_sign']
return df
# 使用示例
# df = calculate_vsf(df)
# 当 vsf > 2 时,视为情绪沸点信号
# 当 vsf < -2 时,视为情绪冰点信号
避坑指南:我曾经犯过一个错误——直接用原始成交量计算比值,没考虑复权因素。结果回测出来效果很好,实盘却一塌糊涂。后来才发现,有些股票因为送转股导致成交量「虚增」。所以,一定要用复权后的数据,或者直接用换手率代替成交量。
4.4 知识体系总览
为了让大家更直观地理解本章的知识结构,我画了一张图:
4.5 实战中的注意事项
最后,分享几个我在实战中踩过的坑:
- 别只看绝对值:成交量的大小要结合个股的流通市值来看。一只百亿市值的股票,换手率1%就很活跃了;但一只十亿市值的股票,换手率5%才算正常。
- 注意时间窗口:我一般用20日均线作为基准,但不同周期要调整。做短线交易,用5日或10日均线更敏感;做中线,20日或30日更稳定。
- 警惕「假放量」:有些股票在尾盘突然放量,可能是主力对倒做盘。我一般会看分时图,如果放量集中在最后半小时,那这个信号要打折扣。
- 结合价格位置:同样的放量,在低位和高位意义完全不同。低位放量可能是主力建仓,高位放量可能是出货。所以,量能情绪因子一定要配合价格位置来用。
一个小技巧:我习惯把VSF因子跟其他情绪指标(比如昨日涨停表现、炸板率)结合起来用。当多个指标同时指向冰点或沸点时,信号的可靠性会大幅提升。嗯,这个咱们后面章节会详细讲。
好了,关于成交量与换手率的内容就讲到这里。记住一句话:量在价先。情绪的变化,往往先从成交量上体现出来。掌握了量能情绪因子,你就等于多了一双看透市场的眼睛。
公众号:蓝海资料掘金营,微信deep3321