FirmAdapt
FirmAdapt
LIVE DEMO
Back to Blog
financial-scoringmulti-factor-modelsquantitative-analysisfinancial-intelligence

How to Build a Company Scoring System Using Multiple Financial Models

By Basel IsmailJuly 10, 2026
How to Build a Company Scoring System Using Multiple Financial Models

Why One Model Is Never Enough

There's a version of this article that tells you to screen on the Piotroski F-Score and calls it a day. I've read plenty of those. The trouble is that each of the classic scoring models answers exactly one question. The Altman Z-Score asks whether a company is drifting toward financial distress. The Piotroski F-Score asks whether its fundamentals are strengthening or fading. The Beneish M-Score asks whether the reported numbers themselves look manipulated. Ask only one of those questions and you'll eventually get blindsided by the other two.

I've seen companies score 8 out of 9 on Piotroski while carrying a debt maturity wall that put them deep in Altman's distress zone. I've seen cheap stocks that looked like bargains on a Graham valuation right up until you noticed receivables growing twice as fast as revenue, which is exactly the pattern the M-Score exists to catch. Forcing every company through several different filters before it earns your attention kills a lot of false positives on its own.

So here's how I'd build a composite scoring system from scratch: which models to include, how to get their outputs onto one scale, how to weight them, and where the whole thing tends to break.

The Building Blocks

You want components that measure different things and fail in different ways. Five have earned a permanent spot in my toolkit, and every input for all five comes off the three financial statements.

Piotroski F-Score

Nine binary checks, one point each, computable from the last two annual reports: positive return on assets, positive operating cash flow, improving ROA, operating cash flow above net income (a quick accruals check), falling long-term leverage, improving current ratio, no new share issuance, improving gross margin, and improving asset turnover. A score of 8 or 9 means the business is getting stronger on almost every dimension at once. Joseph Piotroski's 2000 paper applied this to cheap, high book-to-market stocks and found that separating out the financially strong names improved mean returns by at least 7.5 percent a year over his sample period. The quieter lesson in that paper is that cheapness alone is a weak signal until you sort the improving businesses from the melting ones.

Altman Z-Score

Edward Altman's 1968 model weighs five ratios: working capital, retained earnings, and EBIT, each scaled by total assets, plus market value of equity against total liabilities, and asset turnover. Above 2.99 is the safe zone, below 1.81 is the distress zone, and the space between is grey. In Altman's original study the model flagged roughly 72 percent of bankruptcies two years before they happened. It was built on manufacturers, so lean on the revised variants for service businesses, and skip it entirely for banks and insurers, whose balance sheets break the ratios' logic.

Beneish M-Score

This one hunts for earnings manipulation using eight ratios that compare this year's statements to last year's: receivables growing faster than sales, fading gross margins, deteriorating asset quality, unusually high accruals, and so on. The commonly used cutoff is -1.78, and a score above that means the numbers deserve a harder look. Its most famous moment is well documented: a team of Cornell MBA students ran the model on Enron in 1998 and flagged it as a likely manipulator while most of Wall Street still rated the stock a buy. As a Cornell MBA I bring that story up more often than I probably should.

A valuation anchor

Quality and safety scores say nothing about price, so add a valuation leg. Benjamin Graham's old shorthand (earnings per share multiplied by 8.5 plus twice the expected growth rate) is crude and comes from a very different interest rate era, but it's transparent and hard to game. Any consistent alternative works: earnings yield, EV/EBIT versus sector peers, a simple discounted cash flow. Whatever you pick, score the gap between estimated value and current price. Without this leg, your system will happily rank wonderful companies you'd be overpaying for.

Return on invested capital

ROIC, meaning after-tax operating profit divided by the capital actually invested in the business, tells you whether management turns retained dollars into value. A company earning above its cost of capital creates value as it grows, and one earning below it destroys value faster the more it invests. Compute it yourself from the 10-K rather than trusting the adjusted version in the investor deck, which has a way of excluding whatever makes the number look bad.

Getting Five Scores onto One Scale

These models produce outputs on completely different scales. A Z-Score of 4, an M-Score of -2.5, an F-Score of 7, a ROIC of 18 percent. You can't average those directly, so normalize first. The simplest method that works is percentile ranking within your universe: for each metric, rank every company and convert the rank to a percentile from 0 to 100. A company at the 90th percentile on Z-Score and the 85th on F-Score is now directly comparable on both.

Two details need attention. First, direction. Higher is better for F-Score, Z-Score, ROIC, and margin of safety, so those percentiles pass through unchanged. The M-Score runs the other way, since higher means more manipulation risk, so invert it: a company at the 95th percentile of raw M-Score scores a 5. Second, outliers. Ranking absorbs them automatically, which is the main reason I prefer percentiles to statistical standardization for smaller universes. A company with, say, a 900 percent ROIC off a tiny capital base simply ranks first instead of wrecking the scale for everyone else.

Also decide early whether to rank within sectors. For most accounting-heavy metrics you should. Software companies will dominate any cross-universe ROIC ranking, and banks will sit at the bottom of every Z-Score list forever. Ranking a railroad against other railroads tells you something real. Ranking it against a SaaS company mostly tells you they're in different industries.

Weighting the Components

