mcpField
N
NCUA credit union data

NCUA credit union data

远程服务
github.com/bnovarini金融数据01 周前更新
代码仓库

关于 NCUA credit union data

ncua-data-analysis 将 NCUA 季度信用合作社报告整理为带说明的数据表和指标,并提供查询信用合作社及 FDIC 承保银行的 MCP 工具。它面向需要结构化行业数据的分析人员,支持同业比较和时间序列查询,无需直接处理宽表原始报告。

主要功能

  1. 01整理后的信用合作社季度数据
  2. 0252 项计算指标
  3. 03信用合作社资料和时间序列
  4. 04同业比较与筛选指标查询
  5. 05银行收入和指标工具
  6. 06含字段字典的 Parquet 数据

适用场景

  1. 01将机构与行业同业进行比较
  2. 02跟踪季度贷款和存款趋势
  3. 03查询信用合作社及银行指标
  4. 04分析银行季度收入

MCP 相关

MCP 服务提供信用合作社和银行的查找、资料、指标、时间序列、同业比较及季度收入工具。它可在本地通过 stdio 运行,也可使用托管的 Streamable HTTP 服务;查询为只读。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://ncua-data-analysis.fly.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

6
参数类型必填说明
limitinteger否
tableany否
searchany否

详细介绍

ncua-data-analysis

提供自 2018 年至今的 NCUA 季度信用合作社数据,经过清理并附有文档:涵盖贷款、存款构成、收益、人员配置和效率。

下方的 MCP 服务还涵盖 FDIC 承保的银行:包括两个行业的季度收入、效率、ROA 和同业基准分析。

NCUA 将每家联邦承保信用合作社的季度 5300 call report 作为免费批量文件发布。这些文件很难使用:超过 3,300 个账户列分散在 17 张宽表中,表单变更会导致账户位置变动,收入按年初至今统计,数据字典则是以表单说明的形式编写。本项目将这些数据整理为四张整洁的表,可通过 DuckDB、pandas 或任何能读取 Parquet 的工具进行查询。

状态:v0。包含 115 个精选字段和 52 个计算指标,共 34 个季度(2018 Q1 至 2026 Q2),并已与 NCUA 发布的官方总额核对。请参阅尚未完成的内容。

表

表粒度内容
dim_credit_union信用合作社 x 季度名称、所在地、特许类型、同业组、低收入和 MDI 标记,以及 is_federally_insured。
fact_call_report_curated信用合作社 x 季度115 个经过整理的账户值,采用直观的名称:资产负债表、股份和资本、存款构成(股份支票账户、普通账户、货币市场账户、定期存款、IRA、非成员存款)、各类贷款余额、贷款发放额、逾期贷款、冲销、损益表、员工和分支机构。
metrics信用合作社 x 季度52 个计算指标:逾期率、贷款与股份比率、ROA、NIM、贷款和存款构成、增长率、效率比率、每名员工的会员数和资产额、每家分支机构的数据,以及拆分为单季度值的收入。
dictionary列说明、单位、NCUA 账户代码,以及各字段有数据的首个和最后一个季度。

使用 quarter + cu_number 进行联接。金额字段的单位为美元。以 _ytd 结尾的字段表示年初至今的数据,每年 1 月重置(Q4 值为全年数据);metrics 会对这些字段进行年化处理。

-- Which large credit unions grew auto lending fastest last year?
SELECT d.name, d.state, m.auto_loan_growth_yoy, f.loans_new_vehicle + f.loans_used_vehicle AS auto_loans
FROM fact_call_report_curated f
JOIN dim_credit_union d USING (quarter, cu_number)
JOIN metrics m USING (quarter, cu_number)
WHERE f.quarter = '2026-06' AND d.is_federally_insured AND d.peer_group = 6
ORDER BY m.auto_loan_growth_yoy DESC LIMIT 10;

运行

pip install -e .
ncua-data all          # download 34 quarters (~270 MB), build tables, reconcile
python -m unittest discover -s tests

输出将以 Parquet 格式写入 data/out/。原始 ZIP 文件不会提交到版本库。链接从 NCUA 的季度数据页面抓取。

值得信赖的数据

2026 年 6 月和 2025 年 12 月的数据总计与 NCUA《季度信用合作社数据摘要》中的数据一致:信用合作社数量、会员人数、各类贷款、股金、净资产比率、逾期率、收入和支出。在六个年末(2021 年至 2026 年 6 月)的 67 项核对中,有 60 项一致。其余 7 项是历史存款数据,差异不到 0.5B 美元(不到 0.1%),例如 2025 年 12 月的货币市场存款为 367.5B 美元,而公布值为 368.0B 美元。2026 年 6 月的所有数据项都一致。可能的原因是 NCUA 表格中的历史数据经过了重述,但这一点尚未得到确认。完整表格:docs/RECONCILIATION.md。

