How-to · Screening
Piotroski F-Score: How to Calculate It From Two 10-Ks
The Piotroski F-score gives a company one point for each of a set of pass or fail tests on profitability, balance sheet strength and efficiency, using this year's statements against last year's. It was built to sort cheap stocks into improving and deteriorating ones.
The short version · about 30 minutes
- Download the two most recent 10-K filings for the company
- Score the profitability tests: return on assets, operating cash flow, the change in ROA and accruals
- Score the balance sheet tests: leverage, current ratio and new share issuance
- Score the efficiency tests: gross margin and asset turnover against the prior year
- Add the points and check how close each test came to flipping
Joseph Piotroski’s 2000 paper in the Journal of Accounting Research asked a narrow question: among stocks that already look cheap on book value, can last year’s financial statements separate the ones getting stronger from the ones getting weaker? His answer was the F-score. It’s a set of pass or fail tests, a point for each pass, scored from two consecutive years of filings, so that a total of 8 or 9 marks a company improving on nearly every front and a total of 0 or 1 marks one deteriorating on nearly all of them. The arithmetic is simple. Finding the inputs is most of the work.
The tests
Return on assets means net income over total assets at the start of the year. That’s the paper’s definition. Operating cash flow gets the same denominator.
| Group | Test | Point if |
|---|---|---|
| Profitability | Return on assets | ROA is positive |
| Profitability | Operating cash flow | Cash from operations is positive |
| Profitability | Change in ROA | ROA is higher than last year |
| Profitability | Accruals | Cash from operations exceeds net income (both scaled by assets) |
| Leverage and liquidity | Change in leverage | Long-term debt to assets fell |
| Leverage and liquidity | Change in current ratio | Current ratio rose |
| Leverage and liquidity | Share issuance | No new common shares issued in the year |
| Efficiency | Change in gross margin | Gross margin rose |
| Efficiency | Change in asset turnover | Revenue to beginning assets rose |
Don’t skip the accrual test. Profit that arrives without cash is profit that depends on estimates of what customers will pay, what inventory is worth and what costs can wait, and the cash flow statement, read beside the income statement, is the one place where that gap between reported earnings and money actually collected shows up plainly.
Company H, scored
Company H is hypothetical. Figures in millions, Year 2 being the latest.
The leverage test above divides by year-end assets to keep the sums short. The paper uses average total assets, which here gives $240 ÷ $825 = 29.1% against $225 ÷ $875 = 25.7%, and the same point.
Six. Profitability is improving and backed by cash, debt is coming down, and nothing was raised from shareholders, but the business itself got slightly less efficient, with margins slipping and revenue growing more slowly than the asset base it runs on.
Where each input sits in the filing
The income statement gives net income, revenue and gross profit. If gross profit isn’t printed, subtract cost of revenue from revenue. The balance sheet gives total assets, current assets, current liabilities and long-term debt, and the prior year’s column sits next to the current one, so a single 10-K covers most tests. The beginning-of-year assets for the earlier year need the older filing. Cash from operations is the first subtotal on the cash flow statement.
Share issuance is the awkward one. Look in the statement of shareholders’ equity for common stock issued, and among the cash flow statement’s financing lines for proceeds from issuing stock. Shares issued to employees under stock plans show up there too. A strict reading fails any issuance. Some screeners fail only a company that raised money in an offering. Pick one rule and keep it.
The current ratio test reads the same inputs the current and quick ratio uses, for two years.
Where the score breaks down
Binary tests have cliffs. Company H lost a full point on gross margin. It moved from 30.0% to 29.5%. That may be nothing more than product mix. A company whose current ratio moved from 1.40 to 1.41 would have gained one. Before trusting a total, look at how close each test was to the line.
The tests also reward particular strategies. A company borrowing to buy back stock fails the leverage test and gets no credit for the shares it retired, while a company refinancing short-term debt into long-term debt can fail the same test in a year when its liquidity has plainly improved, because the test only watches the long-term line.
Banks and insurers don’t fit: their margins, current ratios and leverage mean something else. Piotroski also built the score for one job, separating winners from losers among cheap stocks, so a high F-score on a richly valued company says less. Start from a cheap list, for example one built the way looking for undervalued stocks describes, then use the score to throw out the weakest names.
Running it as a screen
Start with valuation, because that’s the population the score was built for: the cheapest slice of a universe on price to book, after liquidity filters have removed stocks too thin to trade. Then apply the F-score minimum. Then read what’s left.
The order changes what you get. Screen on F-score first across the whole market and the high scorers are mostly steady, profitable, fairly valued companies, which pass the tests easily and were never what the score was meant to find. Applied inside a cheap list, the same tests separate businesses that are cheap and recovering from businesses that are cheap because they’re getting worse, and that second group is the classic value trap.
Expect a short list. Cheap stocks with a score of 8 or 9 are uncommon by construction, since cheapness usually comes from recent trouble and the tests reward recent improvement. A screen that returns hundreds of names probably has a loose definition somewhere.
Keep a record
Write down the inputs as well as the total. A 6 that missed two tests by a hair is a different company from a 6 that failed badly on every miss, and only the inputs show that. Next year’s 10-K adds one year. The update takes minutes. The metrics index has the individual profitability and balance sheet ratios the tests draw on.
Related questions
What is a good Piotroski F-score?
In Joseph Piotroski's paper, a high score meant 8 or 9 and a low score meant 0 or 1, and the comparison that mattered was between those two groups within cheap stocks. Scores in the middle carry less information, so a screen that follows the paper sets its minimum near the top of the range.
Does the Piotroski F-score work for growth stocks?
It wasn't designed for them. The tests reward falling debt, no new share issuance and steady margins, which young, fast-growing companies often fail on purpose because they are raising capital to expand. The original study applied the score only to stocks with high book-to-market ratios.
Why does my screener show a different F-score from my own calculation?
Definitions vary. Some tools use year-end assets in place of beginning-of-year assets for return on assets and turnover, some measure leverage with total debt in place of long-term debt, and some score share issuance on the share count. One small difference can move a test from pass to fail and the total by a point.