Start with equal weights. It feels lazy, and it's also a genuinely hard baseline to beat, because every clever weighting scheme imports your biases into the math. If you tilt, tilt toward your objective and write down the reasoning. Hunting for durable compounders, overweight F-Score and ROIC. Worried most about blowups, overweight Z-Score and M-Score. Running a deep value book, overweight the margin of safety leg.

Here's an allocation I'd defend for a general purpose quality screen: 25 percent F-Score, 20 percent Z-Score, 15 percent inverted M-Score, 20 percent ROIC, and 20 percent valuation gap. To see the mechanics with clearly made-up numbers, say a company sits at the 80th percentile on F-Score, 60th on Z-Score, 70th on inverted M-Score, 90th on ROIC, and 40th on valuation. The composite is 0.25(80) + 0.20(60) + 0.15(70) + 0.20(90) + 0.20(40), which comes to 68.5 out of 100. That reads as a strong and strengthening business, reasonably safe, with honest-looking numbers, on the expensive side. The sub-scores tell you where to dig next.

Whatever you choose, freeze it. Write the weights down, date the document, and only revisit them on a schedule, say once a year, with a written reason for any change. Nudging weights every time a quarter's results annoy you is curve-fitting with extra steps, and it quietly destroys the score's meaning across time.

Custom Metrics Worth Adding

The classic models only see the financial statements. A few additions catch what they miss, and everything below comes from documents you can pull from EDGAR for free.

  • Revenue quality. How much of revenue recurs versus arriving one-time? Is growth steady or lumpy? Customer concentration hides in the 10-K, since companies must disclose customers above 10 percent of revenue, usually in the risk factors or the segment footnote. One customer at a third of revenue changes the risk picture more than most ratios do.
  • Cash conversion. Compare cumulative operating cash flow to cumulative net income over three years. Earnings that never turn into cash are the slow-motion version of what the M-Score catches in fast motion.
  • Balance sheet texture. The debt footnote lists maturities year by year. A manageable-looking total with half of it due in eighteen months describes a different company than the same total spread over a decade. Watch working capital trends too, since swelling inventory usually shows up there before it reaches the margin line.
  • Capital allocation record. Did past acquisitions earn their keep, or did goodwill impairments quietly admit failure a few years later? Were buybacks concentrated at peak prices? The proxy statement (the DEF 14A) shows what management is actually paid to maximize, and it's often revenue growth or adjusted EBITDA rather than returns on capital. Incentives predict behavior better than press releases do.

Score each of these on any simple scale you can apply consistently, even 0 to 2 by hand, and fold them in at modest weight. A crude metric applied the same way every quarter beats a clever one you'll abandon.

The Workflow, Start to Finish

  1. Define the universe. Pick something you can maintain: an index, a sector, a watchlist of a few hundred names. Percentiles only mean something relative to a defined group.
  2. Collect at least three years of statements. Every input lives on the income statement, balance sheet, or cash flow statement. EDGAR carries everything, including structured XBRL data if you want to automate the pull.
  3. Compute each model for every company. This is arithmetic. A spreadsheet handles a few hundred names fine, and I'd recommend starting there even if you can code, because building the formulas by hand forces you to understand every input.
  4. Normalize, weight, rank. Convert to sector-relative percentiles, apply your documented weights, and sort by composite score.
  5. Read the extremes. Pull the top and bottom deciles and open the actual filings for a handful of each. The top tells you what your system loves, the bottom what it hates, and the surprises on both lists tell you whether it's finding signal or artifacts.
  6. Re-run on a calendar. Quarterly, after filings land, works for most people. Track movement over time, because a company sliding from the 80th composite percentile to the 50th is often more informative than either snapshot alone.

Then use the output for what it's good at, which is deciding what to read and in what order. Attention is the scarce resource in fundamental analysis, and a composite score is a tool for rationing it.

Where These Systems Go Wrong

A few failure modes show up reliably enough that you should plan for them on day one.

Curve-fitting. The moment you adjust weights because last quarter's ranking felt wrong, the system starts describing the past instead of filtering the future. Set weights from reasoning, change them on a schedule, and keep a log of every change.

Sector distortion. Worth repeating because it's the most common bug I see: cross-sector rankings mostly rediscover which industries have which accounting shapes. Rank within sectors, and keep financials out of the Z-Score entirely.

Stale inputs. Your score reflects the last reporting date. A company can raise debt, settle a lawsuit, or lose its biggest customer between filings. Before acting on any high score, skim the 8-Ks filed since the last quarterly report.

Mechanical blindness. No model can tell a one-time restructuring charge from a permanent impairment of the business, and it will punish or reward both the same way. That judgment lives in the footnotes and the MD&A, and it stays a human job.

Survivorship comfort. If you sanity-check the system against history using today's universe, the companies that went to zero are missing from the sample, so everything looks better than it was. Treat any backtest built on current index members as optimistic by construction.

Start with three models, equal weights, and a universe you already know, then run it honestly for a quarter or two before adding metrics or tuning weights. The version you'll actually maintain is worth more than the elaborate one you'd abandon, and most of the value shows up early, when the rankings first start arguing with your instincts.

Ready to uncover operational inefficiencies and learn how to fix them with AI?
Try FirmAdapt free with 3 analysis credits. No credit card required.
Get Started Free
How to Build a Multi-Model Company Scoring System | FirmAdapt