Applications / Mortgage Analytics / Method
How the fair-lending result is calculated
HMDA 2025 · PROC GLIMMIX in Jenner
One statistical model covers the 2025 applications for a first mortgage to buy or refinance a one-to-four-family home the borrower lives in, that the lender approved or turned down (streamlined FHA refinances left out): 3,469,400 applications, at every lender with at least 20 of them. For each application it predicts the chance of being turned down from what the public data records about it, and from the lender. For each lender it estimates how much bigger or smaller its gap for Black, Hispanic and Asian applicants is than the gap a lender with the same characteristics would be expected to have. Those characteristics are what "similar lenders" means: size, type, products, purchase and refinance mix, broker share, servicing, region, and how strict the lender is overall.
Each lender's gap is measured inside its own cells of county and loan purpose, so a lender is not held responsible for where its applicants live. Small lenders' estimates are pulled towards the typical lender until their own data says otherwise, so a few applications cannot make a lender look extreme.
The model
A logistic mixed model (a generalized linear mixed model with a binary outcome and logit link). For application i at lender j in county c, with yijc = 1 when it was turned down:
+ uc + aj + Σg bjg d̃ig + Σk sjk vik
- g
- the six groups: Hispanic, Black and Asian applicants, each for purchase and for refinance, against non-Hispanic White applicants.
- d̃ig, d̄g(i)
- the group indicator, centred on its mean in the application's lender × county × purpose cell, and that cell mean (the within-between, or Mundlak, form): the gap is estimated within cells.
- xi
- the application: log income (and a missing-income flag), log loan amount, combined loan-to-value band, debt-to-income band, loan type by purpose, kind of dwelling, co-applicant, channel, cash-out, non-amortizing features.
- zj
- 18 lender characteristics; their interactions with the groups (δg) define similar lenders. mi flags manufactured homes.
- uc ~ N(0, σc²)
- a random intercept for each county.
- (aj, bj1, …, bj6)′ ~ N(0, Σ)
- for each lender, a random intercept and six random group effects with an unstructured 7 × 7 covariance. bjg is the lender's gap beyond similar lenders': the quantity each result is about.
- sjk ~ N(0, τk²)
- the lender's own weight on income, high debt-to-income, high loan-to-value, FHA and refinance (vik): how strict it is.
The model is fitted by maximum likelihood with the Laplace approximation, in PROC GLIMMIX on Jenner's high-performance native implementation. Each lender's result is the probability that its gap is bigger than similar lenders', Pr(bjg > 0 | data) ≈ Φ(b̂jg / SEpred), from the conditional mode and its prediction standard error. A gap is reported as bigger at 0.99 or more.
Calibration: refitted with the group labels shuffled within each lender × county × purpose cell, so that every true gap is zero, the model reported no lender at 0.99. A simpler two-stage model (each lender fitted alone, then compared) was run as a check on the results.
The PROC GLIMMIX step
proc glimmix data=d method=laplace;
class lender county cltv dti tp dwell;
model denied(event='1') = lninc inc_miss lnamt cltv dti tp dwell coapp not_direct
not_payable cashout nonamort &lchar &units cm_gHp cm_gHr cm_gBp cm_gBr cm_gAp cm_gAr
m1-m6 x1_1-x1_18 x2_1-x2_18 x3_1-x3_18 x4_1-x4_18 x5_1-x5_18 x6_1-x6_18
/ dist=binary link=logit solution;
random intercept / subject=county;
random intercept &units / subject=lender type=un solution;
random lninc dti_hi cltv_hi fha refi / subject=lender type=vc;
run;