US mortgage lending / Methodology
Mortgage-lending methodology
What HMDA is
The Home Mortgage Disclosure Act of 1975 requires most mortgage lenders to report, loan by loan, the applications they receive and what happened to each: originated, denied, withdrawn, closed for incompleteness, approved but not taken up, or purchased from another institution. The resulting Loan/Application Register (LAR) is the most complete public record of US mortgage lending. The Consumer Financial Protection Bureau (CFPB) and the Federal Financial Institutions Examination Council (FFIEC) publish the national loan-level files each year.
This layer aggregates the full national public LAR for activity years 2007 to 2024: 311,597,371 loan-level records (187,462,446 in the 2007-2017 legacy-schema files, 124,134,925 in the 2018-2024 HMDA Platform files), reduced by scripts/build/build_hmda_aggregates.py to one row per year and state. Pages read only this aggregate; every number on /mortgage derives from the loan-level files through that one audited script.
The public LAR is privacy-modified
Both eras are the public LAR, not the confidential register lenders file. The publishers state the modification directly. For the 2007-2017 historic files, the CFPB’s historic-data page says:
“The data are modified to protect applicant and borrower privacy.”CFPB, HMDA historic data (consumerfinance.gov/data-research/hmda/historic-data/)
For the 2018+ Snapshot files, the FFIEC dataset pages say:
“The Snapshot files contain the national HMDA datasets as of [freeze date] for all HMDA reporters, as modified by the Bureau to protect applicant and borrower privacy.”FFIEC HMDA Platform, Snapshot National Loan-Level Dataset pages (ffiec.cfpb.gov)
In the 2018+ files the modifications bin or redact sensitive fields. Loan amounts are disclosed as the midpoint of a $10,000 interval: every one of the 12,229,298 loan-amount values in the 2024 file sits exactly at such a midpoint ($5,000, $15,000, $25,000, and so on), a property we verified across the file. Legacy-era amounts are disclosed in whole thousands of dollars. Aggregate sums and medians therefore carry a small rounding layer from the disclosure rules; counts are unaffected.
Two schema eras
HMDA reporting changed fundamentally with the 2015 HMDA rule, effective with the 2018 collection year. The 2007-2017 files use the legacy schema (78 fields, with plain-language label columns in the “labels” variant used here); the 2018-2024 files use the 99-field HMDA Platform schema. The two eras are aggregated separately with era-specific column names and code sets, then combined; nothing is interpolated across the break.
Action-taken codes, per era
Both eras code the outcome of each record 1 through 8. The legacy labels below are quoted from the CFPB label files themselves (the action_taken_name column, verified against every legacy year); the modern labels are quoted from the FFIEC public-LAR data-fields documentation.
| Code | 2007-2017 legacy label (CFPB label files) |
|---|---|
| 1 | Loan originated |
| 2 | Application approved but not accepted |
| 3 | Application denied by financial institution |
| 4 | Application withdrawn by applicant |
| 5 | File closed for incompleteness |
| 6 | Loan purchased by the institution |
| 7 | Preapproval request denied by financial institution |
| 8 | Preapproval request approved but not accepted |
| Code | 2018-2024 label (FFIEC public LAR data fields) |
|---|---|
| 1 | Loan originated |
| 2 | Application approved but not accepted |
| 3 | Application denied |
| 4 | Application withdrawn by applicant |
| 5 | File closed for incompleteness |
| 6 | Purchased loan |
| 7 | Preapproval request denied |
| 8 | Preapproval request approved but not accepted |
Derived measures, identical in both eras: applications are codes 1-5 (excluding purchased loans, code 6, and standalone preapproval requests, codes 7-8); originations are code 1; denials are code 3. The build script verifies that every record in every year carries an action code in 1-8 and aborts otherwise.
The denial rate, defined
Denial rate = denials / (originations + denials + approved-not-accepted), that is, code 3 over codes 1 + 2 + 3: denied applications as a share of applications that reached a credit decision. Withdrawn applications (4) and files closed for incompleteness (5) are excluded from the denominator because the lender never decided them; purchased loans (6) are not applications; preapproval-only records (7-8) are excluded from both numerator and denominator. The same formula is applied to both eras, every year, every state.
Loan-purpose codes, per era
The legacy era codes purpose 1-3; the modern era splits refinancing in two and adds catch-all codes. Labels quoted from the same sources as above.
| Code | 2007-2017 legacy label (CFPB label files) |
|---|---|
| 1 | Home purchase |
| 2 | Home improvement |
| 3 | Refinancing |
| Code | 2018-2024 label (FFIEC public LAR data fields) |
|---|---|
| 1 | Home purchase |
| 2 | Home improvement |
| 31 | Refinancing |
| 32 | Cash-out refinancing |
| 4 | Other purpose |
| 5 | Not applicable |
The purchase/refinance split on these pages counts originated loans only(action code 1): purchase = purpose 1 in both eras; refinance = purpose 3 in the legacy era and purposes 31 or 32 in the modern era (so cash-out refinancings are inside the refinance line throughout, they are just not separately identifiable before 2018); home improvement = purpose 2 in both eras; “other” = purposes 4 and 5, which exist only from 2018. The build aborts if a year carries a purpose code outside its era’s documented set.
Units and conversions
Every dollar figure on /mortgage is in plain US dollars. The legacy files report loan amounts in thousands of dollars (the loan_amount_000s field); the build multiplies them by 1,000. The modern files report loan_amount in dollars already (as $10,000-interval midpoints, per the privacy section above). Origination volume is the sum of loan amounts on originated loans; the median loan is the median over originated loans, computed within each year and state from the loan-level records, never as a median of medians.
Geography
The state key is the two-letter postal abbreviation: the legacy state_abbr field and the modern state_code field. Records with no state assigned (null in the legacy files, the literal NA in the modern files) are kept in every national figure but carry no state page, so the state pages sum to slightly less than the national totals. National rows are aggregated directly from the loan-level records in a single pass, not summed from state rows, which is what makes the national medians true medians. The modern era also includes filings for island territories and freely-associated states (Puerto Rico, Guam, the US Virgin Islands, American Samoa, the Northern Mariana Islands, Micronesia, the Marshall Islands, Palau), each of which gets a page where it appears in the data.
Snapshot tier and revisions
The 2018-2024 files are the Snapshot tier, frozen roughly one month after the filing deadline. The FFIEC’s static-dataset FAQ describes the revision cycle:
“The One Year dataset is taken at least 12 months after the timely filing deadline has passed for a given filing year and incorporates any resubmissions or late submissions that have been completed in that timeframe.”FFIEC HMDA documentation, static dataset FAQ (ffiec.cfpb.gov/documentation/faq/static-dataset-faq)
The effect is small but real: for 2024, the One Year tier served by the HMDA Data Browser carries 12,259,199 records against the 12,229,298 in our Snapshot file, a gap of 29,901 records (+0.24%) from late submissions and resubmissions between the two freeze dates (both counts verified against the source on 2026-07-11 and recorded in the data provenance). Recent-year figures on these pages can therefore sit slightly below the final revised figures. The 2007-2017 files are the CFPB’s final historic publication; their record counts match the CFPB’s published table exactly, year by year, as does the 2007 reconciliation of applications plus purchased loans plus preapproval-only records to the official total.
Sources
- CFPB, HMDA historic data (2007-2017 nationwide all-records label files)
- FFIEC/CFPB, HMDA Snapshot National Loan-Level Dataset (2018-2024 public LAR)
- FFIEC, Public HMDA LAR data fields (2018+ code definitions)
- US federal public data (CFPB/FFIEC), public domain; the CFPB requests citation to the Bureau as the source.
Back to US mortgage lending.