Introduction to Equihack
February 14, 2022
Two bad days in a row
July 16, 2022
Show all

Putting Piotroski to the Test

What Is the Piotroski Score?

The Piotroski score is a 9 point checklist to determine if a company is healthy. The formula is pasted below, then explained.

  1. Is_profitable – making money gets you a point. Seems trivial, but money making companies are less likely to go out of business.
  2. Is_cash_flowing – companies with positive cash flow can spend that cash if needed. Companies without must raise money, even if they have positive income.
  3. Is_roa_increasing – being able to squeeze more income from the same assets is good.
  4. cashflow_greater_than_income – net income is not as useful as cash flow, and accrued income has a way of vanishing.
  5. Is_repaying – No debt is good, as is a shrinking debt to asset ratio
  6. Curr_ratio_improving – high current ratios are good, and increasing ones are better.
  7. Shares_outstanding – shareholder dilution means that more shares are needed to get the same income/dividend/whatever.
  8. Margin_improving – If a company can make more money on a given volume of sales, that portends more profit.
  9. Asset_turnover_quicker – if a company can get more sales from the same set of assets, that also portends good things.

These ratios were derived by Joseph Piotroski, who used a linear regression of them to determine the odds of company failure. He, and others, determined that small cap value stocks could outperform if filtered on Piotroski score.

Does Piotroski score predict company performance?

It seems to.

Does the Piotroski score predict company failure?

According to Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers, 2% of the companies considered in his paper with the highest Piotroski score delisted for performance reasons, while 7-10% of the firms with Piotroski 2 or lower did. That seems a pretty big difference. Equities Lab does not have performance based delisting, so we count the number of firms that lost more than 80% of their value within one year after matching, and call that “faceplanting”. For firms that delisted, the last available price was used as the value.

Your stock faceplanting isn’t the same as being it being delisted, but is still traumatic to endure. You should also check the odds that the stocks will catapult upwards (80% gain in one year), and that they will rocket to new heights (500% gain in one year). If an investor has a portfolio of two stocks, one of which faceplants, and one of which catapults, the investor neither gains nor loses money. If an investor has a one stock portfolio for two years, and it faceplants the first year, it would need to rocket upwards the second year to get the investor back to even.

The next three images answer the question of how predictive the Piotroski score is for faceplanting, catapulting, and rocketing off to new heights. The first image is all investable stocks, regardless of Piotroski score, and shows that 5% catapult, 2.5% faceplant, and about than .08% rocket upwards. The rest didn’t perform exceptionally in either direction.

For high Piotroski score companies, there are many fewer faceplants – only 0.4%. There are also very few rockets — .01%. But there are almost as many catapulting companies (4%). Perhaps it is not surprising how well high Piotroski companies do.

Low Piotroski companies, on the other hand, have more rockets — .16%, but double the number of faceplants that all companies do, at 5%. These companies are no more likely to catapult upwards, as that average is still 5%. Buying them is like buying lottery tickets: possibly fun but not profitable.

Is Piotroski score a signal of future performance?

The chart below shows the backtest of each Piotroski value, from 0 to 9. It sure looks like the higher values do better, and the lower ones worse. That said, there are lots of little lines there.

The bar chart tells a stark story of improving performance by Piotroski level. In other words, whether presented in a chart or a graph, the higher the Piotroski value, the better the stock does, on average. As an exception, the zero Piotroski value does better than the one value, which probably means that something funky is going on.

WARNING: Piotroski has not been as predictive in recent markets as it was in the past. If you used 2016-2021 as a guide, and ignored any older data, it seems like the 0 and 1 levels are predictive of bad performance, and that’s as far as it goes. The 2 value screen defeats everything else.

Is changing Piotroski score a signal of future performance?

Apparently declining Piotroski is good for a stock. Although this seems absurd, this makes sense when you consider the choices available to a stock with a Piotroski score of 9. It can stay the same, go down a little, or go down a lot. Conversely, a Piotroski 0 stock has nowhere to go but up.

An attempt to fix this by weighting the current Piotroski twice as much means that the range goes from -10 to 20. It also makes it much more predictive of future returns.

A final plot where the change is just a 1/10 modifier to the current score allows us to see how each Piotroski score behaves, based on where it came from.

Aside from a few puzzling spikes, the closer both the current Piotroski and prior Piotroski are, the better the performance is, with a small increase being best. And, of course, the higher the score, the better.

Does the Piotroski score work with momentum?

Momentum is past stock performance, which is also important in determining future stock price. Separating out performance by Piotroski, and by Momentum, where yearly performance less than -5% gets 0 points, anything between -5% and 15% gets 10 points, and anything over 15% gets 20 points. Using high, medium, and low momentum, we split the Piotroski scores into three groups. Each ten items is a copy of the Piotroski score for that subset.

