NCUA credit union data について
ncua-data-analysis は、NCUA の信用組合の四半期報告を説明付きテーブルと指標に整理し、信用組合と FDIC 保険対象銀行を照会する MCP ツールを提供します。生の幅広い報告書を直接扱わず、業界データの同業比較や時系列分析を行いたい分析担当者向けです。
主な機能
- 01整理済みの信用組合四半期データ
- 02算出済み指標 52 項目
- 03信用組合プロフィールと時系列
- 04同業比較と条件付き指標照会
- 05銀行の収益・指標ツール
- 06フィールド辞書付き Parquet データ
活用シーン
- 01同業機関との比較
- 02貸出と預金の四半期推移の追跡
- 03信用組合と銀行の指標照会
- 04銀行の四半期収益の分析
MCP 対応
信用組合と銀行の検索、プロフィール、指標、時系列、同業比較、四半期収益のツールを公開します。ローカルでは stdio、ホスト版では Streamable HTTP で動作し、照会は読み取り専用です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://ncua-data-analysis.fly.dev/mcpclaude mcp add --transport http bnovarini-ncua-data-analysis https://ncua-data-analysis.fly.dev/mcp{"mcpServers":{"bnovarini-ncua-data-analysis":{"type":"http","url":"https://ncua-data-analysis.fly.dev/mcp"}}}Cursor で開く{"servers":{"bnovarini-ncua-data-analysis":{"type":"http","url":"https://ncua-data-analysis.fly.dev/mcp"}}}VS Code で開く{"mcpServers":{"bnovarini-ncua-data-analysis":{"type":"http","url":"https://ncua-data-analysis.fly.dev/mcp"}}}{"mcpServers":{"bnovarini-ncua-data-analysis":{"serverUrl":"https://ncua-data-analysis.fly.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | |
| table | any | いいえ | |
| search | any | いいえ |
詳細
ncua-data-analysis
NCUA のコールレポートから取得した、2018 年から現在までの、クリーンで文書化された四半期ごとの信用組合データです。融資、預金構成、収益、職員数、効率性を網羅しています。
以下の MCP サーバーは、FDIC 保険対象の銀行も対象としており、両セクターにわたる四半期収益、効率性、ROA、同業他社とのベンチマークを扱います。
NCUA は、連邦保険対象のすべての信用組合について、四半期ごとの 5300 コールレポートを無料の一括ファイルで公開しています。しかし、3,300 以上の勘定科目列が 17 個の幅広いテーブルに分割されていること、フォームの変更によって勘定科目の配置が変わること、収入が年初来累計であること、データ辞書がフォームの記入指示として書かれていることなどから、扱いが困難です。このプロジェクトでは、DuckDB、pandas、または Parquet を読み込めるあらゆるツールでクエリできる、整理された 4 つのテーブルに変換します。
ステータス:v0。厳選した 115 個のフィールドと 52 個の計算済み指標を収録し、34 四半期分(2018 年第 1 四半期から 2026 年第 2 四半期まで)を対象としています。NCUA が公開している合計値と照合済みです。未対応の項目をご覧ください。
テーブル
| テーブル | 粒度 | 内容 |
|---|---|---|
dim_credit_union | 信用組合 × 四半期 | 名称、所在地、認可種別、同業グループ、低所得者向けおよび MDI のフラグ、is_federally_insured。 |
fact_call_report_curated | 信用組合 × 四半期 | 平易な名称を付けた、厳選された 115 個の勘定科目値です。貸借対照表、持分と資本、預金構成(持分預金、普通預金、マネーマーケット預金、証書預金、IRA、非会員預金)、種類別の融資残高、融資実行額、延滞、貸倒償却、損益計算書、従業員数、支店数を含みます。 |
metrics | 信用組合 × 四半期 | 延滞率、融資対持分預金比率、ROA、NIM、融資と預金の構成、成長率、効率性比率、従業員 1 人あたりの会員数と資産、支店あたりの数値、累計額から算出した四半期収入など、52 個の計算済み指標です。 |
dictionary | 列 | 説明、単位、NCUA 勘定科目コード、および各フィールドにデータがある最初と最後の四半期です。 |
quarter + cu_number で結合します。金額フィールドの単位はドルです。_ytd で終わるフィールドは年初来累計で、毎年 1 月にリセットされます(第 4 四半期の値は通年の合計です)。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月までの6つの年末時点で、67項目中60項目が一致しています。一致しない7項目は過去の預金項目で、差はいずれも0.5Bドル未満(0.1%未満)です。たとえば、2025年12月のマネーマーケット預金は367.5Bドルですが、公表値は368.0Bドルです。2026年6月の項目はすべて一致しています。原因として、NCUAの表で過去の数値が改訂された可能性が高いものの、確認は取れていません。全表はこちらです:docs/RECONCILIATION.md。
収益比率は、2018年第3四半期から2026年第2四半期までの全32件の四半期サマリーと照合して監査しました。累積ROA、純金利マージン、純償却率、および貸出金利回り、資金調達コスト、マージン、ROAの中央値は、分母に前年12月と当期の残高の平均(*_ncua_ytd フィールド)を使用すると、NCUAの公表値と一致します。年初来の年率換算比率は毎年1月に段階的に変わります。これはNCUAの公表値でも同様です。*_quarterly フィールドは単一四半期ベースの比率で、ここで算出したものであり、NCUAによる公表値ではありません。詳細とわずかな不一致については、こちらをご覧ください:docs/RATIO_AUDIT.md。
使用前に知っておくべきこと:
is_federally_insuredで絞り込んでください。 NCUAの生データには、NCUAが保険を提供していない州認可の信用組合が約85組合含まれています。NCUAの公表合計値には、これらは含まれません。- 報告様式は2022年と2023年に変更されました。 NCUAはコールレポートを再設計し、CECLを導入したため、一部の勘定科目がなくなり、新しい勘定科目が追加されました。変更期間をまたぐフィールドでは、両方の勘定科目コードを対応付けています(たとえば、貸倒引当金はCECL導入前はAcct_719、導入後はAcct_AS0048です)。変更後にしか存在しないフィールドは、データ辞書にその旨を記載しています。
- 純資産比率。 NCUAの公表比率では、2023年以降、CECL移行引当金を除外しています。このデータセットにはその引当金(
cecl_transition_provision)が含まれており、metrics.net_worth_ratio_ex_ceclはNCUAの数値と一致します。 - 従業員数は推計値です。
employees_fte_estimateは、フルタイム従業員数にパートタイム従業員数の半分を加えたものです。これはNCUAの定義ではなく、公表値との照合も行っていません。 - 純償却率、ROA、NIM では、公開されていないNCUA独自の平均残高を使用します。ここでは4四半期平均を使用しているため、NCUAの公表値とは数ベーシスポイント以内の差に収まりますが、完全には一致しません。
- 合併。 信用組合数は2018年以降、5,375から4,214に減少しました。合併した信用組合の過去の記録は旧認可番号のまま残るため、合併をまたぐ単一機関の成長を比較することには意味がありません。
- 報告内容は自己申告で、まれに「改訂版」として再掲載されます。ZIPファイルは、現在NCUAが公開しているものを使用しています。
まだ対応していない項目
- 種類別の商業貸出金延滞(NCUAは2022年にこれらを新しい勘定科目コードに移行しました)。
- フィールドの追加。目標は150~200項目で、現在は115項目が収録・検証済みです。
- 2018年より前の年(ダウンロードリンクでは、別の2種類の命名パターンが使われています)。
- 静的な分析サイトと自然言語によるクエリ機能。そのためのセマンティックレイヤーとなるよう、データ辞書を構築しています。
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"}}} のように設定します。
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(単純差分フラグと Quarterly Banking Profile の照合ラベル付きの FDIC 公式四半期損益)、bank_metric_series(効率性、ROA、利ざや、収益構成。単一の銀行または州別/資産帯別の集計)、bank_peer_compare(銀行と、その資産帯、州、または両方との比較)。銀行の比率には信用組合の指標と同じ計算式を使用しているため、セクターをまたいだ比較が可能です。
四半期損益ツールと銀行向けツールには、ホスト版イメージに組み込まれているパネルファイルが必要です。これらのファイルはこのリポジトリには含まれていないため、ローカルインストールではホスト版エンドポイントへの案内が返されます。ダウンロード済みファイルのフォルダーを使用するには、NCUA_DATA_DIR を設定してください。ホスト版エンドポイントはストリーミング可能な HTTP に対応し、ローカルクライアントは stdio を使用できます。このサーバーは公式 MCP レジストリに io.github.bnovarini/ncua-data-analysis として登録されています。
ダウンロード
すぐに使える Parquet ファイルは、v0.1.1 リリースに添付されています。GitHub ではリリースファイルの上限が 25 MB のため、fact_call_report_curated と metrics は、列構成が同一の年別 3 パート(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()
データソースとライセンス
データ:National Credit Union Administration、5300 Call Report Quarterly Data。銀行データ:FDIC の BankFind API を通じた FFIEC Central Data Repository のコールレポートを、FDIC Quarterly Banking Profile と照合しています。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 を通じて報告した値です。定義が異なるため、業種をまたいだ比較は参考値です。本店所在地の州は、事業のすべてがその州で行われていることを意味しません。外部委託、事業構成、合併は比較結果に影響します。従業員数が null またはゼロの場合、および既知の報告範囲の変更がある場合は除外し、その件数を集計します。
ホスト版の銀行従業員パネルは 2018Q1 から 2026Q2 までを対象としています。従業員数は金額ではなく、1,000 倍でスケーリングされていません。ローカルパッケージには銀行の従業員データは含まれていません。セルフホストする場合は、ホスト版エンドポイントを使用するか、別途用意したパネルを指定してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。