mcpField
F
fred-macro

fred-macro

github.com/gauss314数据与数据库252359 次安装20 周前更新
代码仓库

关于 fred-macro

fred-macro 提供通过 FRED API 搜索和下载宏观经济时间序列的脚本与指南,适用于处理经济数据的用户,支持查找序列、获取元数据及导出 CSV、JSON 或 Parquet。

主要功能

  1. 01按文本、类别或标签搜索序列
  2. 02获取历史观测值和元数据
  3. 03将序列下载为 CSV、JSON 或 Parquet
  4. 04按预设类别批量下载

适用场景

  1. 01获取 GDP、通胀或就业时间序列
  2. 02查找适用于研究问题的 FRED 序列
  3. 03下载多个序列用于本地分析

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gauss314/skills --skill fred-macro

安装后在 Claude Code 中输入/fred-macro确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
API_REFERENCE.md
SERIES_REFERENCE.md
scripts/
download_multiple.py
fetch_series.py
search_series.py

详细介绍

FRED Macro — Federal Reserve Economic Data API

圣路易斯联邦储备银行(FRED)提供的免费官方 API,包含 840,000+ 个宏观经济时间序列:GDP、通胀(CPI/PCE)、利率、就业、M2、VIX、美国国债、抵押贷款等。

Base URL: https://api.stlouisfed.org/fred 官方文档: fred.stlouisfed.org/docs/api/fred/


身份验证

获取 API Key(免费)
  1. 访问:https://fred.stlouisfed.org/docs/api/api_key.html
  2. 创建免费账户(邮箱 + 密码)
  3. 申请 API key(立即生成)
  4. 无需信用卡
使用 API Key
import os
API_KEY = os.getenv("FRED_API_KEY")  # Recomendado
# o directamente para pruebas:
# API_KEY = "TU_API_KEY_AQUI"

⚠️ 切勿将 API key 硬编码到共享代码或提交记录中。


速率限制

限制值
每分钟请求数120 req/min
每日请求数不限(未明确设置每日上限)
每个请求的最大观测值数量100,000
每个请求的最大序列数取决于端点(通常为 1)
费用完全免费
建议
  • 在本地缓存响应(宏观经济数据更新频率较低)
  • 使用 observation_start 和 observation_end 限定日期范围
  • 如果收到 HTTP 429(请求过多),使用退避策略重试
  • 下载多个序列时,每次请求间隔 0.5s

主要端点

序列和观测值
端点描述身份验证
GET /fred/series/observations某个序列的历史值API Key
GET /fred/series/search按文本搜索序列API Key
GET /fred/series某个序列的元数据API Key
GET /fred/series/categories某个序列的类别API Key
GET /fred/series/release与某个序列关联的 releaseAPI Key
类别和 Release
端点描述
GET /fred/category某个类别的信息
GET /fred/category/children子类别
GET /fred/category/related相关类别
GET /fred/category/series某个类别中的序列
GET /fred/release某个 release 的信息
GET /fred/release/dates某个 release 的日期
GET /fred/release/series某个 release 中的序列
Tags(标签)
端点描述
GET /fred/tags搜索标签
GET /fred/related_tags相关标签
GET /fred/tags/series带有特定标签的序列
GET /fred/series/tags某个序列的标签
数据来源(Sources)
端点描述
GET /fred/sources数据来源列表
GET /fred/source某个数据来源的信息
日历映射
端点描述
GET /fred/series/updates最近更新的序列
GET /fred/seasonal/adjustments季节性调整选项

响应格式

默认返回 XML。可通过 &file_type=json 切换为 JSON:

{
  "realtime_start": "2026-06-01",
  "realtime_end": "2026-06-01",
  "observation_start": "1954-07-01",
  "observation_end": "2026-06-01",
  "units": "lin",
  "count": 864,
  "observations": [
    {
      "realtime_start": "2026-06-01",
      "realtime_end": "2026-06-01",
      "date": "1954-07-01",
      "value": "."
    },
    {
      "realtime_start": "2026-06-01",
      "realtime_end": "2026-06-01",
      "date": "1954-10-01",
      "value": "126.8"
    }
  ]
}

注意: "." 表示数据不可用(N/A)。


系列类别

