第四章:成交量与换手率——量能情绪因子的构建

各位同学,咱们今天聊一个特别实在的话题——成交量与换手率。

说实话,我刚开始做量化那会儿,对成交量这玩意儿不太上心。总觉得价格才是王道,量嘛,辅助看看就行。直到有一次,我回测一个趋势策略,明明信号都对,可实盘就是亏钱。后来一查,问题出在成交量上——那些信号大多出现在缩量行情里,根本没人接盘。

从那以后,我养成了一个习惯:任何策略上线前,先看量能结构。

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 知识体系总览

为了让大家更直观地理解本章的知识结构,我画了一张图:

量能情绪因子知识体系 量能情绪因子 成交量异常分析 放量上涨/下跌 缩量上涨/下跌 换手率区间划分 低迷/正常/活跃 高度活跃/异常 VSF = 换手率比值 × 成交量比值 × 涨跌幅符号 应用:情绪冰点识别 → 沸点预警 → 策略信号生成 成交量 换手率 因子构建 实际应用

4.5 实战中的注意事项

最后,分享几个我在实战中踩过的坑:

  1. 别只看绝对值:成交量的大小要结合个股的流通市值来看。一只百亿市值的股票,换手率1%就很活跃了;但一只十亿市值的股票,换手率5%才算正常。
  2. 注意时间窗口:我一般用20日均线作为基准,但不同周期要调整。做短线交易,用5日或10日均线更敏感;做中线,20日或30日更稳定。
  3. 警惕「假放量」:有些股票在尾盘突然放量,可能是主力对倒做盘。我一般会看分时图,如果放量集中在最后半小时,那这个信号要打折扣。
  4. 结合价格位置:同样的放量,在低位和高位意义完全不同。低位放量可能是主力建仓,高位放量可能是出货。所以,量能情绪因子一定要配合价格位置来用。

一个小技巧:我习惯把VSF因子跟其他情绪指标(比如昨日涨停表现、炸板率)结合起来用。当多个指标同时指向冰点或沸点时,信号的可靠性会大幅提升。嗯,这个咱们后面章节会详细讲。

好了,关于成交量与换手率的内容就讲到这里。记住一句话:量在价先。情绪的变化,往往先从成交量上体现出来。掌握了量能情绪因子,你就等于多了一双看透市场的眼睛。


公众号:蓝海资料掘金营,微信deep3321