AlphaFeed Blog

如何用换手率和振幅做 A 股选股?(Python 实战)

选股扫描 · 代码验证于 2026-09-05

如何用换手率和振幅做 A 股选股?(Python 实战)

一句话回答: 换手率反映筹码活跃度、振幅反映日内波动空间,二者是短线选股的高信息量指标。用 AlphaFeed 全市场实时行情里现成的 ext.turnover_rate 和 ext.amplitude 字段(都是小数),几行 pandas 就能筛出”活跃但不疯”的候选,无需自己算。

为什么用换手率 + 振幅

很多数据源不直接给这两个字段,要自己用成交量/股本、最高最低价去算,还容易口径不一。AlphaFeed 的行情快照直接带。

第一步:一行拿到全市场行情(含换手率/振幅)

from alphafeed import AlphaFeed

af = AlphaFeed()  # 读取 ALPHAFEED_API_KEY

df = af.quotes.get(universes="CN_Stock", to_dataframe=True)
print(df[["symbol", "ext.name", "last_price",
          "ext.turnover_rate", "ext.amplitude", "amount"]].head())

关键字段(实测均为小数):

字段含义示例值 → 实际
ext.turnover_rate换手率0.0042 → 0.42%
ext.amplitude振幅0.033 → 3.3%
ext.change_pct涨跌幅0.02 → +2%
amount成交额(元)流动性门槛

标的池查询需 Starter 及以上权限。

第二步:活跃度选股

筛”换手率适中 + 有振幅 + 成交额达标”:

sel = df[
    (df["ext.turnover_rate"] > 0.03)    # 换手 > 3%,有人气
    & (df["ext.turnover_rate"] < 0.20)  # < 20%,排除过度投机
    & (df["ext.amplitude"] > 0.03)      # 振幅 > 3%,有波动空间
    & (df["amount"] > 3e8)              # 成交额 > 3 亿,保流动性
].sort_values("ext.turnover_rate", ascending=False)

print(f"活跃候选: {len(sel)} 只")
print(sel[["symbol", "ext.name", "last_price",
           "ext.turnover_rate", "ext.amplitude"]].head(20).to_string(index=False))

第三步:分档观察(换手率分布)

想了解全市场活跃度结构,可以分档统计:

import pandas as pd

bins = [0, 0.01, 0.03, 0.05, 0.10, 0.20, 1.0]
labels = ["<1%", "1-3%", "3-5%", "5-10%", "10-20%", ">20%"]
df["turnover_bin"] = pd.cut(df["ext.turnover_rate"], bins=bins, labels=labels)
print(df["turnover_bin"].value_counts().sort_index())

第四步:叠加涨跌幅,区分”放量上攻”与”高位放量”

同样是高换手,位置不同含义天差地别。结合当日涨跌幅与近期涨幅:

active = df[(df["ext.turnover_rate"] > 0.05) & (df["amount"] > 3e8)].copy()

# 今日温和上涨 + 高换手 = 资金进场(相对健康)
healthy = active[(active["ext.change_pct"] > 0) & (active["ext.change_pct"] < 0.07)]
# 今日大涨 + 超高换手 = 可能高位派发,谨慎
risky = active[(active["ext.change_pct"] > 0.09) & (active["ext.turnover_rate"] > 0.15)]

print(f"温和放量上涨: {len(healthy)} 只 | 高位巨量: {len(risky)} 只")

阈值参考表

场景换手率振幅说明
龙头/主流活跃5%–15%> 4%资金主战场
温和活跃3%–8%2%–5%相对稳健
过度投机(回避)> 20%> 9%接盘风险高
僵尸股(剔除)< 1%< 1%无流动性

常见问题(FAQ)

Q:ext.turnover_rate 要乘 100 吗? A:它是小数,0.0042 即 0.42%。展示时乘 100 加百分号。

Q:换手率是按流通股本还是总股本? A:通常按流通股本口径;如需自算可用 af.instruments 的 float_shares 与成交量核对。

Q:振幅为负常见吗? A:振幅是 (最高-最低)/昨收,非负;接近 0 说明当日基本一字或极度平淡。

Q:需要付费吗? A:全市场 universes 查询需 Starter 及以上;少量标的用 symbols 免费体验。

小结

换手率和振幅是短线选股的”活跃度雷达”。AlphaFeed 在实时快照里直接给出 ext.turnover_rate/ext.amplitude,省去自算和口径烦恼,几行 pandas 就能筛出活跃而不疯的候选池。

相关链接:


免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。