FRED 系列按类别(数字 ID)组织:

ID类别示例
0所有类别(根类别)—
32991人口、就业与劳动力市场UNRATE, PAYEMS, NFP
32992国民收入与产品账户GDP, GDPC1, GNP
32993消费者价格指数(CPI)CPIAUCSL, CPILFESL
32994生产者价格指数(PPI)PPIACO, PPIFIS
32995利率FEDFUNDS, DGS10, DGS2
32996货币、银行与金融M2SL, M1SL, TOTBKCR
32997国际贸易BOPGSTB
33000美国区域数据各州统计数据
33001学术数据学术数据

完整参考请见 references/SERIES_REFERENCE.md。


快速上手

1. 下载一个系列(Python)
import requests

API_KEY = "TU_API_KEY"
url = "https://api.stlouisfed.org/fred/series/observations"
params = {
    "series_id": "GDP",
    "api_key": API_KEY,
    "file_type": "json",
    "observation_start": "2020-01-01",
    "observation_end": "2025-12-31"
}
r = requests.get(url, params=params)
data = r.json()
for obs in data["observations"]:
    if obs["value"] != ".":
        print(obs["date"], obs["value"])
2. 按关键词搜索系列
params = {
    "api_key": API_KEY,
    "file_type": "json",
    "search_text": "inflation",
    "search_type": "full_text",  # o "series_id"
    "limit": 10
}
r = requests.get("https://api.stlouisfed.org/fred/series/search", params=params)
3. 使用 pandas
import pandas as pd
import requests

def fetch_fred(series_id, api_key, start="2020-01-01"):
    url = "https://api.stlouisfed.org/fred/series/observations"
    params = {"series_id": series_id, "api_key": api_key,
              "file_type": "json", "observation_start": start}
    r = requests.get(url, params=params)
    df = pd.DataFrame(r.json()["observations"])
    df["date"] = pd.to_datetime(df["date"])
    df["value"] = pd.to_numeric(df["value"], errors="coerce")
    return df.set_index("date")["value"]

gdp = fetch_fred("GDP", API_KEY)
cpi = fetch_fred("CPIAUCSL", API_KEY)
fedfunds = fetch_fred("FEDFUNDS", API_KEY)

可用脚本

脚本描述
fetch_series.py将一个或多个 FRED 系列下载为 CSV/JSON/Parquet
search_series.py按文本、类别或标签搜索 FRED 系列
download_multiple.py按类别下载预定义批次的系列

核心系列(主要指标)

系列描述频率
GDP名义 GDP(十亿美元)季度
GDPC1实际 GDP(链式美元,十亿美元)季度
CPIAUCSL整体 CPI(所有项目)月度
CPILFESL核心 CPI月度
PCEPILFE核心 PCE月度
FEDFUNDS联邦基金利率日度
DFF联邦基金有效利率日度
DGS1010 年期美国国债收益率日度
DGS22 年期美国国债收益率日度
T10Y2Y10 年期与 2 年期利差(收益率曲线倒挂)日度
UNRATE失业率月度
PAYEMS非农就业人数(Nonfarm Payrolls)月度
M2SLM2 货币供应量月度
M1SLM1 货币供应量月度
VIXCLSVIX(标普 500 波动率)日度
BAA10YBAA 与 10 年期国债利差(信用利差)日度
TOTALSA零售销售额月度
INDPRO工业生产月度
HOUST新屋开工数月度
MORTGAGE30US30 年期抵押贷款利率周度

完整参考:references/SERIES_REFERENCE.md(记录了 100 多个系列)。


最佳实践

  1. 缓存数据:宏观数据不会频繁变化;可保存为本地 Parquet/CSV
  2. 使用 file_type=json:比 XML 更容易解析
  3. 按日期筛选:使用 observation_start,避免下载不必要的历史数据
  4. 处理 "." 值:表示数据不可用(NaN)
  5. 速率限制:120 次请求/分钟 = 至少每 0.5 秒发送 1 次请求
  6. API 密钥:使用环境变量 FRED_API_KEY
  7. 注明来源:商业应用必须包含“This product uses the FRED API but is not endorsed or certified by the Federal Reserve Bank of St. Louis”

评论

支持 Markdown