可作为 MCP 工具调用:etf_lookup —— 可在 Claude / Cursor / 任意 MCP 客户端中直接使用。详见 MCP Server 60 秒配置。
已上线
免费 · 0 credit
它为 Agent 做什么
etf_lookup 用来先回答“一只 ETF 到底是什么”。它会返回基金名称、发行方、资产类型、SEC 注册信息,以及最新或某个日期前已经公开的持仓申报。它还会给出前几大持仓和行业 / 国家 / 资产类型分布,方便 agent 判断要不要继续拉完整持仓表。
它不查价格。ETF 历史价格请用 equity_historical_prices,因为 ETF 价格走和股票一样的日线接口。如果要回看某个日期以前已经公开的持仓,传 as_of=YYYY-MM-DD;返回的是那天以前最近一份公开申报,不是基金公司当天内部持仓。
不在当前支持名单里的 ticker(例如 IBIT / DRAM)也会返回 200 OK,并通过 coverage_status="unsupported" 和 coverage_notice 明确告诉你暂不支持,不会用空结果假装查到了数据。
返回值
ETF ticker,服务端会转成大写,例如 SPY。
基金显示名称。coverage_status="unsupported" 时为 null。
基金发行方 / 管理方(如 State Street、Vanguard、Invesco、BlackRock)。
equity / fixed_income / commodity / crypto / multi_asset / other。
基金分类标签(如 Large Blend、Semiconductors)。
SEC Investment Company Series ID。
费用率。来自 SEC 公开申报;可能为 null。
相对 NAV 的溢价 / 折价,可能为 null。
这份申报里的持仓条数。可用它判断要不要再调用 etf_holdings。
资产类型分布(equity / fixed_income / cash / derivative / …),可能为 null。
数据标记(如 sec_nport)。暂不支持的 ticker 也会带,用来说明查找路径。
这份公开申报对应的日期(YYYY-MM-DD)。如果传了 as_of,这里是 <= as_of 的最近可用日期。不是抓取时间,也不等于“今天”。
LLMQuant Data 上次更新这只 ETF 基本资料和持仓摘要的 ISO 时间戳。
如果数据已经偏旧,或者本次刷新只能返回较旧可用数据,这里是 true。
full / partial / stale / unsupported 之一。含义见 覆盖说明。面向用户和 agent 的说明:当前支持到什么程度,或者为什么暂不支持。始终返回。
200 OK · etf_lookup(supported)
{
"data": {
"ticker": "SPY",
"fund_name": "SPDR S&P 500 ETF Trust",
"issuer": "State Street",
"asset_class": "equity",
"category": "Large Blend",
"cik": "0000884394",
"series_id": "S000004310",
"class_id": "C000012075",
"expense_ratio": 0.0945,
"aum": null,
"nav": null,
"market_price": null,
"premium_discount_pct": null,
"inception_date": "1993-01-22",
"holdings_count": 503,
"top_holdings": [
{ "ticker": "AAPL", "holding_name": "APPLE INC", "weight": 0.071 },
{ "ticker": "MSFT", "holding_name": "MICROSOFT CORP", "weight": 0.065 }
],
"sector_exposure": [
{ "sector": "Information Technology", "weight": 0.297 },
{ "sector": "Financials", "weight": 0.135 }
],
"country_exposure": [{ "country": "US", "weight": 0.99 }],
"asset_type_exposure": [{ "asset_type": "equity", "weight": 0.995 }],
"source": "sec_nport",
"source_url": "https://www.sec.gov/files/dera/data/form-n-port-data-sets/2019q4_nport.zip#FUND_REPORTED_HOLDING.tsv",
"as_of_date": "2019-09-30",
"fetched_at": "2026-05-12T03:14:00Z",
"stale": false,
"coverage_status": "full",
"coverage_notice": "Latest available SEC regulatory disclosure snapshot. Not the issuer's daily latest holdings."
},
"meta": { "creditsUsed": 0, "remainingCredits": 100 }
}
200 OK · etf_lookup(不在覆盖范围)
{
"data": {
"ticker": "IBIT",
"fund_name": null,
"issuer": null,
"asset_class": null,
"category": null,
"cik": null,
"series_id": null,
"class_id": null,
"expense_ratio": null,
"aum": null,
"nav": null,
"market_price": null,
"premium_discount_pct": null,
"inception_date": null,
"holdings_count": null,
"top_holdings": null,
"sector_exposure": null,
"country_exposure": null,
"asset_type_exposure": null,
"source": "sec_nport",
"source_url": null,
"as_of_date": null,
"fetched_at": null,
"stale": false,
"coverage_status": "unsupported",
"coverage_notice": "IBIT is not in the current covered ETF list. As a spot Bitcoin trust, its SEC disclosure path differs from the conventional ETFs we cover today; we may add a dedicated path later."
},
"meta": { "creditsUsed": 0, "remainingCredits": 100 }
}
覆盖说明
coverage_status | 表示什么 | stale |
|---|
full | 当前支持这只 ticker;基本资料和持仓申报都能返回。 | false(通常) |
partial | 当前支持这只 ticker,但有些字段拿不到;缺失字段返回 null。 | false / true |
stale | 曾经有数据,但最近刷新失败或数据已经偏旧,所以返回较旧可用数据。 | true |
unsupported | 当前不支持这只 ticker。仍返回 200 OK,但会明确说明原因。 | false |
先看 coverage_status 再读其他字段:如果是 unsupported,不要把空字段理解成“这只 ETF 真的没有持仓”。
配合 etf_holdings 使用:如果只看概览,etf_lookup 返回的前几大持仓通常够用;只有需要完整持仓、具体权重,或比较两只 ETF 的重合持仓时,再调 etf_holdings。
lookup 不扣 credit,但仍会记一条使用记录。可以先用它确认这只 ETF 是否支持,再决定要不要调用会扣费的 etf_holdings。
当前限制
覆盖范围有限。目前只支持一批热门 ETF(如 SPY、QQQ、VTI、SOXX、ARKK)。不支持的 ticker 会返回 coverage_status="unsupported",不会静默返回空结果。我们还不覆盖整个美国 ETF 市场。
这是公开申报数据,不是每日持仓。持仓和分布来自 SEC 公开数据集,通常会比真实持仓晚几十天到约 60 天。as_of_date 是申报报告日,不是“今天的持仓”。
IBIT / DRAM 当前暂不支持。IBIT 是现货 BTC trust,披露路径和当前支持的传统 ETF 不一样;DRAM 在当前样本里没有可靠映射。现在请预期它们返回 coverage_status="unsupported"。
仅使用监管披露。基金公司的 fact-sheet PDF 暂不用于这个接口,所以 expense_ratio / aum / nav / market_price / premium_discount_pct 可能为 null。
直接调用
// 按日期回看 —— 取 2025-10-01 当天或以前最近一份申报
{
"method": "tools/call",
"params": {
"name": "etf_lookup",
"arguments": { "ticker": "VTI", "as_of": "2025-10-01" }
}
}
// 不支持的 ticker —— 200 OK,coverage_status="unsupported"
{
"method": "tools/call",
"params": {
"name": "etf_lookup",
"arguments": { "ticker": "IBIT" }
}
}
完整参数参考
美国上市 ETF ticker(如 SPY、QQQ、VTI、SOXX、ARKK)。大小写不敏感;服务端会转成大写并去掉前后空格。只接受 A-Z、0-9、.、-。暂不支持的 ticker 返回 200 OK 和 coverage_status="unsupported"。
可选报告日期,格式 YYYY-MM-DD。返回 as_of_date <= as_of 的最近一份公开申报;不传则返回最新可用申报。
相关接口
ETF 持仓明细
单只 ETF 的完整持仓表,按权重从高到低返回。
MCP Server 接入
60 秒把 Claude / Cursor 等客户端接上。