我们使用 2018-Q3 至 2026-Q2 的全部 32 份季度摘要,对收益率比率进行了审计。合并 ROA、净利差和净核销率,以及贷款收益率、资金成本、利差和 ROA 的中位数,在分母采用前一年度 12 月与当前余额的平均值(即 *_ncua_ytd 字段)时,均与 NCUA 公布的数据一致。年初至今的年化比率每年 1 月都会重置,NCUA 自行公布的数据也是如此;*_quarterly 字段是这里推导出的单季度版本,并非 NCUA 公布的数据。详情和少数不一致之处:docs/RATIO_AUDIT.md。

使用前请注意:

  • 筛选 is_federally_insured。 NCUA 的原始文件中包含约 85 家由州政府特许、但未由 NCUA 承保的信用合作社。NCUA 公布的总计不包含这些机构。
  • 表格在 2022 年和 2023 年发生了变化。 NCUA 重新设计了报告,并采用了 CECL,因此有些账户不再存在,也有一些新账户出现。跨越这次变更的字段会映射两种账户代码(例如,CECL 实施前的准备金账户代码为 Acct_719,之后为 Acct_AS0048)。仅在变更后存在的字段会在数据字典中注明。
  • 净资产比率。 从 2023 年起,NCUA 公布的比率不包含 CECL 过渡准备金。本数据集保留了该准备金(cecl_transition_provision),且 metrics.net_worth_ratio_ex_cecl 与 NCUA 的数据一致。
  • 员工人数为估算值。 employees_fte_estimate 的计算方式为全职员工人数加上兼职员工人数的一半。这不是 NCUA 的定义,也未与任何公布数据核对。
  • 净核销率、ROA 和 NIM 使用 NCUA 自行计算的平均余额,这些数据并未公开。这里的指标使用四季度平均值,与 NCUA 公布的数据相差几个基点以内,但并不完全一致。
  • 合并。 自 2018 年以来,信用合作社数量从 5,375 家降至 4,214 家。合并后的信用合作社历史数据仍归属原特许编号,因此,跨越合并期比较单家机构的增长没有意义。
  • 报告由机构自行填报,有时会以“修订版”的形式重新发布。这里使用的是 NCUA 当前发布的 ZIP 文件。

尚未完成

  • 按类型划分的商业贷款逾期数据(NCUA 于 2022 年将这些数据移至新的账户代码)。
  • 更多字段。目标为 150 至 200 个;目前已收录并核验 115 个。
  • 2018 年之前的数据(下载链接使用另外两种命名模式)。
  • 静态分析网站和自然语言查询。该数据字典旨在作为其语义层。

MCP 服务(v1)

本地 MCP 服务可让 AI 助手用自然语言查询此数据集。它通过 stdio 运行,使用 DuckDB 读取发行版 Parquet 文件(仅下载一次至 ~/.cache/ncua-data-analysis),并根据字典表生成工具描述。

{
  "mcpServers": {
    "ncua-data": {
      "command": "uvx",
      "args": ["--from", "ncua-data-analysis", "ncua-data-mcp"]
    }
  }
}

此软件包发布在 PyPI:https://pypi.org/project/ncua-data-analysis/。若要改用最新的开发版本,请使用 "args": ["--from", "git+https://github.com/bnovarini/ncua-data-analysis", "ncua-data-mcp"]。

托管服务,无需安装: https://ncua-data-analysis.fly.dev/mcp(可流式传输的 HTTP、只读,每个客户端每分钟限 60 个请求)。将其添加为任何支持远程 MCP 服务的客户端中的远程 MCP 服务,例如 {"mcpServers": {"ncua-data": {"url": "https://ncua-data-analysis.fly.dev/mcp"}}}。

在 Cursor 中安装 在 VS Code 中安装 在 VS Code Insiders 中安装

Claude Code:claude mcp add --transport http ncua-data https://ncua-data-analysis.fly.dev/mcp

托管服务的使用日志

托管服务会在持久化的 SQLite 日志中记录请求时间戳、事件类型、工具名称、客户端名称/版本(如果提供)、请求耗时和结果状态。它不会存储查询参数、结果、IP 地址或 User-Agent 标头。未知工具名称会记录为 (unknown),并返回 JSON-RPC -32601(方法未找到);这与受支持工具发生的错误相互独立。

