查历史数据:中证指数与FRED怎么用
两个可复跑的取数入口:中证指数官方接口与 FRED CSV,配一套假行清洗与交叉核对判定——命令、行数、口径、核对日期四样齐全,数字才准进决策。
查历史数据 · 中证指数接口 · FRED取数 · 行情数据自己算
A 级
你要自己核一个历史行情数字(某年最大单日跌幅、某事件当日收盘、某序列起点),而不是引用二手转述的时候。
1010 分钟(一次完整查询:取数、清洗、算环比、交叉核对,产出 1 条可复跑笔记 10 分钟(一次完整查询:取数、清洗、算环比、交叉核对,产出 1 条可复跑笔记;本站实测口径);缺 1 样(命令、行数、口径、核对日期)就只是谈资完整口径
用日期特征过滤假行、窗口起点早于覆盖起点还继续算——首行是克隆行,累计跌幅与均线全被污染;同一天跨口径引用也一定出错。
怎么做
什么时候用:你要自己核一个历史行情数字——某年某指数的最大单日跌幅、某个事件当天的收盘、某序列的起点——而不是引用二手转述的时候;以及看到「那年跌了四成」这类说法、想复算的时候。这条给你两个本站可复跑的入口和一套清洗判定。
步骤
- 选源:A 股指数(上证、沪深 300、中证系列)走中证指数官方接口;海外长序列走 FRED CSV;规则与公告不走这两个口(见 查规则只去这三个地方);
- 中证接口三件事:带 Referer 头、日期格式为 YYYYMMDD、窗口不要早于覆盖起点;
- 清洗:先做假行检测,再剔 OHLC 全 null 的占位行(判定见下表);
- 算完之后做三查:与站内已核条目交叉、与已知量级对照、口径写明(哪个指数、收盘还是盘中、单日还是区间);
- 记录:命令原文、返回行数、清洗动作、结论、核对日期——四样不全的笔记等于没记。
入口一:中证指数官方接口(A 股指数)
| 项 | 内容 |
|---|---|
| 入口 | https://www.csindex.com.cn/csindex-home/perf/index-perf?indexCode=<代码>&startDate=<YYYYMMDD>&endDate=<YYYYMMDD> |
| 请求头 | 带 Referer: https://www.csindex.com.cn/;本站 2026-10-12 实测 HTTP 200 |
| 常用代码 | 000001 上证综合指数;000300 沪深 300 |
| 覆盖起点 | 000001 约 2000-07-03;早于起点的窗口返回 0 行(实测 19900101–19991231 的返回 data 为空数组) |
| 返回字段 | tradeDate / open / high / low / close / change / changePct / tradingVol / tradingValue |
返回字段说明(口径写在笔记里,比数字更重要):
| 字段 | 含义 | 注意 |
|---|---|---|
tradeDate | 交易日 | 假行就假在这个字段——先检测再使用 |
open / high / low / close | 开 / 高 / 低 / 收 | OHLC 同时为 null 的是占位行,剔除 |
change / changePct | 涨跌点 / 涨跌幅(对前一交易日收盘) | 引用「单日跌幅」用它前,先确认它是收盘口径还是盘中低口径——字段本身是收盘对收盘 |
tradingVol | 成交量(股 / 手,以接口为准) | 与成交额 tradingValue(亿元)不要混用 |
consNumber / peg | 成分股数量 / 市盈率(部分序列有) | 估值字段随官方计算规则调整,跨年比较前先看口径 |
假行机制与清洗(本站制最重要,错了后面全错)
- 什么是假行:接口会把首行的
tradeDate改写成本次请求的startDate,而值是首个真实交易日数据的克隆。两种触发情形:①startDate早于覆盖起点——哪怕它本身是交易日也中招(实测:2000-06-30 周五为交易日,窗口20000630–20001231仍返回首行20000630与次行20000703六字段全等);②startDate是非交易日(实测:窗口20151205–20151211的周六起点,首行20151205克隆了20151207的全部数值); - 检测式(2026-10-12 复跑):
rows[0].tradeDate == startDate是假行的必要条件,但不是充分条件——startDate本身就是区间内交易日时,首行也满足它(实测:startDate=20151201为周二交易日,首行close 3456.31与次行3536.91不同,是真行)。判别只有一句:rows[0]与rows[1]六字段全等 → 假行,剔除rows[0];不全等 → 真行,保留; - 另剔占位行:OHLC 为 null 的行(实测:
20180618的open/high/low为 null、close 3021.9等于前一交易日收盘); - 不得用
endswith('0101')过滤:假行取决于窗口起点,不固定在一月一日;按日期特征过滤会漏掉周末起点与任意非交易日起点,还会误伤真实交易日。
入口二:FRED CSV(海外序列)
| 项 | 内容 |
|---|---|
| 入口 | https://fred.stlouisfed.org/graph/fredgraph.csv?id=<序列ID> |
| 请求头 | 不需要浏览器 UA——本站 2026-10-12 裸 curl 实测 HTTP 200(与 sec.gov 相反,那边必须带 UA,否则 403) |
| 常用序列 | SP500(标普 500)、DGS10(十年期美债收益率)、T10Y2Y(期限价差) |
| 回溯限制 | SP500 只回溯约 10 年(实测序列首行 2016-10-10);更早的标普数字本环境取不到,标「需人工核对」或换源 |
| 注意 | FRED 是圣路易斯联储整理的二手序列,每个序列页有原始来源说明;引用时把序列 id 一起记下 |
本环境已知不可用的源(2026-10-12 实测,列出来是为了让你不浪费时间重试):若干海外统计站点持续 403 / 429(imf.org、bls.gov、cbo.gov、gao.gov、adb.org、spglobal.com、fraser.stlouisfed.org、Yahoo);web.archive.org 持续 429;stooq 返回假 200(一个挑战页,不可用)。这些源取不到一手,引用它们的内容时标「需人工核对」,不要拿缓存页或二手整理稿充当一手。sec.gov / data.sec.gov 可访问但必须带 User-Agent: <name> <email> 请求头,否则 403——与 FRED 恰好相反,两个请求头纪律不要记混。
算例(操作实录,可复跑:命令与返回均为本站 2026-10-12 实测。查的是公开指数序列、不指向任何公司或个股——全站算例纪律禁的是「把假设数字安到真实公司上」,本例相反,数字全部来自实测,这也是本条能标 A 级的原因)
任务:查上证综合指数 2016 年 1 月的最大单日跌幅。
| 步 | 动作 | 命令 / 操作 | 结果 |
|---|---|---|---|
| 1 | 定窗口 | 查 2016-01,窗口取 20151201–20160229(多留一个月作缓冲) | — |
| 2 | 取数 | curl -s -H "Referer: https://www.csindex.com.cn/" "https://www.csindex.com.cn/csindex-home/perf/index-perf?indexCode=000001&startDate=20151201&endDate=20160229" | HTTP 200,返回 59 行 |
| 3 | 假行检测 | rows[0].tradeDate=20151201 等于 startDate,但与 rows[1](20151202,close 3536.91)字段不全等(首行 close 3456.31) | 判定:真行,不剔 |
| 4 | 占位行检测 | 全窗口无 OHLC 为 null 的行 | 无需剔除 |
| 5 | 算环比 | 对 2016-01 的行逐日算 close ÷ 前一日 close − 1 | 最大单日跌幅在 2016-01-07:收 3125.00,前收 3361.84,−7.04% |
| 6 | 交叉核对 | 与站内 2015到2016:杠杆牛和四次熔断 的 A 级数字对照 | 一致(该条载明上证 2016-01-07 收 3125.00、收盘口径 −7.04%) |
| 7 | 记录 | 命令原文、行数、清洗判定、结论、核对日期写进笔记 | 可复跑笔记一条 |
判定标准:本例过了三查——与站内已核条目一致;量级与「熔断日」的已知背景相符;口径写明(收盘口径、单日、上证综合指数)。若某一步对不上,先查口径再查数:比如算出 −6.93%,那是沪深 300 的口径、不是上证(两个指数的同日数字见 2015到2016:杠杆牛和四次熔断 的四口径对照表)。
再走一个边界判定(同为实测):若把窗口改成 19900101–19991231,返回 0 行——判定是「早于覆盖起点,换源或标需人工核对」,而不是「那年没跌」。把三种窗口起点放在一起记:
| 窗口起点 | 返回 | 判定 |
|---|---|---|
| 早于覆盖起点(1990-01-01) | 0 行 | 换源或标「需人工核对」 |
| 非交易日(2015-12-05 周六) | 首行克隆次日 | 假行,剔除 rows[0] |
| 区间内交易日(2015-12-01 周二) | 首行是真实数据 | 真行,保留——date 相等不等于假行 |
三查(数字算出来之后、写进笔记之前)
- 与站内已核条目交叉:同一天、同一指数、同一口径,站内 A 级条目(如 2015到2016:杠杆牛和四次熔断)的数字应当一致;不一致先怀疑自己的窗口或口径;
- 与制度量级对照:本接口对
000001的覆盖起点约 2000-07-03,晚于主板涨跌幅限制的实施(现行幅度以 查规则只去这三个地方 的原文为准)——在覆盖区间内算出单日 −15%,一定是窗口或口径错了,不是发现了新纪录; - 口径写明:指数名称、收盘还是盘中低、单日还是区间、是否含分红——四个字段缺一个,这个数字就不能进入决策。
常见错
- 用
endswith('0101')或任何日期特征过滤假行——假行跟着窗口起点走,周末起点、非交易日起点都会产生假行,特征过滤必漏; - 窗口起点早于覆盖起点还继续算——首行是克隆行,累计跌幅、均线全部被污染,且污染量随窗口起点前移而变大;
- 跨口径引用——同一天,上证收盘 −7.04%、沪深 300 收盘 −6.93%、上证盘中低 −7.32%,混用即错(完整对照见 2015到2016:杠杆牛和四次熔断);
- 用 FRED 取二十年的标普——序列只回溯约十年,取到的是截断数据,先看首行日期再算区间;
- 只记结论不记命令——下次核对要从笔记里直接复跑;记不下命令原文的笔记,等于把「可复算」换成了「相信我」。
做完你会得到:一条可复跑的数据笔记,含五个字段:命令原文、返回行数、清洗动作(剔了哪几行、为什么)、结论数字(带口径)、交叉核对来源与核对日期。
怎么算过关:对任何一个「某年某指数最大单日跌幅」的问题,你能在十分钟内给出:命令、返回行数、清洗判定、一个带口径的数字、以及它与哪条已核来源一致。报不出命令原文 = 你查的是转述,不是数据。
说人话
是什么:查历史数据就是自己动手把「那年跌了多少」算出来,而不是抄别人转述的数。工具有两个:中证指数的官方接口管 A 股指数,圣路易斯联储的接口管海外序列。难的地方不是取数,是清洗——接口在某些情况下会还你一行假数据,不剔掉,后面全错。
为什么发生:假行的来由是:你问的起始日期比它有的数据还早,或者起始那天根本不开盘,它就把最早那行真实数据的日期改成你问的日期还给你——日期像真的,内容是别一天的。所以光看日期判不出来,必须再看一眼这行的开盘价、收盘价和第二天是不是一模一样,一模一样的就是假的。而早于起点的年份,它一行都不给——这不是「那年没跌」,是「它没有」。
什么时候不成立:两种情形。其一,官方接口给的是指数行情,不含公司财务、不含个股——后者走披露平台(见 查一家上市公司的基本盘 与 查基金与公司基本面);其二,清洗规则只对这两个接口负责,换任何数据源都要重新摸一遍脾气,包括那些本站打不开的站点——取不到就标「需人工核对」,不要拿二手转述充一手。
收益
量级(口径:时间):一次完整查询(取数、清洗、算环比、交叉核对)在本站实测 10 分钟内完成,产出 1 条可复跑笔记;相比之下,转述数字的纠错成本发生在你已经用它做完决策之后。这个数怎么用:把「引用的每个行情数字」都换成这条流程的产物——命令、行数、口径、核对日期 4 样齐全,才允许它进入你的决策;4 样缺一样,它对你的价值就只是谈资。
来源
- (A 级,本站一手复算)中证指数官方接口:入口、Referer 头、假行机制、占位行、覆盖起点均于 2026-10-12 实测。算例命令即上表第 2 步;补充实测:窗口
20000630–20001231首行与次行六字段全等(假行);窗口20151205–20151211首行克隆次日(周末起点假行);窗口20180611–20180622中20180618的 OHLC 为 null、close等于前一交易日;窗口19900101–19991231返回空数组; - (A 级,本站一手复算)FRED CSV:
https://fred.stlouisfed.org/graph/fredgraph.csv?id=SP500裸 curl(不带 UA)HTTP 200,序列首行 2016-10-10(约十年回溯); - 算例结果(上证 2016-01-07 收 3125.00、收盘口径 −7.04%)与站内 A 级条目 2015到2016:杠杆牛和四次熔断 交叉一致;熔断日两个指数的四口径对照(收盘 / 盘中低)以该条来源节为准,可直接引用、不必重算;
- 接口字段与返回结构以官方页面现行版本为准;站点改版时重跑本条命令验证。核对于 2026-10-12。
备注
- 适用前提:覆盖「指数行情」这一层;个股财务、基金合同、规则条款不在本条接口范围(分别见 查一家上市公司的基本盘、查基金与公司基本面、查规则只去这三个地方);
- 已知反例:真实情形:本环境实测中,若干海外统计站点持续限流或返回挑战页(取不到一手)——这恰好说明本条的价值:把「能复算的」与「需人工核对的」分开标注,而不是混为一谈;反例推翻的是「任何数字都能自己算」,不是「能算的也要算」;
- 关联条目:2015到2016:杠杆牛和四次熔断(算例的交叉核对来源,A 级四口径对照)、A股长期收益与回撤(长期年化与最大回撤的官方口径数字)、1997亚洲金融危机:从泰铢到韩元 与 泡沫的共同结构:五次崩盘里的同一套剧本(历史叙事的数字底账)、近因偏差:最近三个月不代表市场(为什么查长序列而不是最近三个月)、查规则只去这三个地方(规则与公告层)、查基金与公司基本面(基金与公司层);
- 有效期:接口可达性核对于 2026-10-12;官方站点改版后命令可能失效,失效时回到入口页重新定位,不要改数字迁就命令;
SP500的回溯窗口随当前日期滚动(约十年),每次引用先看首行日期。核对于 2026-10-12。