How FICO 8 Is Calculated
FICO 8 is the most widely used credit scoring model in the United States, yet its exact formula is a closely guarded trade secret. Scores range from 300 to 850 and influence the interest rates, credit limits, and loan approvals available to hundreds of millions of consumers.
In a remarkable piece of reverse-engineering work, data scientist Michael Fowlie published a study analyzing a large dataset of credit files with known FICO 8 scores. Using ordinary least squares (OLS) regression and machine learning models, he was able to approximate the scoring formula with surprising accuracy — an R-squared of 0.64 and a mean absolute error of just 14 points.
This article summarizes the key findings from that research. It is not the official FICO formula, and it cannot predict your exact score. But it reveals which variables matter, how much they matter, and what a "perfect" credit profile looks like under the hood.
This article is based on the research of Michael Fowlie, published as "Reverse Engineering FICO 8" on Medium. The original article walks through the full methodology, including data collection, feature engineering, and model evaluation.
All code, datasets, and a live API are open-source on GitHub. The FICO 8 estimation API is also publicly available for testing.
FreeCreditBot.com is not affiliated with FICO, Michael Fowlie, or the original research. All findings are summarized for educational purposes.
The 5 FICO Factors
FICO publicly discloses the five categories that make up a FICO 8 score and their approximate weights. What they don't disclose is how each category is computed internally or how the sub-calculations combine into the final number.
| Factor | Weight | What it measures |
|---|---|---|
| Payment History | 35% | Late payments, delinquencies, collections, public records |
| Amounts Owed | 30% | Utilization ratios, total balances, number of accounts with balances |
| Length of Credit History | 15% | Age of oldest account, average age of accounts, time since account activity |
| New Credit | 10% | Hard inquiries, recently opened accounts, time since last inquiry |
| Credit Mix | 10% | Diversity of account types — revolving, installment, mortgage, auto |
The weights are additive, not multiplicative — a perfect payment history does not guarantee a perfect score if utilization is high and credit history is short. The interplay between factors is what the regression and ML models attempted to capture.
Ordinary Least Squares Findings
The first approach was a linear regression — fitting the FICO score as a weighted sum of credit file variables. The model achieved an R-squared of 0.64, meaning it explained 64% of the variance in FICO scores, with a standard deviation of error around 19 points.
While not precise enough to predict an individual's exact score, the regression coefficients reveal the marginal impact of each variable — how many points each factor costs or gains.
Key Coefficients
| Variable | Coefficient | Interpretation |
|---|---|---|
| 30-day late payment | −8 pts | Each 30-day late mark costs ~8 points |
| 120-day late payment | −13 pts | Each 120-day late mark costs ~13 points |
| First delinquency | −22 pts | The first-ever delinquency on file carries the largest single penalty |
| Recent delinquency | −8 pts | A delinquency in the recent past (vs. aged) costs an additional ~8 points |
| Revolving utilization | −1 pt / 3% | Every 3% increase in utilization costs ~1 point |
| Hard inquiries (6 months) | −1.1 pts | Each hard inquiry within 6 months costs ~1.1 points |
What the regression tells us
- The first delinquency is the most expensive single event — at −22 points, it's nearly three times the cost of a subsequent 30-day late.
- Severity compounds — a 120-day late costs 62% more than a 30-day late (−13 vs. −8).
- Utilization is continuous — there's no single "threshold" where utilization hurts. It's a steady decline of ~1 point per 3% increase.
- Inquiries are cheap individually — but rate-shopping (multiple inquiries in 6 months) can add up quickly.
- Recency matters — a delinquency from 5 years ago costs less than one from 5 months ago, even before aging adjustments.
The ML Model & Five Subscores
Linear regression treats every variable as independent and additive. FICO 8 does not — it uses segmented scorecards and interaction effects. To capture this, the research trained a machine learning model that decomposes the credit file into five subscores, each normalized to a 0.0–1.0 range.
The ML model achieved a mean absolute error of 14 points — meaning that on average, the predicted score was within 14 points of the actual FICO 8 score. This is a meaningful improvement over the OLS model's 19-point standard deviation of error.
Payment History
Captures lates, delinquencies, collections, public records, and their age/recency.
range: 0.0 – 1.0
Indebtedness
Captures utilization, total balances, and proportion of accounts with balances.
range: 0.0 – 1.0
Credit Age
Captures age of oldest account, average age, and time since last activity.
range: 0.0 – 1.0
Pursuit of Credit
Captures hard inquiries, new accounts, and recent credit-seeking behavior.
range: 0.0 – 1.0
Credit Mix
Captures diversity of account types — revolving, installment, mortgage, auto.
range: 0.0 – 1.0
FICO Estimate
Weighted combination of all five subscores, mapped to the 300–850 scale.
MAE: 14 pts
Decision Tree Scorecards
Beyond the regression and ML models, the research identified that FICO 8 uses segmented scorecards — decision-tree-like rules that bucket consumers into segments, each with its own scoring baseline. The same variable can have a very different marginal impact depending on which segment you fall into.
For example, the cost of a new inquiry is higher for someone with a thin file than for someone with a thick file. The penalty for a late payment is steeper for someone with no prior delinquencies than for someone whose file already has several. This is why the linear model only captured 64% of the variance — the other 36% lives in these interaction effects.
The ML model approximated these scorecards by learning the segment boundaries from the data, which is why it achieved a tighter error band (14 points vs. 19 points).
Key Balance & Limit Thresholds
The regression and ML analysis surfaced several non-linear thresholds — points where a specific balance or credit limit crosses a boundary and triggers a discrete score change. These are not smooth gradients; they are step functions in the scoring formula.
| Threshold | Trigger | Effect |
|---|---|---|
| $10K avg balance | Average balance across accounts exceeds $10,000 | Cutoff — scores above this balance level begin to drop more steeply |
| $15K revolving limit | Total revolving credit limit crosses $15,000 | Score boost — higher limits signal trust and lower utilization |
| $50K revolving limit | Total revolving credit limit crosses $50,000 | Additional score boost — a second tier of limit benefit |
| $31K balance | Total balance crosses $31,000 | Score drop — a specific penalty band |
| $50K balance | Total balance crosses $50,000 | Further score drop — debt load becomes a stronger negative signal |
| $100K balance | Total balance crosses $100,000 | Most severe balance-related score drop |
| $39K bankcard limit | Total bankcard (credit card) limit crosses $39,000 | Score boost — a specific threshold for bankcard-only limits |
Practical Takeaway
These thresholds suggest that increasing your credit limits (e.g., requesting CLI increases from existing card issuers) can produce score gains at specific boundaries — particularly at $15K, $39K, and $50K in total revolving/bankcard limits. Conversely, carrying balances above $10K average, $31K total, $50K total, and $100K total triggers discrete penalties. If you're near one of these boundaries, paying down to get under it may produce a larger score jump than the OLS coefficient alone would suggest.
The "Perfect Profile" — FICO 840+
By isolating the credit files that scored 840 or above, the research identified a consistent profile — the shared characteristics of near-perfect FICO 8 scores. This is what the scoring model rewards most heavily.
Hard inquiries in the last 6 months
Late payments or delinquencies on file
Bankruptcies, judgments, or tax liens
Average number of open accounts
Average revolving utilization rate
Total accounts (open + closed)
No bankruptcies on file — ever
Average age of oldest account
FICO 8 score range (of 300–850)
What this profile tells us
- Zero negatives is non-negotiable. No late payments, no collections, no public records, no bankruptcies. A single 30-day late can cost 8+ points; a first delinquency costs 22.
- Utilization must be near-zero. The 840+ cohort averages 4.4% revolving utilization. At −1 point per 3% increase, a 30% utilization rate would cost ~9 points before interaction effects.
- Credit age is a moat. 28 years for the oldest account is not something you can engineer quickly. It rewards consumers who opened their first account early and kept it open.
- Thickness matters. 10 open accounts and 24 total accounts signals a well-established, diverse credit file. Thin files — even clean ones — rarely reach 840.
- No recent credit-seeking. Zero inquiries in 6 months means no rate shopping, no new applications, no signal of financial stress.
Caveats & Limitations
- This is not the real FICO formula. It is a statistical approximation based on a specific dataset. Your actual FICO 8 score may differ by 20+ points from any model prediction.
- Correlation ≠ causation. The regression coefficients show association, not proof that changing a variable will change your score by exactly that amount.
- FICO 8 is one of many models. Lenders also use FICO 9, VantageScore 3.0/4.0, and industry-specific scores (auto, bankcard, mortgage). Each has a different formula.
- The dataset may not represent you. If the training data skews toward certain demographics, income levels, or geographic regions, the model's accuracy for your specific profile may vary.
- Thresholds may shift over time. FICO periodically updates its models. The thresholds identified here are specific to the FICO 8 model and the dataset analyzed.