I buy shit companies cheap, with a reasonable chance they become less shitty. Tangible bargains, not stories. That’s the whole strategy. Everything else here is just the fine print.
“Less shitty” is the entire bet, and it only pays off if the company is still standing when the market gets around to admitting it was wrong. Mean reversion needs a mean to revert to. If a company goes tits up first, there’s no reversion left to collect, the cheap multiple we bought just becomes a cheap multiple on a wipeout. That’s the whole reason a survival check comes before anything else in this process: cheapness is the opportunity, staying alive long enough to matter is the precondition for cashing in on it.
Every position in this portfolio has to clear a financial-statement survival check before it’s even allowed onto the cheapness matrix. That check is the Piotroski F-Score, a 25-year-old accounting tool most people have only seen as a single digit on a stock screener. We think it deserves more than a single digit, so here’s the whole thing: what it actually measures, the research behind it, the honest case against it, and the four specific changes we made to the textbook version and why.
What it is
Joseph Piotroski, then an accounting professor at Chicago, published the F-Score in 2000 in a paper called “Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers.” The idea: take nine yes/no questions about a company’s financials, comparing this year to last year, and add up the yeses.
Positive net income?
Positive operating cash flow?
Return on assets improved?
Operating cash flow exceeds net income? (a check on earnings quality, not just the level of earnings)
Leverage decreased?
Current ratio (a liquidity measure) improved?
No dilutive share issuance?
Gross margin improved?
Asset turnover improved?
Nine questions, nine points possible. That’s the whole formula. No proprietary black box, no hidden weighting, just nine plain-English questions about whether a company is getting healthier or sicker.
What the original research actually found, and why it matters that we’re a deep-value shop
Here’s the detail that gets lost when people cite “the Piotroski F-Score” as a generic screening tool: Piotroski didn’t test it against the whole market. He tested it specifically inside the cheapest quintile of stocks by book-to-market ratio, the same kind of unloved, statistically-cheap names this portfolio buys. His finding wasn’t “buy high F-Score stocks.” It was narrower and, for our purposes, more useful: inside a universe of already-cheap stocks, a long-short strategy built on F-Score generated roughly 23% a year from 1976 to 1996, and most of that return came from correctly avoiding the low-scoring stocks that went on to blow up or get delisted, not from extra outperformance on the high scorers. High-F-Score value stocks returned about 13.4% a year against 5.9% for the value quintile as a whole.
In other words: the F-Score’s original, best-documented job is exactly the job we give it here. It’s not a quality ranker. It’s a way to avoid buying into a company on its way to zero while it still looks cheap on the way down. Piotroski and So followed this up in 2012, finding the score’s power to separate winners from losers concentrates specifically where the market’s pricing and the company’s fundamentals have diverged the most, which is more support for using it as a binary gate than as a fine-grained rank.
That’s why this page’s companion Methodology section puts it the way it does: cheapness ranks the stocks, the F-Score only vetoes the ones most likely to die before the bargain matters. Rank the whole universe by F-Score instead and buy only the cleanest 8s and 9s, and you’ve quietly built a conventional quality-value strategy, which is a perfectly fine thing to do, but it defeats the point of a basket that deliberately keeps exposure to businesses other investors have already given up on.
It also happens to fit this portfolio’s actual universe unusually well. Piotroski’s own stated motivation was that financial-statement-driven mispricing lingers longest in small, low-analyst-coverage companies, which is a reasonable description of obscure microcaps in 33 countries. A study spanning 20 developed and 15 emerging markets from 2000 to 2018 found the effect holds outside the US too, with the size of the edge varying by market, larger in some, smaller in others, but present broadly.
The honest case against it (so you don’t have to take our word for the case for it)
We’re not going to pretend this tool is beyond criticism, and one blog in particular makes the strongest version of the argument that it’s stopped working at all: Portfolio123’s “Why Piotroski’s F-Score No Longer Works.” The claim is that using Piotroski’s own criteria out of sample from 1999 to 2020, high-F-Score portfolios actually lost money on average, while low scorers outperformed, and the author argues the original result was likely a product of data mining a specific 20-year window. We think this specific piece overstates its case (it reads more polemical than the underlying methodology supports, and testing the raw long-short strategy market-wide is a different exercise than using the score as a veto inside an already-cheap universe, which is the only way we use it), but the underlying worry it’s pointing at is real and worth taking seriously rather than dismissing: like every published quantitative signal, the F-Score’s raw effect size has likely compressed since 2000, and nobody should assume 2000-era return figures repeat exactly today. The strategy-wide version of this exercise, the evidence for and against the entire deep-value approach, lives on Does this actually work?
Three other criticisms hold up better on their own merits, independent of that specific piece:
It’s noisy for cyclical and commodity businesses. Every signal compares this year to last year only. A single-commodity producer can fail the margin or turnover signal purely because the prior year was unusually strong, with nothing structurally wrong, or pass it purely because the prior year was unusually weak. That’s a real limitation for a portfolio that explicitly caps exposure to single-commodity clusters and knows it’ll own some of these names. A 2024 study found the same thing economy-wide: in contractions, macro conditions matter roughly five times more to a company’s F-Score than in expansions, so a fixed cutoff quietly tightens and loosens with the cycle.
A single digit hides which specific thing went wrong. Two companies can both score a 3, one because it’s levering up and losing liquidity, one because its margins and turnover slipped, and those are not remotely the same risk for a strategy built on tangible-asset backing. Alpha Architect’s own reworked version of the score, which they call the FS-Score, exists specifically because they found the standard formula’s equity-issuance signal actively misleading: it penalizes a company for any share issuance at all, even routine stock compensation happening alongside a much larger buyback program.
It’s only as good as the filing it’s computed from. For companies in weaker-disclosure jurisdictions, a related-party-heavy or state-influenced business can show cosmetically improving numbers and score well on paper while being exactly the kind of company our separate governance and capital-allocation checks exist to catch. The F-Score was never meant to substitute for reading the filing, and we don’t let it.
Where the numbers come from
We compute the F-Score ourselves, from primary financial statements, not from a data vendor’s own pre-computed score. The source priority is SEC XBRL company filings first, then figures we’ve extracted directly from a foreign issuer’s own investor-relations filings, then Taiwan’s MOPS structured filing data for that market. A commercial data feed (InvestingPro) is used only as a last-resort fallback, and only at the whole-company level, for names that have zero rows from any of those three primary sources, most often companies trading on exchanges without a clean structured-filing pipeline. It is never blended line-by-line with real filing data. If a signal can’t be computed because a required figure genuinely isn’t available, we say so and report it as data-limited rather than guessing.
What we changed, and why (2026-08-17)
After pressure-testing the design above against the research and the strongest critiques of it, we made four changes to the textbook formula. None of them touch the reject / probation / eligible bands themselves.
Net buyback, not gross issuance. The “no dilutive issuance” signal now compares cash paid for buybacks against cash received from share issuance for the year, and passes if that number is zero or positive. This directly fixes the Alpha Architect-documented flaw above: a company that issues a small number of shares for employee compensation while running a much larger buyback program shouldn’t fail this signal on gross issuance alone. We fall back to the original diluted-share-count comparison only when the cash-flow figures aren’t available, which is common for foreign filers without a granular breakout.
Name the failed signals, not just the score. Any company scoring 0–3 now gets its specific failed signals identified in the write-up, not just the number. A 3 that fails on leverage and liquidity and a 3 that fails on margin trend and turnover are different risks, and collapsing both into “3/9” hides that difference.
A floor under the score. A company cannot reach Eligible status, even at a raw score of 7, 8, or 9, if it simultaneously failed the leverage and liquidity signals in the same year. That specific combination, a company levering up while its liquidity deteriorates, is the single most dangerous one for a strategy built on tangible-asset backing, and we decided a strong reading elsewhere in the score (margin, turnover, profitability) shouldn’t be allowed to average it away.
A disclosed override for cyclical and commodity names. When a failed margin or turnover signal is clearly attributable to a depressed prior-year comparison rather than genuine deterioration, common for single-commodity producers, the write-up may move a Reject to Probation on that basis. This is a documented, disclosed analyst judgment call, not something the score computes automatically, and it’s never used to override the leverage/liquidity floor rule above.
Where this fits in the bigger picture
The F-Score is one piece of a survival screen, not the whole philosophy. For the broader case for buying unloved, statistically cheap businesses in the first place, see Walter Schloss’s sixteen rules. For the mechanical rules the F-Score feeds into (the cheapness matrix, position sizing, the sell-target method), see the main Methodology page.
Sources
Piotroski, J. (2000). “Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers.”
Piotroski, J. & So, E. (2012). “Identifying Expectation Errors in Value/Glamour Strategies: A Fundamental Analysis Approach.” Review of Financial Studies.
Piotroski F-Score Improves Global Stock Performance — Quant Investing, on the 20-developed/15-emerging-market study.
Walkshäusl, C. (2020). “Piotroski’s FSCORE: international evidence.” Journal of Asset Management 21, 106–118 (free full text) — the study behind the 20-developed/15-emerging-markets item above: 2000–2018, high-minus-low spreads of 0.79%/month in developed and 0.95%/month in emerging markets.
Anderson, K.P., Chowdhury, A. & Uddin, M. (2024). “Piotroski’s Fscore under varying economic conditions.” Review of Quantitative Finance and Accounting — the study behind the “It’s noisy for cyclical and commodity businesses” note above: in contractions, macro conditions matter roughly five times more to a company’s F-Score than in expansions.
Value Investing Research: Simple Methods to Improve the Piotroski F-Score — Alpha Architect, on the equity-issuance flaw.
Why Piotroski’s F-Score No Longer Works — Portfolio123, the critical case we engage with above.
Imperfections with the Piotroski F-Score — GuruFocus.
Should You Invest Using Scoring Systems? — Dr Wealth, on the risk of applying purpose-built scores outside their intended universe.

