3. 交易量的基本统计:成交量、换手率、平均成交量
各位同学,今天我们来聊聊交易量数据的基础统计。说白了,就是三个核心指标:成交量、换手率、平均成交量。
我刚开始做量化的时候,觉得交易量不就是个数字嘛,有啥好研究的?后来踩了不少坑才明白——交易量是价格的燃料。没有量的价格,就像没有油的跑车,看着唬人,跑不起来。
3.1 成交量:最原始的交易信号
成交量,就是一段时间内成交的股票数量或合约数量。A股市场通常以「手」为单位,1手 = 100股。
我个人习惯把成交量分成三个维度看:
- 绝对成交量:今天成交了多少手,直接反映市场活跃度
- 相对成交量:跟过去N天比,是放量还是缩量
- 累计成交量:比如开盘30分钟的累计量,判断全天趋势
核心观点:成交量本身没有绝对标准。一只大盘股日成交1亿手可能算正常,但小盘股1000万手就算天量了。所以一定要结合个股的历史数据来看。
3.2 换手率:衡量流动性的金标准
换手率 = 成交量 / 流通股本 × 100%。
这个指标我特别喜欢。为什么?因为它把成交量「标准化」了。你想想看,工商银行和中国石油的成交量能直接比吗?不能。但换手率可以。
我在项目中遇到过这样的情况:某只股票突然放量,但换手率只有0.5%。这说明什么?说明它的流通盘太大了,这点量根本掀不起浪。反过来,一只小盘股换手率超过10%,那就要警惕了——可能是游资在搞事情。
实战经验:我个人习惯把换手率分成几个区间:
- 0-2%:冷清,适合做长线
- 2-5%:正常,适合做波段
- 5-10%:活跃,短线可以关注
- 10%以上:过热,小心追高被套
3.3 平均成交量:过滤噪音的利器
单日的成交量波动太大,受各种消息影响。这时候就需要平均成交量来帮忙。
常用的有:
- 5日均量:反映短期资金动向
- 20日均量:反映中期交易热度
- 60日均量:反映长期市场情绪
我曾经犯过一个错误:看到某天成交量突然放大3倍,以为有大资金进场,结果第二天就跌回去了。后来才发现,那只是某家机构调仓导致的异常波动。从那以后,我坚持用20日均量作为基准线——单日量超过均量的2倍,才值得重点关注。
3.4 如何获取交易量数据
数据获取是量化交易的第一步,也是最容易出问题的一步。我给大家推荐几个靠谱的渠道:
| 数据源 | 特点 | 适用场景 |
|---|---|---|
| Tushare | 免费,数据全,接口稳定 | 个人研究、小规模回测 |
| Wind | 收费,数据质量高 | 机构使用、实盘交易 |
| 聚宽/米筐 | 平台自带数据,方便回测 | 策略开发、模拟交易 |
| 交易所官网 | 最权威,但获取麻烦 | 数据校验、学术研究 |
避坑指南:我曾经用某个免费数据源做回测,结果发现它的成交量数据经常有缺失。后来一查,原来是它把停牌日的成交量直接填了0。这会导致均量计算严重失真。所以,拿到数据后第一件事——检查数据完整性。
3.5 数据清洗:脏数据比没数据更可怕
数据清洗,说白了就是「去伪存真」。我总结了一套清洗流程:
- 去重:检查是否有重复的日期数据
- 补缺:停牌日的数据如何处理?我习惯用前值填充
- 去异常:成交量突然变成0或者突然放大100倍,大概率是数据错误
- 复权处理:送转股会导致成交量虚增,需要复权处理
这里给一段简单的Python代码,展示清洗逻辑:
import pandas as pd
def clean_volume_data(df):
# 去重
df = df.drop_duplicates(subset=['date'])
# 补缺:停牌日用前值填充
df['volume'] = df['volume'].fillna(method='ffill')
# 去异常:超过20日均量5倍的数据标记为异常
df['ma20'] = df['volume'].rolling(20).mean()
df['volume'] = df['volume'].mask(
df['volume'] > df['ma20'] * 5,
df['ma20']
)
return df
小技巧:清洗完数据后,我习惯画一张图看看。如果成交量曲线突然出现「尖刺」或者「断崖」,那说明清洗还没到位。嗯,视觉检查永远是最快的验证方式。
3.6 知识体系总览
下面这张图,是我自己整理的知识框架。你可以把它当成一个「导航图」,随时回来对照:
这张图把整个章节的核心逻辑串起来了。你从中心出发,先理解三个指标,再往下看它们的子概念,最后落到数据获取和清洗。嗯,这样学起来会清晰很多。
好了,这一章的内容就到这里。交易量是价格发现的「第一道门槛」,把基础打扎实了,后面讲量价关系、资金流向的时候,你才能听得更明白。