从此代码库部署

在代码库根目录中运行 fly deploy --config deploy/fly.toml。Docker 构建会以代码库根目录作为上下文,并将私有季度面板和银行面板(cu-quarterly/、bank-quarterly/)打包到镜像中,因此本地构建时如果缺少这些目录,会按设计失败。usagelog 卷挂载到 /data,用于保存使用日志和缓存的数据集;更新时请保留该卷。deploy/usage-start.py 会启动启用了日志记录的 HTTP 服务。此代码库不应包含凭据、使用数据库或数据集文件。

此服务涵盖两个行业,时间范围为 2018-03 至 2026-06。信用合作社工具:list_fields、find_credit_union、credit_union_profile、metric_series(单家信用合作社或所有机构的汇总)、peer_compare(按资产组、州或特许类型比较)、query_metrics(筛选、排序和限制;不支持原始 SQL)以及 cu_quarter_income(单季度收入,含经认证的合并事件标签)。银行工具:find_bank(按名称查找)、bank_quarter_income(FDIC 官方季度收入,含简单差值标记和 Quarterly Banking Profile 对账标签)、bank_metric_series(单家银行或汇总机构的效率、ROA、利润率和收入构成,可按州或资产档次筛选),以及 bank_peer_compare(将一家银行与其资产档次、所在州或两者进行比较)。银行比率采用与信用合作社指标相同的公式,因此跨行业比较有效。

季度收入和银行工具需要的面板文件已打包到托管镜像中,且不在此代码库内;在本地安装时,这些工具会返回托管端点的链接。将 NCUA_DATA_DIR 设为已下载文件所在文件夹即可使用。本地客户端可使用 stdio,托管端点支持可流式传输的 HTTP。此服务已列入官方 MCP 注册表,名称为 io.github.bnovarini/ncua-data-analysis。

下载

现成的 Parquet 文件附在 v0.1.1 发布版本中。GitHub 对发布文件设有 25 MB 的大小限制,因此 fact_call_report_curated 和 metrics 按年份拆分为三个部分(2018-2020、2021-2023、2024-2026),且列完全相同:

import duckdb
base = "https://github.com/bnovarini/ncua-data-analysis/releases/download/v0.1.1/"
parts = [base + f"metrics_{y}.parquet" for y in ("2018_2020", "2021_2023", "2024_2026")]
duckdb.sql(f"SELECT quarter, count(*) FROM read_parquet({parts}) GROUP BY 1 ORDER BY 1").show()

数据来源和许可证

数据:美国国家信用合作社管理局(NCUA)的 5300 季度申报数据。银行数据:通过 FDIC 的 BankFind API 获取的 FFIEC 中央数据存储库申报数据,并与 FDIC 季度银行概况进行核对。NCUA 未在下载页面说明许可证。由于这是美国联邦机构的作品,因此假定其属于公有领域,但尚未确认这一假设。使用时请注明 NCUA。

代码:MIT,详见 LICENSE。

银行员工人数和每 FTE 营收

托管版 MCP 包含 bank_metric_series(field="employees_fte_reported")、list_bank_fields 和 revenue_per_employee。生产率工具可比较总部位于某个州的银行、信用合作社或两者,并提供输入值、排名、同业中位数、分页和明确的排除项。

示例:revenue_per_employee(state="NC", cu_number=18297) 会将 Coastal 与同一季度符合条件且总部位于 NC 的机构进行比较。若要只比较单一行业,请使用 sector="credit_union" 或 sector="bank"。

净营收指利息收入减去利息支出,再加上非利息收入。总营收指利息收入加上非利息收入。该比率将年初至今营收年化后除以季度末 FTE。它是运行速率,并非实际全年营收、净利润,也不是营收除以平均员工人数。

信用合作社的 FTE 为我们的估算值:NCUA 全职员工人数(账户 564A)加上兼职员工人数(账户 564B)的一半。银行的 FTE 则由银行通过 FDIC NUMEMP 报告。由于定义不同,跨行业比较仅供参考。总部所在州并不意味着所有业务都在该州开展。外包、业务组合和合并都会影响比较结果。员工人数为空或为零,以及已知的报告范围变更,都会被排除并计数。

托管版银行员工人数面板涵盖 2018Q1 至 2026Q2。员工人数不是金额,也不会按 1,000 缩放。本地软件包不包含银行员工数据;使用托管端点,或在自托管时提供单独的面板。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。