ETF 数据

ETF 数据:从全市场清单,到那一天的折溢价

做 ETF 研究,要的从来不是"一只票的行情",而是三件事:1716 只里怎么找到目标、单只的规模/折溢价/净值/持仓怎么看、以及那一天的折溢价是多少。我们把这三件事都做成了接口。

一句话说清

ETF 数据 = 找标的(全市场)+ 看单只(7 类)+ 能回看(历史快照)。前两项很多接口都有,第三项才是价格研究真正需要的 —— 今天的折溢价不能回答「当时贵不贵」。

四类能力,对应四个入口

按你要回答的问题选入口,不用一个接口硬凑:

「有哪些 ETF 值得看?」
/v1/screen?asset=etf
1716 只全市场:9 类横截面排行(规模 / 估值 / 历史百分位 / 单日 / 区间涨跌 / 换手 / 成交额 / 溢折率)+ 48 个主题池(千亿 / 百亿 / 金牛奖 / 科创占比高…)
「这只 ETF 现在什么情况?」
/v1/etf?kind=概览
59 个字段:规模、份额、折溢价(当日/近周/近月/近季/近年均值)、资金流、估值百分位、回撤
「这只 ETF 那天贵不贵?」
/v1/etf?kind=概览&date=
历史快照:那一天的折溢价 / 规模 / 估值百分位(实测 2026-06-30 折溢价 0.13%,当日是 -0.15%)
「它到底持有什么?」
/v1/etf?kind=持仓 · /v1/index-constituent
Top20 重仓股带权重(加 date 看历史持仓);全量成分股用跟踪指数查(sh000300 → 300 只)

⇒ 另外还有四类通用接口直接支持 ETF 代码:/v1/kline(K 线,默认前复权)、/v1/minute(分时)、/v1/technical(55 项技术指标)、/v1/fund(资金流)、/v1/chip(筹码:平均成本 / 获利比例 / 集中度)。

单只 ETF 的 7 类数据

同一个端点,用 kind 切换:

概览(默认)
行情 + 规模 + 折溢价 + 资金流 + 回撤 + 估值(59 字段)
判断"现在贵不贵、有没有资金在进"
详情
基金要素 + 费率 + 份额 + 基金经理 + 持仓 Top20(含 top20Ratio)
看产品本身:费率多少、跟踪谁、集中度多高
持仓
Top20 成分股及权重;加 date 则为历史持仓(重仓股 + 申赎清单前 10)
看它押注了什么
净值
历史单位净值(4 位小数)+ closePrice + 真实 navChange
算折溢价、做净值曲线(start/end 必填)
公司
管理人 / 托管人 / 跟踪指数
查发行方与标的指数
持有人
户数 + 机构 / 个人占比
看是散户盘还是机构盘
财务
资产配置:股 / 债 / 商品 / 基金占比
看它实际装了什么资产

三条能直接跑的例子

免费端点(/v1/kline、/v1/hot)无需 Key;/v1/etf、/v1/screen、/v1/index-constituent 需付费档。

# ① 找标的:全市场按规模排行(前 20)
curl "https://api.ashareapi.com/v1/screen?asset=etf&mode=ranking&type=size&limit=20&key=$KEY"

# ② 看单只:规模 / 折溢价 / 估值 一次拿全
curl "https://api.ashareapi.com/v1/etf?code=sh510300&kind=概览&key=$KEY"

# ③ 回看:那一天的折溢价与规模
curl "https://api.ashareapi.com/v1/etf?code=sh510300&kind=概览&date=2026-06-30&key=$KEY"

# ④ 看底层:跟踪指数的全量成分股(300 只)
curl "https://api.ashareapi.com/v1/index-constituent?code=sh000300&key=$KEY"

⚠️ 历史快照的两个上游边界:未来日期会按最近交易日返回(看返回行的 date 列自证,别当成拿到了未来);上市前的日期返回全 0(会被判 ok:false,不是接口坏了)。

Agent 拿这一页就能用

接成 MCP 工具后,Agent 可以直接答这些问题 —— 下面是从「用户问句」到「该调什么」的映射:

