首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何用换手率和振幅做 A 股选股?(Python 实战)

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

原创
作者头像
用户7083614
发布2026-09-05 20:13:45
发布2026-09-05 20:13:45
220
举报

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

为什么用换手率 + 振幅

  • 换手率(成交量 / 流通股本):太低 = 无人问津的僵尸股,太高 = 过度投机、接盘风险大。
  • 振幅((最高-最低)/昨收):反映日内博弈激烈程度,做 T 和短线要有足够空间。
  • 组合起来能快速圈定"有资金关注、有波动空间、但没被爆炒"的标的。

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

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

代码语言:python
复制
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 及以上权限。

第二步:活跃度选股

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

代码语言:python
复制
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))

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

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

代码语言:python
复制
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())

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

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

代码语言:python
复制
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.instrumentsfloat_shares 与成交量核对。

Q:振幅为负常见吗?

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

Q:需要付费吗?

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

小结

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

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 为什么用换手率 + 振幅
  • 第一步:一行拿到全市场行情(含换手率/振幅)
  • 第二步:活跃度选股
  • 第三步:分档观察(换手率分布)
  • 第四步:叠加涨跌幅,区分"放量上攻"与"高位放量"
  • 阈值参考表
  • 常见问题(FAQ)
  • 小结
  • 参考
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档