3、换手率指标:定义、计算与情绪择时实战
换手率,说白了就是一只股票被倒手的频率。
我刚开始做量化那会儿,总觉得换手率就是个成交量除以流通股本,没啥技术含量。后来在实盘里吃了亏,才发现这玩意儿背后藏着市场情绪的密码。今天咱们就把它彻底拆开看看。
3.1 换手率的定义与计算方式
官方定义很简单:换手率 = 当日成交量 / 流通股本 × 100%。
举个例子,某只股票流通股本是1亿股,今天成交了2000万股,那换手率就是20%。
嗯,这里要注意——流通股本不是总股本。我见过不少新手直接拿总股本算,结果算出来的换手率偏低,信号失真。尤其是那些大股东持股比例高的股票,流通盘小,换手率容易被放大。
| 参数 | 说明 | 常见误区 |
|---|---|---|
| 成交量 | 当日成交的总股数 | 别用成交金额代替 |
| 流通股本 | 可在二级市场自由交易的股份 | 不是总股本! |
| 换手率 | 反映交易活跃度 | 高≠好,低≠差 |
我个人习惯用5日平均换手率来平滑噪音。单日换手率受消息面影响太大,比如突然来个涨停,换手率瞬间飙到30%,但第二天可能就掉回5%。用均值能过滤掉这种脉冲信号。
3.2 换手率在情绪择时中的应用
换手率的核心价值在于——它告诉你市场参与者有多「躁动」。
为什么会这样?因为换手率高,说明买卖双方分歧大,情绪亢奋。换手率低,说明大家都不动,市场冷清。
我总结了几条实战规律:
- 换手率持续低于1%:市场进入「僵尸状态」,这时候别指望大行情,适合观望。
- 换手率突然放大到10%以上:短期情绪过热,小心回调。我曾经在2019年用这个信号躲过一波科技股的暴跌。
- 换手率温和放大(3%-7%):资金有序进场,趋势可能延续。这是我最喜欢的区间。
- 换手率与价格背离:比如价格创新高,但换手率在下降——说明上涨动力不足,该跑了。
核心逻辑:换手率是情绪的「温度计」。温度太高容易烫伤,温度太低冻死人,只有温温的才舒服。
你想想看,一只股票如果每天换手率只有0.5%,突然某天飙到15%,说明什么?说明有资金在搞事情。但搞事情不一定就是好事——可能是主力拉高出货。
3.3 Python实现与回测
好了,理论说完了,咱们直接上代码。我习惯用akshare拿数据,用pandas处理,用backtrader回测。
import akshare as ak
import pandas as pd
import numpy as np
import backtrader as bt
from datetime import datetime
# 获取数据
def get_turnover_data(symbol="000001", start="2020-01-01", end="2024-01-01"):
df = ak.stock_zh_a_hist(symbol=symbol, period="daily",
start_date=start, end_date=end, adjust="qfq")
df['换手率'] = df['换手率'] # akshare直接返回换手率
df['日期'] = pd.to_datetime(df['日期'])
df.set_index('日期', inplace=True)
return df[['收盘', '换手率']]
# 计算情绪信号
def generate_signal(df, high_threshold=10, low_threshold=1):
df['信号'] = 0
# 换手率过高,卖出
df.loc[df['换手率'] > high_threshold, '信号'] = -1
# 换手率过低,买入(均值回归逻辑)
df.loc[df['换手率'] < low_threshold, '信号'] = 1
return df
# 回测策略
class TurnoverStrategy(bt.Strategy):
params = (
('high_threshold', 10),
('low_threshold', 1),
)
def __init__(self):
self.turnover = self.datas[0].turnover
self.close = self.datas[0].close
def next(self):
if not self.position:
if self.turnover[0] < self.params.low_threshold:
self.buy()
else:
if self.turnover[0] > self.params.high_threshold:
self.sell()
避坑指南:我曾经直接用单日换手率做信号,结果回测曲线漂亮得不像话。一上实盘就崩了——因为换手率在开盘半小时内就能冲到10%,但收盘可能又掉下来。后来我改用收盘前30分钟的换手率,效果好了很多。
回测结果怎么看?我一般关注三个指标:
- 年化收益率:别低于10%,否则不如买指数
- 最大回撤:超过20%的策略我直接放弃
- 胜率:换手率策略的胜率通常在40%-60%之间,别期望太高
我个人习惯把换手率和其他指标结合使用。比如加上成交量——如果换手率高但成交量没跟上,说明是散户在折腾,不是主力行为。再比如加上价格位置——低位放量换手率高,是好事;高位放量换手率高,是坏事。
3.4 换手率情绪择时框架
下面这张图是我自己总结的换手率情绪择时框架,你可以直接拿去用:
这个框架的核心就三步:拿数据 → 平滑处理 → 判断情绪。别搞太复杂,越简单的东西越不容易过拟合。
警告:换手率策略在震荡市里表现很好,但在单边牛熊市里容易失效。牛市里换手率天天高,你天天卖,踏空;熊市里换手率天天低,你天天买,套牢。所以一定要结合市场环境来用。
最后说一句,换手率不是万能的。我见过有人把换手率当圣杯,结果亏得裤衩都不剩。记住,它只是一个情绪指标,帮你感知市场的温度,而不是预测未来的水晶球。
好了,这一章就到这儿。代码拿去跑跑看,有问题咱们下一章聊。