Historical S&P 500标普500成分变动
该接口记录标普 500 指数成分的历史变动:公司何时被纳入或移出、变动原因、市值变化对成分的影响,用于分析指数构成与长期市场趋势的演变。
https://quote-fmp.com/stable/historical-sp500-constituent数据更新周期
1-3 Days
接口说明
- 纳入与移出:查询被纳入或移出标普 500 的公司历史记录,含日期与变动原因,调用后可呈现
dateAdded(加入日期)、addedSecurity(新增证券)与removedTicker(移除的标的代码) 等核心指标,辅助买方研究员快速核验标的基本面。 - 市值变化:追踪由市值变动驱动的指数成分调整,基于
addedSecurity(新增证券)与removedTicker(移除的标的代码) 等核心指标,省去多源报表口径折算与人工核对环节。 - 指数历史洞察:分析标普 500 成分随时间的演变,以及这些变化对市场表现的影响,研究端可将本接口与「纳斯达克指数成分变动」组合编排,覆盖从概览快照到历史序列的需求。
- 上下游关联接口:Stock Market Indexes List(指数清单) · Index Quote(指数实时报价) · S&P 500 Index(标普500成分股) · Nasdaq Index(纳斯达克指数)
调用代码示例
Python 关键代码标普500成分变动(/stable/historical-sp500-constituent,仅 apikey)返回 dateAdded(加入日期)、addedSecurity(新增证券)、removedTicker(移除的标的代码) 等 7 列(样本 dateAdded=June 29, 2026)。
resp = requests.get(
"https://quote-fmp.com/stable/historical-sp500-constituent",
params={"apikey": FMP_KEY},
timeout=15,
)
resp.raise_for_status()
df = pd.DataFrame(resp.json())
# 提取 标普500成分变动 核心列:dateAdded, addedSecurity, removedTicker, removedSecurity
df = df[["dateAdded", "addedSecurity", "removedTicker", "removedSecurity"]].dropna(how="all")参数使用和避坑
3 组参数组合 · 2 条避坑以下列出本接口在高频投研与回测场景下的常用 Query 参数组合写法:
| 投研场景 | Query 参数组合示例 | 返回数据特征与用途 |
|---|---|---|
| 一次性拉取全量标普500成分变动初始化本地主表 | GET /stable/historical-sp500-constituent(免参数) | 该接口不吃 Query 条件:请求 /stable/historical-sp500-constituent 直接下发全表 7 列,dateAdded、addedSecurity、removedTicker 全在其中。 |
| 以 symbol 为唯一键覆盖写入,避免全表重复 | GET /stable/historical-sp500-constituent → upsert on symbol | 落库键选 symbol(如 HONA),7 列逐行覆盖;同模块没有带参接口,想补单条只能再拉一次全表。 |
| 落库后自检:symbol 唯一性与 dateAdded 空值率 | GET /stable/historical-sp500-constituent → count(distinct symbol) / null_ratio(dateAdded) | 先用 symbol 去重计数校验 7 列是否完整落库,再看 dateAdded(样本 June 29, 2026)的空值率;两者都正常才认为该批次可用。 |
请求 /stable/historical-sp500-constituent 获取标普500成分变动需传入免业务参数;返回数组涵盖 dateAdded(June 29, 2026)与 addedSecurity(Honeywell Aerospace Inc),做时间序列差分前请先核对排序方向。
在 /stable/historical-sp500-constituent 的返回结构中,dateAdded(June 29, 2026)构成核心标识载荷,本地表以 (symbol, date) 保证幂等入库。
返回数据
7 个字段本接口示例响应共包含 7 个字段(数值型 0 个,文本/日期/布尔型 7 个)。下表列出全部字段名、类型、首条记录真实样本值与中文释义,实际返回会因接口与数据状态有所不同。
| 字段 | 类型 | 示例值 | 说明 |
|---|---|---|---|
dateAdded | string | "June 29, 2026" | 加入日期 |
addedSecurity | string | "Honeywell Aerospace Inc" | 新增证券 |
removedTicker | string | "CAG" | 移除的标的代码 |
removedSecurity | string | "Conagra Brands" | 移除证券 |
date | string | "2026-06-29" | 日期 |
symbol | string | "HONA" | 证券代码 |
reason | string | "Market Capitalization Changes" | 调整原因 |
查看响应数据示例(原始 JSON)
[
{
"dateAdded": "June 29, 2026",
"addedSecurity": "Honeywell Aerospace Inc",
"removedTicker": "CAG",
"removedSecurity": "Conagra Brands",
"date": "2026-06-29",
"symbol": "HONA",
"reason": "Market Capitalization Changes"
}
]常见问题解答(FAQ)
2 个问题/stable/historical-sp500-constituent 端点(标普500成分变动)的参数设计与同模块的 纳斯达克指数成分变动 有什么区别?
工程上常将两者配合:用 标普500成分变动(/stable/historical-sp500-constituent,免业务参数)拉取 dateAdded 与 addedSecurity 等 7 列,同时用 Historical Nasdaq(纳斯达克指数成分变动)补充 7 列关联信息。
使用 /stable/historical-sp500-constituent 采集标普500成分变动构建因子库,推荐的请求切片方式是什么?
采集 /stable/historical-sp500-constituent 的核心技巧是每日定时调用一次 /stable/historical-sp500-constituent 将全量字典同步至本地;这能确保 标普500成分变动 的 dateAdded 与 addedSecurity 连续完整且无截断遗漏。
同模块相关接口对比
Historical Constituents本接口路径 /stable/historical-sp500-constituent,无必填参数。 同一模块「Historical Constituents」下共 3 个接口,下表列出其余 2 个, 按粒度与查询维度对比,避免选错接口。
| 接口 | 路径 | 核心差异与适用场景 |
|---|---|---|
| 纳斯达克指数成分变动Historical Nasdaq | /stable/historical-nasdaq-constituent | 记录纳斯达克指数成分的历史变动,哪些公司在何时被纳入或移出、变动原因 |
| 道琼斯指数历史Historical Dow Jones | /stable/historical-dowjones-constituent | 记录道琼斯工业平均指数的成分股变动,包括哪些公司被纳入或剔除、变动原因和相关日期 |