Methodology
How Plat processes tens of millions of mortgage records into census-tract summaries — and what the maps do and don't show.
From Raw Records to Maps
Each year's HMDA data arrives as flat CSV files with one row per loan application. Plat processes these through a five-stage pipeline into the compact JSON files and PMTiles the maps load.
-
1DownloadRaw HMDA LAR (Loan Application Register) files are downloaded from the CFPB HMDA Data Browser API. For 2018–2024, the API provides JSON or CSV exports filtered by state and action type. For 2007–2017, bulk LAR files in legacy pipe-delimited format are processed separately.
-
2FilterRecords are filtered to home-purchase loan originations only — records where
action_taken = 1(originated) andloan_purpose = 1(home purchase). Applications, withdrawals, and denials are excluded from the choropleth maps, though denial data will be included in a forthcoming analysis layer. -
3Assign Race & EthnicityEach record is assigned a single racial/ethnic category based on the HMDA applicant race and ethnicity fields. Hispanic/Latino ethnicity takes precedence over race coding. Records with missing or not-applicable race data are excluded from racial breakdowns but counted in transaction totals.
-
4AggregateRecords are grouped by census tract GEOID (or county FIPS / state FIPS for coarser levels). For each group, Plat computes: total originations, share of originations by racial group, median applicant income overall, and median income by racial group.
-
5Classify Dominant GroupThe dominant racial group is the group with the largest share of originations in that tract and year. A tract is classified as its dominant group's color on the choropleth. Tracts with fewer than 5 total originations are shown in gray to avoid misleading patterns from small samples.
Racial Categories
Plat uses five racial and ethnic categories. These follow HMDA reporting definitions and U.S. Census race/ethnicity standards. Applicants self-report race and ethnicity on loan applications.
Asian
HMDA race code 2: Asian. Includes all sub-categories (Asian Indian, Chinese, Filipino, Japanese, Korean, Vietnamese, Other Asian).
Black or African American
HMDA race code 3: Black or African American.
Hispanic or Latino
HMDA ethnicity code 1: Hispanic or Latino. Assigned regardless of reported race — ethnicity takes precedence in Plat's classification.
White
HMDA race code 5: White. Non-Hispanic White only — applicants coded Hispanic are assigned to the Hispanic category.
Multiracial
HMDA race code 6 (Information not provided), or records coded with two or more distinct racial groups.
Missing and Not-Applicable Race Data
HMDA records frequently have missing or "not applicable" race fields — particularly for purchased loans and certain institutional reporters. Records with unresolvable race data are excluded from per-race breakdowns and income medians, but are counted in the tract's total origination count and overall median income.
Geographic Boundaries & Epochs
Census tract boundaries are redrawn after each decennial census. Plat uses three boundary vintages to match HMDA data to the correct tract definitions.
| Epoch | Boundary Vintage | HMDA Years | Approx. Tract Count |
|---|---|---|---|
| 2000 | 2000 Census TIGER | 2007–2011 | ~65,000 |
| 2010 | 2010 Census TIGER | 2012–2021 | ~74,000 |
| 2020 | 2020 Census TIGER | 2022–present | ~84,000 |
When you change years across an epoch boundary (for example, from 2021 to 2022), the map swaps the underlying tile layer to reflect the new boundary definitions. Some tracts split or merge between epochs; this can produce apparent discontinuities in tract-level time series that are geographic rather than substantive.
Zoom-Level Switching
To keep the map fast and readable, Plat shows different geographic levels depending on zoom: state boundaries at zoom levels below 7, county boundaries from zoom 7–8, and census tracts from zoom 9 and above. Clicking or double-clicking on a feature drills down to the next level.
How Income Is Calculated
Applicant income in HMDA data is the annualized gross income used by the lender to evaluate the application, in thousands of dollars. Plat converts these to full dollar amounts and computes the median (not mean) across all originations in a geography.
Medians are computed separately for each racial group within a tract. For tracts with fewer than 5 originations for a given racial group, the per-group income median is suppressed (shown as "—" in the tooltip) to avoid misleading values from very small samples. The overall tract median uses all originations regardless of race.
Income Is Not Inflation-Adjusted
All income values are nominal — they are not adjusted for inflation. Comparing income levels across years will reflect both real changes in buyer income and the effects of general inflation. When comparing across a long time span (for example, 2007 vs. 2024), keep in mind that the 2024 dollar is worth significantly less than the 2007 dollar.
What the Maps Don't Show
-
Originations only — not denialsPlat's choropleth maps currently show completed originations, not applications or denials. A tract that appears well-served may still have high denial rates for certain racial groups. Denial data is in development.
-
Covered lenders onlyHMDA reporting is required for most residential mortgage lenders above a certain asset or transaction threshold. Very small lenders, seller-financing, and some credit unions may be exempt. The maps do not capture all mortgage activity.
-
Race is self-reportedApplicants self-report race and ethnicity on loan applications. Lenders may also visually observe race for some in-person applications. Neither method is perfectly accurate, and reporting rates vary across institutions.
-
Tract boundaries change over timeCensus tracts are redrawn after each decennial census. Long-run comparisons across the 2011–2012 or 2021–2022 boundary years should account for the possibility that the geographic unit itself changed.
-
Correlation is not causationLending patterns reflect many overlapping factors: historical segregation, housing stock composition, lender branch networks, buyer preferences, and income. Maps showing racial patterns in mortgage data describe where lending happens — they don't explain why.