「有哪些 ETF / 规模最大的 ETF」
ashare_screen(mode="label", asset="etf") 或 mode="ranking"
不确定取值先 list=true,⛔ 不要猜 type
「510300 现在什么情况」
ashare_etf(code="sh510300", kind="概览")
折溢价看 etfDisc,规模看 etfSize
「6 月 30 日它折溢价多少」
ashare_etf(kind="概览", date="2026-06-30")
以返回行的 date 为准(未来日期会被回退)
「它持有什么 / 重仓股」
ashare_etf(kind="持仓") + ashare_index_constituent
Top20 带权重;全量成分用跟踪指数
「沪深300 有哪些成分股」
ashare_index_constituent(code="sh000300")
只收指数代码,个股/ETF 会 422
「ETF 走势 / 回测」
ashare_kline(code="sh510300", period="day")
默认前复权;要 nofq/hfq 走 ashare_kline_batch(专业版)
「ETF 资金在进还是出」
ashare_fund(code="sh510300")
主力净流入 + 5/10/20 日累计
「ETF 筹码/成本集中吗」
ashare_chip(code="sh510300")
平均成本 / 获利比例 / 集中度(ETF 也支持)

⚠️ Agent 的三个纪律:① ashare_etf 一次只查 1 只(传逗号 422);② 不要用 ashare_profile 查 ETF(只有代码/名称/上市日有值);③ ETF 不在两融名单,ashare_margin_trade 恒回 NOT_DISCLOSED,别当延迟重试。

全部接口(一个不落)

ETF 涉及 12 个端点 —— 4 个专用、8 个通用(用 ETF 代码直接调):

7 类单只数据 + 历史快照(date)
专业版
/v1/screen?asset=etf
1716 只:9 类横截面排行 + 48 主题池
标准版起
指数成分股全量(sh000300 → 300 只,无权重)
标准版起
/v1/hot?type=etf
ETF 热搜榜
免费
/v1/quote
实时行情(轻量 8 字段)
免费
K 线(默认前复权;分钟线标准版起)
免费
当日 / 近 5 日分时
标准版起
55 项技术指标(MA/MACD/KDJ/RSI/BOLL…)
专业版
资金流(主力净流入 + 多日累计)
专业版
筹码:平均成本 / 获利比例 / 集中度
专业版
/v1/search
名称 / 代码模糊搜索(消歧)
专业版
多只 ETF × 同一段时间(唯一能选复权口径的入口)
专业版

边界先说清(省你试错)

这四件事我们做不到,不是"没做好",是上游就没有:

申赎清单只给前 10

ETF 申赎清单(PCG)共 300 条,上游固定只显示前 10,--limit 无效。想看"持有什么",用 /v1/index-constituent 查跟踪指数的全量成分股(没有权重)。

ETF 分红没有明细

只有概览里的 divTtm / divTtmPct(近 12 月分红与股息率)。要定位除权日,可对比 kline 的 fq=qfq 与 fq=nofq 序列自己判断(fq 属付费档)。

因子 / 策略不能筛 ETF

/v1/screen 的 condition(因子表达式)与 strategy 只对股票生效;asset=etf 下 ranking 只有排序、没有条件过滤(上游会静默丢弃阈值)。替代:翻页取全量自己筛(limit=200 + offset,1716 只约 9 页)。

单次只查 1 只

/v1/etf 的 code 传逗号会 422 —— 上游的"多只"是串行跑,10 只要 20 秒,容易超时;多只请分别请求,每只独立计次。

常见问题

ETF 的复权价怎么拿?

/v1/kline 默认就是前复权(分红除权日不跳空),对看走势足够。要真实成交价(nofq)或后复权(hfq)用 /v1/kline-batch(专业版)—— 复权口径属付费档能力。

折溢价的历史数据有多长?

只要上游有该日数据就能取(实测 sh510300 2026-06-30 正常返回);太早的日期(早于上游覆盖范围)会返回全 0 并判 ok:false。

ETF 有融资融券吗?

没有。/v1/margin-trade 传 ETF 会恒回 NOT_DISCLOSED,那不是数据延迟,是该标的不在两融名单里。

能做 ETF 轮动策略吗?

能,数据齐了:全市场 9 类横截面指标(规模/估值/百分位/区间涨跌/换手/成交额/溢折率)+ 单只净值曲线 + 资金流。策略本身要你自己写 —— 我们只提供数据与验证。

想再深入

相关文档与端点说明:

用一只 ETF 试一下

/v1/kline 与 /v1/hot 免费无需 Key,接上就能看 ETF 走势;概览 / 历史快照 / 全市场排行需付费档。