AlphaFeed Blog

如何用 Python 获取全部 ETF 列表与行情?(按成交额筛选活跃 ETF)

行情数据 · 代码验证于 2026-09-14

如何用 Python 获取全部 ETF 列表与行情?(按成交额筛选活跃 ETF)

一句话回答: 用 AlphaFeed 的 quotes.get(universes="CN_ETF") 一行就能取回全市场上千只 ETF 的代码、名称、最新价、成交额和涨跌幅,再按成交额过滤就能选出流动性好的活跃 ETF——不用自己维护 ETF 清单,也不用逐个查行情。

为什么会有这个问题 / 传统做法的痛点

想做 ETF 轮动、宽基定投或套利研究,第一步都是”先有一份带行情的 ETF 全清单”。手工来做很痛苦:

AlphaFeed 提供 CN_ETF 标的池,一次拿到全市场 ETF 及其快照行情。

分步骤解决(每步配可运行代码)

第 1 步:一行取回全市场 ETF 行情

from alphafeed import AlphaFeed

af = AlphaFeed(api_key="your-api-key")  # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()

q = af.quotes.get(universes="CN_ETF", to_dataframe=True)
print(q.shape)                    # 例如 (1577, 18):全市场约 1500+ 只 ETF
print(q[["symbol", "ext.name", "last_price", "amount"]].head())

ETF 快照 DataFrame 关键列(与股票一致,名称在 ext. 命名空间):

列名含义备注
symbolETF 代码如 510300.SH(沪深300ETF)
ext.nameETF 名称名称在 ext 下
last_price最新价实时快照
amount当日成交额(元)流动性核心指标
ext.change_pct涨跌幅小数(0.01=1%)
ext.turnover_rate换手率小数

第 2 步:按成交额筛出活跃 ETF

def active_etfs(min_amount=1e8):   # 日成交额 ≥ 1 亿
    q = af.quotes.get(universes="CN_ETF", to_dataframe=True)
    liquid = q[q["amount"] >= min_amount].copy()
    cols = ["symbol", "ext.name", "last_price", "amount", "ext.change_pct"]
    return liquid[cols].sort_values("amount", ascending=False)

top = active_etfs(min_amount=1e8)
print("活跃 ETF 数量:", len(top))
print(top.head(10).to_string(index=False))

实测成交额居前的多为债券/货币类 ETF(如短融 ETF、银华日利 ETF),做权益轮动时通常还要再按名称/类型过滤掉货币债券类,只留股票型宽基/行业 ETF。

第 3 步:结合 K 线做进一步分析

拿到活跃 ETF 列表后,可直接批量取 K 线做动量/相关性等分析:

symbols = active_etfs(2e8)["symbol"].tolist()[:20]
bt = af.klines.batch(symbols, period="1d", count=60,
                     adjust="forward", to_dataframe=True)
# 之后可算区间涨幅、相关性、轮动信号等

关键坑与注意事项

常见问题(FAQ)

Q:CN_ETF 池大概有多少只? A:实测约 1500+ 只(含宽基、行业、债券、货币、跨境等各类)。做策略前务必按类型和流动性过滤。

Q:怎么只要股票型宽基 ETF(如沪深300、中证500)? A:先用 CN_ETF 拿全量,再按 ext.name 关键词或你维护的白名单过滤;AlphaFeed 给的是全量 ETF 行情,分类规则由你定。

Q:能拿到 ETF 的成分股/跟踪指数吗? A:本文聚焦”列表+行情”。成分与跟踪标的属指数/基金信息,请以官方披露为准,不要臆造未暴露字段。

Q:需要付费吗? A:universes="CN_ETF" 全市场池需要 Starter 及以上;少量 ETF 的单独行情/ K 线在免费额度内即可试,详见 AlphaFeed 定价页。

小结

获取 ETF 列表的本质是”有一个随时更新的 ETF 标的池 + 快照行情”,再用成交额过滤流动性。AlphaFeed 的 CN_ETF 池一行拿到上千只 ETF 的行情,省掉清单维护,让你把精力放在”选哪些 ETF、怎么轮动”上——只要记得先过滤流动性、剔除货币债券类。

相关链接:


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