Apparently more momentum is better, but Piotroski works regardless.

Does the Piotroski score work with value?

Using the simplest interpretation of value (Price to earnings), and choosing four sets of values: under 5, 5 to 20, 20 to 60, and over 60, it seems that Piotroski works everywhere except when the P/E is over 60.

Does the Piotroski score work better in some sectors?

Morningstar breaks its equites down in to sectors as follows:

  1. Cyclical
    1. Basic Materials
    2. Consumer Cyclical
    3. Financial Services
    4. Real Estate
  2. Defensive
    1. Consumer Defensive
    2. Health Care
    3. Utilities
  3. Sensitive
    1. Communication Services
    2. Energy
    3. Industrials
    4. Technology

Taking on the top level divisions first, with this term:

Piotroski seems to work well with all three types of companies. For the defensive ones, firms with a Piotroski of zero seemed to do surprisingly well, but that’s the only thing of note, other than that the zero Piotroski companies in the sensitive sector managed to lose more than 99% of their value. Ouch!

A summary of how well Piotroski did per sector is below. The concept of swap distance is used to describe how well each sector did. If the values were already in order, then no edits are needed. Otherwise, we count (approximately) how many swaps are required to put the values in order.


  1. Basic Materials – Worked well. The 0 Piotroski outperformed the 1, and the 5 outperformed the 6.
  2. Consumer Cyclical – A complete mess. The 2 and 9 had insanely good performance, and the rest, other than 0 and one were mediocre. At least the 0 and 1 were terrible.
  3. Financial Services – OK. The 9 was bad, with values worse than 0 or 1. The 3 value was slightly worse than the 2 value. Other than that, all was well.
  4. Real Estate – A complete mess. Only the 5, 7, and 8 values made their investors any money, with all the other values having terrible performance.


  1. Consumer Defensive – OK. The lower values were worse, but the 9 was terrible, and the 6 value was worse than 4 or 5. The general trend was intact, though.
  2. Health Care – Worked well. The 9 was less than the 8, and the 0 was better than the 1. The trend, though, was beautiful.
  3. Utilities – A partial mess. The lower values were generally lower, but the 4, 5, and 0 had too good of results, with the 4 and 5 being good, and the 0 being decent. The 9 was also bad.


  1. Communication Services – Good. The performance of the whole sector was ghastly, but the lower values were lower and the 9 was beautiful. The 5 was modestly bad.
  2. Energy – OK. The 8 and 9, while OK, weren’t better than the 6 and 7. The 0, 1 and 2 were all as horrible as one could want.
  3. Industrials – Perfect. The low values were terrible, and the high values great.
  4. Technology – Decent. The low values were terrible, with the 0 losing 97% and the 1 losing 100% (!) of the money invested. The values from 4 to 8 were all about the same, and 9 was slightly below that.

Does the Piotroski score work better in a bull or bear markets?

We divide the market performance by segments:

  1. 0-9 – Each Piotroski score, only when the SPY has fallen more than 5% in the last year, not including dividends
  2. 10-19 – Each Piotroski, when SPY last year fell less than 5% or went up less than 5%, again excluding dividends
  3. 20-29 – each Piotroski for SPY yearly dividendless performance between 5% and 15%
  4. Each Piotroski when the SPY went up more than 15%

Then we test each Piotroski score in each segment, and we get the graph below. Studying it, we see that middling Piotroski was better when the market had recently done badly, but all the higher Piotroskis are pretty good.

Note you can’t use this chart to decide that certain markets are better or worse for stocks overall, as we don’t know how many market days are in each bar.

The Piotroski turns out to be a good scorer. In order to use it for maximum effectiveness, it can be used alongside other scorers such as momentum, market performance, sectors, and stock performance. The score is very robust when used in a wide variety of situations, so get out and Piotroski! 

Henry Crutcher is an avid family guy, board gamer (think Settlers of Catan, Puerto Rico, etc), computer nut, and all around geek. Hailing from Louisville, KY, he has noticed that the weather in Louisville is remarkably similar to the weather in Atlanta, GA despite the 407 miles that separate them. He has two daughters, one cat, and lots of trees. He loves the Miles Vorkosigan series from Lois McMaster Bujold, for its mix of SF, comedy and insight into how people work. He also comsumes more than his fair share of cheesy business/economics books, such as The Ascent of Money by Niall Ferguson, or Farewell to Alms, by Gregory Clark.

1 Comment

  1. Terry says:

    I am trying to add ((close – close as of 1 day ago) + (close as of 1 day ago- close as of 2 day ago)) and get the below error.

    Unit_cheat and set its value to true.

    Please advise

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies to improve your experience. By using this website you agree to our Data Protection Policy.
Read more