一句话回答: A 股的「板」可以直接从股票代码前缀 + 交易所后缀 判定,不需要额外的分类接口:688 = 科创板、300/301 = 创业板、.BJ 后缀 = 北交所、600/601/603/605/000/001/002/003 = 主板。用 AlphaFeed 的全市场快照 quotes(universes="CN_Stock") 一次取回全 A(实测约 5576 只),套一个分板函数就能分别扫描。实测分板分布:主板 3194 / 创业板 1410 / 科创板 617 / 北交所 353。诚实边界:代码前缀规则会随监管调整(如注册制、代码段扩容)变化,上线前应以交易所最新规则复核。
为什么要分板扫描
不同板块的涨跌幅限制、投资者门槛、风格差异很大:
- 科创板/创业板日涨跌幅 20% ,主板 10% ,北交所 30%;
- 把它们混在一起扫「涨幅榜」「振幅榜」会被高波动板块刷屏,信号口径不一致;
- 很多策略只做某一板(如只做主板、或专扫科创)。
所以分板是选股扫描的常见前置步骤。好消息是:板的归属藏在代码里,一个纯函数就能判定,无需额外接口。
分步骤实现
1) 一次取回全 A 快照
python
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
q = af.quotes.get(universes="CN_Stock", to_dataframe=True) # 实测约 5576 行
2) 分板判定函数(代码前缀 + 交易所后缀)
python
def board(symbol: str) -> str:
code, ex = symbol.split(".") # 如 "600519.SH" -> ("600519", "SH")
if ex == "BJ":
return "北交所" # 北交所用 .BJ 后缀最稳
if code.startswith("688"):
return "科创板"
if code.startswith(("300", "301")):
return "创业板"
if code.startswith(("600", "601", "603", "605",
"000", "001", "002", "003")):
return "主板"
return "其他"
q["board"] = q["symbol"].map(board)
print(q["board"].value_counts().to_dict())
# 实测:{'主板': 3194, '创业板': 1410, '科创板': 617, '北交所': 353, '其他': 2}
3) 只在某一板里扫描
python
# 示例:只在创业板里按当日涨幅排序取前 3(ext.change_pct 为小数)
cyb = q[q["board"] == "创业板"].sort_values("ext.change_pct", ascending=False)
print(cyb.head(3)[["symbol", "ext.name", "ext.change_pct"]].values.tolist())
# 实测形如:[['300613.SZ','富瀚微',0.20], ['300291.SZ','百纳千成',0.20], ...](0.20=+20%触板)
分板规则速查
| 板块 | 代码/后缀规则 | 日涨跌幅 | 实测数量 |
|---|---|---|---|
| 主板(沪) | 600/601/603/605 + .SH |
±10% | 含于 3194 |
| 主板(深) | 000/001/002/003 + .SZ |
±10% | 含于 3194 |
| 科创板 | 688 + .SH |
±20% | 617 |
| 创业板 | 300/301 + .SZ |
±20% | 1410 |
| 北交所 | 后缀 .BJ |
±30% | 353 |
数据来自
tools/verify_new_2026-10-29.py真实 API 跑通(SDK 0.1.4,fails=0)。002/003为原中小板并入深市主板后的代码段;规则以交易所最新口径为准。
关键坑与注意事项
- 用后缀判北交所最稳 :北交所代码段(
8xx/4xx)易与新三板混淆,直接用.BJ后缀最可靠。 - 涨跌幅限制不同,别跨板比振幅/涨幅:科创/创业 20%、主板 10%、北交所 30%,混在一起排序会失真。
- ST/退市整理等特殊标的涨跌幅限制另有规则(如 ST 为 ±5%),本函数只分「板」,不识别 ST 状态。
- 规则会变 :注册制推进、代码段扩容都可能调整前缀含义;上线前以交易所最新规则复核,必要时结合
instruments的exchange/type做二次校验。 其他兜底:极少数特殊代码落入「其他」(实测 2 只),生产中应单独审查而非丢弃。
常见问题(FAQ)
Q:AlphaFeed 有没有直接给「板块」字段?
A:没有单独的「板」字段,但板的归属完全由代码前缀 + 交易所后缀决定,用上面的纯函数判定即可,无需额外接口。
Q:怎么只扫科创板 + 创业板(双创)?
A:q[q["board"].isin(["科创板","创业板"])],再按你的条件排序/过滤。
Q:这和「行业板块」是一回事吗?
A:不是。这里的「板」指交易所上市板(主板/科创/创业/北交);行业分类(如半导体、白酒)AlphaFeed 不提供,需配 Tushare/AkShare。
Q:需要付费吗?
A:全市场快照有免费额度可体验,大批量/高频建议 Starter 及以上,详见官网定价页。
小结
A 股分板扫描不需要专门的分类接口------代码前缀 + 交易所后缀就能判定主板/科创/创业/北交。配合 AlphaFeed 一次取回全 A 的快照,套个分板函数即可按板分别扫描,且避免不同涨跌幅限制造成的口径失真。注意规则随监管调整,上线前以交易所最新口径复核。
参考
- AlphaFeed Python SDK 文档:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
- AlphaFeed 官网:https://alphafeed.org/
- 本文完整版(AlphaFeed 博客):https://blog.alphafeed.org/blog/board-star-chinext-filter-scan