遇见数据集

NCUA Quarterly Credit Union Data, 1994-2026 (curated)

收藏
Zenodo2026-09-26 更新2026-10-01 收录
官方服务:

资源简介:

A self-contained bundle of 33 years of NCUA quarterly call-report data, FICU-filtered, era-shift-aware. 845,387 rows × 40 (curated narrow) or 93 (wide) columns spanning 1994-Q1 through 2026-Q2 (130 quarters of data, including 2010-Q2 (acquired from an Internet Archive copy of NCUA's file); 130 rows in industry_quarterly.csv). The previous public v1.2.0 schemas were 38 and 91 columns; upgrading consumers must review the Schema changes (breaking for existing queries) entry in CHANGELOG.md. Layout: data/ holds the parquet+CSV core (curated wide tables, raw long-format fact, account + CU dim tables, pre-aggregated industry/top-CU CSVs, gzipped full CSV); data/reference/ holds canonical integrity ledgers; reports/ holds the marketing Excel and the self-contained HTML industry explorer; tools/ holds the portable validator and the DuckDB query helper. Integrity: per-file sha256 in RELEASE.tsv catches transit corruption; per-quarter row-level sha256 in MANIFEST.json catches data tampering at quarter granularity. The validator is contract-driven: RELEASE_CONTRACT.json freezes, before export, the quarter roster (with per-quarter FICU key-set digests witnessed from the raw FOICU files after the shipped population policy), every table's exact schema and row count, the QDS reference set and the payload roster with full SHA-256; tools/validate.py (DuckDB, offline) checks the download against it with a measured check tally reported in its JSON output and fails closed — a missing file, an extra quarter, a blank reference value or a zero-comparison check is a failure, not a skip. The contract's own SHA-256 is printed on the Zenodo record page, appended to this description at upload time. Era-shift handling: Five column pairs span definitional boundaries (RE 1st mortgage 2017-Q3 split; regular reserves 2022-Q1 retirement; total other assets 2006-Q2 split; net income YTD 1999-Q3 introduction; net worth 2000-Q4 PCA introduction). Each legacy variant is suffixed *_LEGACY or *_legacy_pre* as a textual don't-COALESCE / don't-SUM signal. Post-2023-Q1 the package's net-worth ratio subtracts the CECL transition provision (ACCT_NW0004) so its industry aggregate matches NCUA's published Quarterly Data Summary (checked by the validator for the 59 published quarters 2011-Q4..2026-Q2); it is an analytical ratio, not the per-credit-union PCA ratio, which NCUA reports as ACCT_998 and which is carried in the raw fact table (GLOSSARY, "Regulatory PCA ratio"). Reference-comparison results and covered quarters are reported by the validator. Distribution tiers: (1) zstd-compressed parquet of curated wide tables (analyst, SageMaker / Athena / DuckDB / pandas / polars), (2) raw long-format fact_call_report.parquet, 1.20 B rows × 3,428 field identifiers (3,342 NCUA account codes + 86 metadata fields such as names and phone numbers) for arbitrary-code queries, (3) gzipped CSV (~188 MB) of the full wide table for SQL-less analysts, (4) Excel xlsx (5 sheets — About / Industry trends / Top 100 CUs / State rollup / Era-shift legend, for Product / Marketing), (5) self-contained HTML industry explorer (33-year line chart, opens in any browser, zero deps), (6) pre-aggregated industry-quarterly + top-200 CUs per quarter (quick analysis), (7) NCUA account dictionary + per-quarter CU identity (dim tables for joining). Every tier byte-verifiable against RELEASE.tsv hashes. Intended use: credit-union industry analysis, regulatory benchmarking, time-series structural analysis (consolidation curves, NW-ratio cyclicality through 3 economic cycles, post-CECL provisioning behavior), comparative analysis with FFIEC bank call-report data. Full GLOSSARY.md, CLAUDE_PROMPT_PACK.md, and README.md ship with the bundle. Source data: National Credit Union Administration (NCUA) quarterly call-report bulk archive. Source values are US Government public domain by 17 U.S.C. § 105. The curation, schema, validator, and helper code in this bundle are released under CC0 1.0 Universal. Changes since v1.2.0 (which ended at 2025-Q4): two new quarters (2026-Q1, 2026-Q2); 2010-Q2 added (7,445 FICUs; NCUA's own file, acquired from an Internet Archive copy; the sentinel row is gone); two corrigenda to files already published in v1.1.0/v1.2.0 — data/dim_account.parquet carried 913 malformed rows (a dictionary-loader defect in this pipeline) and data/reference/qds_published_values.tsv had ten blank quarters (2015-Q4..2018-Q1); contract-driven validation. Users of v1.2.0 should re-download. Full list in CHANGELOG.md. Data corrections in this release: 35 corporate credit unions are excluded from each of 1997-Q2 and 1997-Q4; nine 1996 quarterly filings from six credit unions are attached to their insured-charter rows through the reviewed alias ledger; 162 non-finite numeric parses are NULL while source text is preserved; and bounded personnel-metadata corrections restore 171 source cells in place of 155 damaged cells plus five reviewed nickname literals. No universal quote-parser policy is asserted. Known data cautions in this version (documented in README.md and GLOSSARY.md): provision_loan_lease_losses_300 (ACCT_300) and provision_credit_losses_cecl_IS0011 (ACCT_IS0011) are separate reporter-specific measures; the bundle does not mechanically combine them. Independence and provenance: this is an independent compilation by the author; it is not produced, reviewed or endorsed by the National Credit Union Administration. The build pipeline is private; the public verification surface is RELEASE_CONTRACT.json + tools/validate.py, and validation logs are available on request. Files on Zenodo are stored flat: a double underscore in a file name stands for a directory separator (data__cu_quarterly_summary.parquet is data/cu_quarterly_summary.parquet). Download all the files into one directory and restore the folder tree with one shell line: for f in *__*; do [ -e "$f" ] || continue; d="${f//__//}"; mkdir -p "$(dirname "$d")"; mv -- "$f" "$d"; done — then python3 tools/validate.py . --expect-contract-sha256 <pin> must report pass with zero FAIL, where the pin is the release-contract sha256 printed on the Zenodo record page (appended to this description at upload time, outside the bundle, because a pin cannot live inside the bundle it pins). Without Bash, the same in Python: python3 -c "import glob,os;[os.renames(f,f.replace('__','/')) for f in glob.glob('*__*')]". The line is Bash. Some browsers save the dotfile .zenodo.json as zenodo.json — rename it back before validating, and remove OS litter such as .DS_Store: the validator requires the exact file roster. Release contract sha256 (2.0.0): 136fb58c0115cccacebbce85680a40aa57fb301465c184c4776295d564e84d65 — pass it as --expect-contract-sha256 to tools/validate.py for an authenticated check (trust = authenticated-contract-pin). The folder-tree reconstruction line above is Bash: run it in a NEW, otherwise-empty directory that holds only the files downloaded from this record.

提供机构:
Zenodo
创建时间:
2026-09-26
二维码
社区交流群
二维码
科研交流群
商业服务