Retail Credit Scoring

How FICO actually works, how banks build their own scorecards with WOE and Information Value, and the reject inference problem nobody warns you about.

In Module 1 we established that everything reduces to estimating PD, LGD, and EAD. Retail credit — credit cards, auto loans, personal loans, mortgages — is where PD estimation is at its most statistical, because you have the one thing corporate credit never gives you: lots of data. Millions of borrowers, decades of history, clean outcome labels. This module covers how that data becomes a score.

The score everyone knows: FICO

FICO isn’t a lender. It’s an analytics company (Fair Isaac Corporation, founded 1956) that builds scoring models on top of the data held by the three credit bureaus — Experian, Equifax, and TransUnion. When a lender “pulls your FICO,” the bureau runs your file through FICO’s model and returns a number between 300 and 850.

The published component weights:

ComponentWeightWhat it really measures
Payment history35%Have you missed payments? How recently, how severely, how often? A 90-day delinquency two months ago hurts far more than one from five years ago.
Amounts owed30%Mostly revolving utilization — balance ÷ credit limit on your cards. High utilization signals dependence on borrowed money. This is the component that reacts fastest.
Length of credit history15%Age of your oldest account, average age of all accounts. A proxy for how much track record exists to judge you on.
New credit10%Recent hard inquiries and newly opened accounts. Applying for a lot of credit at once historically precedes distress.
Credit mix10%Do you handle both revolving (cards) and installment (auto, mortgage) credit? Weak signal, small weight.

Two things the marketing material won’t tell you:

  1. The weights are averages, not a formula. FICO is not a linear weighted sum. It’s a segmented family of scorecards — the model that scores a thin-file 22-year-old is literally a different scorecard than the one scoring a 30-year veteran of the credit system. The percentages describe how much each category contributes on average across the population.
  2. There is no single FICO score. FICO 8 is the most widely used, mortgage lenders still mostly pull FICO 2/4/5, credit card issuers often use industry-specific “bankcard” scores on a 250–900 range. Your score genuinely differs across bureaus and model versions.

With that caveat firmly in place, the simulator below is the honest pedagogical version — a weighted sum of the five components mapped to the 300–850 range. Use it to build intuition about relative sensitivity, not to predict your own score:

FICO Score Simulator

Each slider represents how strong that part of a credit file is, from worst (0) to best (100). Weights are FICO's published component weights.

Simulated score 712 / 850
Band Good
300580670740800850

Notice how much more the score moves per unit of “payment history” than per unit of “credit mix.” That’s the entire lesson of the weights: if you only have attention for one thing, pay on time; if you have attention for two, keep utilization down.

Bureau scores vs. your own scorecard

A bureau score answers: how risky is this person, in general? But a lender’s question is more specific: how risky is this person, for this product, at this bank? So banks build custom scorecards on their own portfolio data, usually with the bureau score as one input among many.

Two flavors, distinguished by when they’re used:

Building a scorecard: WOE and Information Value

The industry-standard construction is logistic regression on Weight of Evidence transformed variables. It has survived four decades of challenges from fancier methods largely because regulators and model validators can read it.

The recipe:

Step 1 — Bin each variable. Take a continuous variable like utilization and cut it into 5–10 bins. Coarse binning is deliberate: it absorbs outliers, handles missing values (missing gets its own bin), and captures non-linear patterns without polynomial terms.

Step 2 — Compute WOE per bin. For bin ii:

WOEi=ln ⁣(%of all goods in bin i%of all bads in bin i)\text{WOE}_i = \ln\!\left(\frac{\%\,\text{of all goods in bin } i}{\%\,\text{of all bads in bin } i}\right)

where “good” means the loan performed and “bad” means it defaulted (typically 90+ days past due within a 12–24 month window — the “bad definition” is itself a design decision). Positive WOE = the bin is safer than average; negative = riskier.

A worked example for revolving utilization:

Utilization bin% of goods% of badsWOEInterpretation
0–10%28%10%+1.03Much safer than average
10–30%30%18%+0.51Safer
30–60%22%25%−0.13Slightly riskier
60–90%14%27%−0.66Riskier
90%+6%20%−1.20Much riskier

Step 3 — Screen variables with Information Value. IV summarizes how well a variable separates goods from bads across all its bins:

IV=i(%goodsi%badsi)×WOEi\text{IV} = \sum_i \left(\%\,\text{goods}_i - \%\,\text{bads}_i\right) \times \text{WOE}_i

The conventional reading: IV < 0.02 useless, 0.02–0.1 weak, 0.1–0.3 medium, 0.3–0.5 strong, and above 0.5, be suspicious — a variable that predictive is often leaking the outcome (e.g., a “days past due” field snuck into an application scorecard). The utilization table above works out to IV ≈ 0.50: utilization really is that good, and it’s the exception that proves the rule.

Step 4 — Fit logistic regression on the WOE values, then convert coefficients to points.

The downloadable Excel template at the bottom of this post implements this entire pipeline — binning, WOE, IV, the logistic fit, and the points conversion — on a sample dataset, so you can trace every number.

Reject inference: the problem nobody talks about

Here’s the dirty secret of every application scorecard. You build the model on loans you approved, because those are the only ones with observed outcomes. But the model will be used on everyone who applies — including the kind of people you’ve historically rejected. Your training data is systematically censored, and censored in exactly the region where the model matters most.

This is a selection bias with teeth. Suppose your old policy rejected everyone with utilization above 90%. Your data then contains almost no 90%+ borrowers, so a naive new model may conclude utilization barely matters — and happily approve the very segment your old policy was protecting you from.

Reject inference is the family of techniques for guessing what rejected applicants would have done:

Champion/challenger: how scorecards actually evolve

Banks don’t swap scoring models the way you’d deploy a software release. The incumbent model — the champion — keeps making the decisions, while one or more challenger models score the same applications in the shadows (or on a small randomized slice of live decisions). After 6–12 months you compare: separation power (Gini/KS — covered in the data science track’s metrics module), calibration, approval rates, and realized bad rates by segment.

Only when a challenger demonstrably wins does it get promoted — and the old champion usually keeps running silently for another year as the benchmark. It’s slow by design. A trading model that misfires loses money today and you see it; a credit model that misfires books bad loans now that only default 18 months later. The feedback loop is glacial, so the promotion process has to be conservative.

Where this connects

Try it yourself

The Excel template below builds a complete scorecard from a 1,000-loan sample dataset: binning worksheet, WOE/IV calculations, fitted logistic coefficients, and the PDO scaling — every formula visible, nothing hidden in VBA. Rebuild it with your own bins and watch the IV move.

Logistic Scorecard Builder (Excel template)
Free download — no signup required.
Download

Get new posts by email

One email per new article. No spam, no upsells, unsubscribe anytime.