
How we build predictive scores: A Data Scientist’s methodology
Jonathan Davies on the thinking and methodology behind building next-gen, award-winning scoring at Company Watch.

Contents
Written by

Every risk team that decides to build its own credit scoring model starts in roughly the same place. Someone has read that the generic score doesn’t fit the book, which is usually true. The team has data, an analyst or two, and access to a gradient boosting library. Six months later there’s a model that performs beautifully on the training set and gets quietly retired after its second bad quarter.
The failure almost never sits in the algorithm. Choosing between logistic regression and a boosted tree is a decision you can make in an afternoon, and for credit risk the honest answer is usually logistic regression, because you’ll have to explain the result to a credit committee. The decisions that determine whether the model works are made before any code is written, and they’re definitional rather than technical.

Jonathan Davies on the thinking and methodology behind building next-gen, award-winning scoring at Company Watch.
Write down the event before anything else. This sounds trivial and it’s where most builds go wrong.
“Credit risk” isn’t an event. Formal insolvency is an event, and it’s the wrong one for most books because it’s both rare and late. Arrears past 90 days is an event. A write-off is an event. A distress event that includes reconstructions, rescues and refinancings alongside formal insolvency is a broader event with a higher base rate.
The choice matters because it fixes your sample size, and sample size will decide how ambitious the model can be. Take the national numbers. The Insolvency Service recorded a company insolvency rate of 50.3 per 10,000 companies in the twelve months to 31 July 2026, roughly one in 199, or 0.5%. On a book of 5,000 trading counterparties sitting at the national average, that’s about 25 insolvencies a year.
Twenty-five events is not enough to build a model on. The events-per-variable convention widely used in logistic regression, often quoted as ten events per predictor, would support two or three variables from a single year of data. Five years of clean history gets you to perhaps ten variables, assuming your book composition and the economy both held still for five years, which they didn’t.
This is the arithmetic that kills most in-house distress models, and it’s worth doing on a whiteboard in week one rather than month five. Count your actual events. If the number is under a hundred, you cannot build a failure model from your own book, and no amount of feature engineering changes that.
The practical answer for most teams is therefore a hybrid: buy the failure model, which needs a national population to train on, and build the behavioural layer, which needs your ledger and only exists in your ledger.
A score is a ranking. A threshold is a decision. Teams spend months on the first and minutes on the second, which is the wrong way round, because the threshold is what actually changes outcomes.
Setting it is a commercial calculation rather than a statistical one. Take the average loss on a bad debt, take the annual margin on a good account, and the ratio between them tells you how many good customers you should be willing to decline to avoid one failure. If a write-off costs £40,000 and an account earns £4,000 a year, you should accept roughly ten unnecessary declines per bad debt prevented. That ratio, not the model’s accuracy, sets your cut-off.
Two consequences follow. Different products need different thresholds off the same score, because the loss-to-margin ratio differs between a 30-day trade account and a five-year asset finance deal. And the threshold needs to move when the economy does, which means it belongs in configuration rather than hard-coded in the model.
Published thresholds are worth studying for how explicit they are. The Company Watch Warning Area is defined as an H-Score® below 25. Our zombie company measure is any company with negative working capital of at least £20,000. Interest cover at or below 1.5 flags a company that may not be able to service its debt from earnings. Each of those is a line drawn in a specific place, stated openly, so that anyone using it can see the line and argue with it. If you cannot say where your threshold sits and why, you don’t have a policy, you have a habit.
This is the most common technical error in in-house models, and it produces the most flattering results.
Your training data has to contain only what you would have held on the decision date. Filed accounts are the trap. A small UK company files up to nine months after its year end, so the accounts you can see today for a company you’re scoring today may describe a year that ended twenty-one months ago. If you build a training set by joining companies to their most recent accounts, you will accidentally give the model figures published after the failure it’s predicting. The model will look excellent and will be useless.
It’s tedious and it is the difference between a model that works and a model that back-tests well.
The same discipline applies to register events. A director resignation is a signal on the date it was filed at Companies House, not the date it took effect, and those can differ by weeks.
Features fall into two families, and they behave very differently over time.
Structural features come from the financial statements: gearing, working capital position, asset quality, interest cover, net worth, and the trend in each across several years. They’re slow, they arrive late, and they’re stable. A gearing ratio means roughly the same thing in 2019 and 2026. The Company Watch H-Score® combines seven such factors, benchmarked against industry averages within asset bands, because a working capital ratio that’s healthy for a software firm is alarming for a distributor.
Behavioural features come from conduct: payment timing, order pattern changes, credit utilisation, dispute frequency. They’re fast, they’re early, and they drift. Payment behaviour in 2020 and 2021 tells you almost nothing transferable, because government support suppressed the signal across the whole population.
Build with both, and treat the drift explicitly. Behavioural features need retraining on a schedule. Structural features need it far less often. A single model treating both families identically will decay at the speed of its fastest-drifting input.
Sector and size benchmarking deserves its own mention. Absolute ratios mislead across industries. Percentile position within a sector and size band carries the signal, and it also makes the score explainable to a relationship manager who wants to know why a profitable client scored badly.
This is also the question to put to any vendor selling you a score, and most of the answers you’ll get are weaker than they sound.
Ask for the discriminatory power, usually reported as a Gini coefficient, and then ask the follow-up that matters: on which population, over which period, and against which definition of the event. A Gini measured on the same period the model was fitted to is a description of the fit, not evidence of performance. What you want is out-of-time validation, where the model is fitted on one period and tested on a later one it never saw.
Then ask about the false negative rate, because that’s where the money is. A model that catches most failures while flagging a third of your book is commercially useless. A model that flags very few companies and misses half the failures is worse. The useful claim isn’t how many of the flagged companies fail, it’s how rarely failure happens among the companies the model cleared.
Ask how the score behaves through a downturn. Any model fitted on 2015 to 2019 data and never tested since has no evidence behind it for the conditions you’re lending into now.
Ask what the score can’t see. A model built on filed accounts has nothing to say about a company that has never filed, and thin-file coverage is where providers differ most.
Finally, ask whether you can decompose an individual score into its contributing factors. If you’re regulated, an FCA or PRA-supervised lender has to demonstrate model governance, and a score you can’t decompose is a score you can’t defend when a declined applicant complains or an auditor asks. Explainability isn’t a feature of a risk model. It’s the precondition for using one in a governed process.
A model gives you a position. Stress testing tells you what happens to that position when conditions change, and it’s the part most teams never get to.
The mechanics are straightforward once the model exists. Take your book, apply a shock to the inputs rather than the outputs, and re-score. A 200 basis point rate rise, a 15% revenue contraction in a named sector, a major customer failing. Then read the change in your exposure, not the change in the average score.
Two things usually surface. The first is concentration you didn’t know about, where a sector shock moves a disproportionate share of your limits at once. The second is threshold cliff-edges, where a modest shift in inputs pushes a large cluster of accounts across your cut-off simultaneously, turning a gradual deterioration into a sudden operational problem for your credit team.
Uploading management accounts rather than waiting for filed ones is worth doing here too. Where you can get current figures from a counterparty, scoring those against the same model closes most of the reporting lag on the exposures you care about most.
The honest split follows from the sample-size arithmetic at the top.
The failure model needs a national population and a long observation history, which almost no individual lender or supplier has. Buying it, and being demanding about the validation evidence, is the rational choice. The Company Watch Scoring Gateway exists for the middle case, where teams want an established model applied to their own data, their own counterparty files or third-party financials, and returned in their own format rather than through someone else’s interface.
The behavioural layer should be yours, because it’s built from data only you hold, and it arrives earlier than anything available externally.
The threshold should always be yours. It encodes your appetite, your margins, and your loss experience, and nobody outside your business can set it for you. Any provider that hands you a cut-off without asking what a bad debt costs you is guessing.
Define the event you’re predicting, count how many of those events your data actually contains, reconstruct each historical decision point using only data available on that date, select structural and behavioural features separately because they drift at different rates, set the threshold from your loss-to-margin ratio, and validate out-of-time. Most books contain too few insolvencies to support an in-house failure model, so the usual answer is to buy the failure model and build the behavioural layer.
For behavioural outcomes like arrears and write-offs, usually yes, because those events are frequent. For company failure, usually not. At the UK average insolvency rate of roughly 0.5% a year, a 5,000-account book produces about 25 insolvencies annually, which supports only two or three predictor variables under the standard events-per-variable convention. This is why failure models are built on national populations: Company Watch trains the H-Score® on the whole UK filed-accounts population rather than on any single lender’s book.
Divide the average loss on a bad debt by the annual margin on a good account. That ratio is how many unnecessary declines you should accept to prevent one failure, and it locates your cut-off. Set different thresholds for different products, and keep them configurable rather than embedded in the model. Company Watch publishes its own cut-off for comparison: the Warning Area is any company scoring below 25 on the H-Score®.
Ask for out-of-time validation rather than in-sample fit, on a named population and a stated definition of failure. Ask for the false negative rate, because the value of the model lies in how rarely the companies it cleared go on to fail. Ask how it performed through a downturn, what it can’t see, and whether an individual score can be decomposed into its drivers. Company Watch publishes the H-Score® methodology and Warning Area cut-off openly, and every score breaks down into the seven financial factors behind it, so the result can be explained to a credit committee or an auditor.
A credit score is largely a rating of observed conduct and reference data, which describes what has already happened. A distress score compares a company’s financial structure to the structures of companies that later failed, which is a forecast. A company can pay on time while its balance sheet deteriorates, and the two scores will disagree about it. The Company Watch H-Score® and PoD® are distress measures of this kind, built from filed financial statements rather than payment conduct.
