⚠️
Disparate impact detected
Your "neutral" model denies loans at 3.2x higher rate for people in high-incarceration zip codes.
Approval rates by population
Low-incarceration zip codes
73% approved
High-incarceration zip codes
23% approved
Disparate impact ratio
3.2:1
How did this happen? Here's the correlation chain:
Employment history → Incarceration history
Incarceration creates employment gaps. Your "stable employment" requirement screens out 67% of formerly incarcerated people, even though gaps don't predict default—incarceration caused the gap.
Zip code → Incarceration rate
High-incarceration areas are economically disadvantaged due to policy choices (mass incarceration), not resident characteristics. Using zip code imports incarceration as a hidden variable.
Bank account ownership → Financial exclusion
Banks exclude people with conviction histories. Your model penalizes people for being excluded, creating a feedback loop: no account → denied loan → can't build credit → still no account.
Credit history length → System access
People in prison can't build credit. Your requirement for long credit history discriminates against those who lost years to incarceration.
🚨
You just recreated redlining
Your model denies loans → People can't build credit → Model sees them as higher risk → Denies future loans → Economic decline in neighborhood → Zip code becomes "riskier" → Model denies more loans. You've created a self-fulfilling prophecy using only "objective" variables.