Two classic stock signals, earnings drift and the Piotroski F-score, both work, but only where trading is thin. Adding return on capital to Piotroski picks better businesses without picking better stocks.
Markets · Stock signals · Earnings drift, Piotroski, ROCE
Earnings Drift and Piotroski Work Only Where Trading Is Thin
Revised
· v1.1.0 · added Screener.in filter links
This piece pulls together results from two research projects behind this blog: a 19-market study of classic stock signals, and a point-in-time test of the Piotroski F-score with US company filings from 2017 to 2025. Both are retests of well-known ideas from the finance literature, not new inventions.
- Earnings drift is real, but it hides. Pooled across 19 markets, stocks with the best earnings-day reaction kept outperforming those with the worst by 2.5 percent over the next 40 trading days. In the US it was close to zero. The effect is strongest where stocks are hard to trade, and it only showed up in US data once actual filing dates replaced guessed ones.
- The Piotroski premium follows illiquidity, not company size. Among thinly traded large companies, strong F-scores beat weak ones by 31 percentage points over a year. Most of that came from weak companies collapsing, not strong ones soaring.
- ROCE is a different signal from Piotroski, not a better one. High and stable return on capital marks good businesses, but adding it to the F-score did not beat the market in US tests.
Earnings drift: the anomaly that should not exist
When a company reports results that surprise the market, its share price jumps. In an efficient market that jump would be the whole story. But since Ray Ball and Philip Brown's 1968 study, researchers have found that prices keep moving in the same direction for weeks afterwards. Victor Bernard and Jacob Thomas documented it in depth in 1989. It is known as post-earnings-announcement drift, or PEAD. Good news keeps drifting up; bad news keeps drifting down.
A textbook test needs each company's exact announcement date and its earnings compared with analysts' forecasts. Free data for 19 markets has neither, so the study used a price-based stand-in. An earnings day was flagged when trading volume jumped to more than 2.5 times its recent average on the same day the price moved by more than two standard deviations. The surprise was the stock's market-adjusted return over the three days around the event. The drift was the market-adjusted return from two days after the event onward, so nothing used information from the future.
Pooled across all 19 markets, the pattern was textbook:
- Stocks in the top fifth by surprise drifted up 1.4 percent over the next 40 trading days, and the bottom fifth drifted down 1.1 percent.
- The gap between them was 2.5 percent, and the five groups lined up almost perfectly in order (a monotonicity score of 0.90 out of 1).
- In the US alone, over 60 days, the gap was about −0.5 percent, with no order at all.
The event days are clearly real news days. On the flagged days, volume surged to a median 3.8 times its pre-event average, and that surge was similar in every country.
The wrong-date problem
The US null turned out to be partly a measurement problem. A volume spike is not always earnings: it can be a merger, an index change or a market-wide shock. So the US test was rerun using the actual dates companies filed their quarterly and annual reports with the SEC. The test that changed most was whether drift is stronger in hard-to-trade stocks, measured as the rank correlation between a stock's illiquidity before the event and how far it drifted afterwards:
| US test | Volume-spike stand-in | Actual SEC filing dates |
|---|---|---|
| Events | about 4,000 | 313 |
| Illiquidity vs drift (rank correlation) | +0.010 | +0.102 |
| Drift gap, least liquid minus most liquid fifth (%) | about 0 | +1.04 |
| Volume surge on the day (× pre-event average) | 3.7 | 1.6 |
With real dates, the link between illiquidity and drift became ten times stronger. The filing date is often a few days after the earnings press release, so a sharper test would use the press-release date itself. With only 313 events, this is a strong hint rather than a settled result.
Where the drift lives
Why would drift persist at all? Tarun Chordia and colleagues argued in 2009 that trading costs are the answer: in stocks that are expensive to trade, it does not pay for professionals to arbitrage the drift away. If that is right, drift should be stronger in illiquid stocks and in less efficient markets.
Pooled across all 8,803 events in 19 markets, the link between illiquidity and drift was faint: a rank correlation of +0.029, the right sign but barely there. Splitting the sample by country showed why:
| Market | Events | Illiquidity vs drift (rank correlation) |
|---|---|---|
| Brazil | 109 | +0.242 |
| EU | 404 | +0.151 |
| United Kingdom | 482 | +0.132 |
| Singapore | 440 | +0.100 |
| Australia, Canada, Germany | — | +0.02 to +0.06 |
| United States | 4,075 | +0.010 |
| Finland | 108 | −0.26 |
| South Africa | 53 | −0.03 |
Eight of 12 markets with enough events showed the expected sign. The effect was strongest in Brazil and weakest in the US, the deepest and most heavily arbitraged market. The pooled number was an average of strong effects in less efficient markets and almost none in the US, and the US dominated the sample with nearly half of all events. Finland and South Africa had too few events to read.
Two cautions apply to the whole earnings-drift study. It covers only about one year of daily data for most markets, and outside the US it relies on the volume-spike stand-in for earnings dates. The machinery is tested; the sample is short.
Piotroski: a premium for avoiding disasters in thinly traded stocks
In 2000, Joseph Piotroski showed that a simple nine-point checklist could sort cheap stocks into winners and losers. The F-score awards one point each for profitability, rising profitability, cash flow above earnings, falling debt, better liquidity, no new shares, rising margins, rising asset turnover and positive cash flow. Piotroski found the benefit concentrated in small, thinly traded firms with little analyst coverage.
The test here used US companies' own SEC filings, entering each stock only after the date its annual report was actually filed. Returns are measured over the following 12 months, from 2017 to 2025, and delisted companies were kept rather than dropped.
A first pass seemed to show the premium in small companies. But size and trading volume are closely tied (a correlation of +0.80 here), so the companies were sorted twice: by size, then by liquidity within each size group. Scores are expressed as the percentage of available tests a company passed, so a strong score is 70 or more and a weak one is under 40.
| Size | Liquidity | Median return, strong F-score 70+ (%) | Median return, weak F-score under 40 (%) | Premium (pp) |
|---|---|---|---|---|
| Small | Illiquid | +3.4 | −10.0 | +13.4 |
| Small | Liquid | +4.6 | −2.9 | +7.5 |
| Large | Illiquid | +6.8 | −24.6 | +31.4 |
| Large | Liquid | +8.2 | +0.9 | +7.4 |
Thinly traded stocks had the bigger premium in both size groups, and the largest by far was among large but illiquid companies. The premium was smallest among large, heavily traded stocks, the most efficiently priced corner of the market.
The mechanism is downside avoidance. In the strongest group, companies with strong F-scores returned a modest 6.8 percent, while weak ones fell 24.6 percent. These are typically distressed or closely held companies that big investors cannot easily sell. The F-score is better at flagging companies to avoid than at finding stars.
The premium is also small in money terms. Using trading-cost estimates from the stocks' own daily price ranges, the strategy stays executable up to about $250,000. Above that, a position would exceed 15 to 20 percent of the typical illiquid stock's daily trading. At $1 million the net premium falls to about 3 percent; at $10 million it is deeply negative. That limited capacity is probably why the effect survives.
Adding ROCE: better businesses, not better stocks
The F-score measures whether a company is improving, not whether it is a good business. A steelmaker coming off a bad year can score well while still earning poor returns on its capital. So the research added a separate three-point block for return on capital employed (ROCE), scoring:
- Level: ROCE above 15 percent, after removing cash from capital employed.
- Stability: a five-year coefficient of variation below 0.30, so a one-year peak in a cyclical business does not count.
- Trend: the latest ROCE at or above its five-year average.
The block is kept separate from the nine F-score points rather than merged, so the F-score stays comparable with published research and the ROCE block's own contribution can be measured. Cash is removed because it sits in capital employed and drags the ratio down unevenly: Indian large caps hold about 20 percent of their capital employed as cash, against about 9 percent for small caps. The two scores are genuinely different. Their rank correlation is only about +0.23 in Indian samples, so ROCE adds information the F-score lacks.
Liquid companies are better businesses
In a sample of 291 Indian companies, ROCE rises steadily with how heavily a stock trades:
| Trading tier | Firms | Median ROCE (%) | Median ROCE ex-cash (%) | Cash (% of capital employed) | Five-year variability (CV) |
|---|---|---|---|---|---|
| Large (most traded) | 92 | 17.9 | 21.6 | 20.0 | 0.22 |
| Mid | 108 | 14.9 | 17.7 | 17.6 | 0.21 |
| Small (least traded) | 91 | 9.7 | 11.2 | 9.1 | 0.34 |
This fits the finding of Vivian Fang, Thomas Noe and Sheri Tice (2009) that liquidity goes with better company performance. The drop in stability comes between mid and small companies, not between large and mid.
But adding ROCE did not beat the market
The US test asked whether ranking stocks on the F-score plus the ROCE block, under several weightings, would beat simply holding all stocks in the sample. Each year from 2017 to 2025, the 20 highest-scoring companies under each weighting were held for 12 months:
| Weighting | Average 12-month return (%) | Versus all stocks (pp) | Years ahead of all stocks |
|---|---|---|---|
| All stocks in sample | 21.1 | — | — |
| Equal weights (control) | 20.8 | −0.3 | 4 of 9 |
| Quality tilt | 18.5 | −2.6 | 4 of 9 |
| Safety tilt | 17.3 | −3.8 | 3 of 9 |
| Turnaround tilt | 8.4 | −12.7 | 3 of 9 |
None of the weightings beat the market, and the control did no better. Good businesses with high, stable returns on capital are already priced as such in the US. This matches the Piotroski result above: the scores help most where prices are least efficient, and the US large-company universe used here sits at the liquid end of the market.
The India picture is different, though untested as a return strategy. In a screen of 118 liquid Indian stocks, 40 had strong F-scores, but only 12 of those also scored full marks on ROCE. Another 26 scored full marks on ROCE with weaker F-scores: good businesses having a flat year that the F-score alone would miss.
What it adds up to
The three signals tell one story. Each works where trading is thin and prices adjust slowly, and fades where markets are deep and crowded with professionals:
- Earnings drift is strongest in Brazil and in illiquid stocks, and near zero in the US unless dated precisely.
- The Piotroski premium is largest in thinly traded companies and smallest in large, heavily traded ones.
- ROCE identifies better businesses, but in the liquid US market those businesses are already priced accordingly.
The second lesson is about measurement. Earnings drift looked absent until the right dates were used. The illiquidity link looked faint until countries were separated. The Piotroski premium looked like a small-company effect until liquidity was sorted within size. In each case the signal was there; the first measurement hid it.
Run these filters yourself on Screener.in
Screener.in covers Indian listed companies only, so these filters are a starting point for the Indian market, not a re-run of the tests above. Screener’s own and other users’ saved screens open without an account. The custom filters open in Screener’s query page, which needs a free login. A user-made screen can be edited by its owner later, so check the query shown on the page.
- Piotroski Scan
Piotroski score > 7— Screener’s own saved screen; opens without a login. It keeps only scores of 8 or 9, stricter than the 70-percent cut used above. - F-score plus ROCE
Piotroski score > 6 AND Return on capital employed > 15 AND Average return on capital employed 3Years > 15— an F-score of 7 or more plus the ROCE level test. The three-year average is a rough stand-in for the stability test; Screener does not report ROCE ex-cash. - Strong F-score in small companies
Piotroski score > 6 AND Market Capitalization < 1000— market value under ₹1,000 crore as a rough proxy for thin trading. The premium above followed illiquidity, so check each stock’s daily traded value before relying on it. - Weak F-scores to avoid
Piotroski score < 3 AND Market Capitalization < 1000— the side that drove most of the premium: weak, thinly traded companies that went on to fall. - Recent strong results in small companies
YOY Quarterly profit growth > 50 AND YOY Quarterly sales growth > 15 AND Market Capitalization < 2000— Screener has no earnings-surprise or drift filter. This lists small companies whose latest quarter jumped. It is a way to find candidates, not a test of drift.
What could be wrong
- The Piotroski figures are provisional. The project's own audit found eight data defects, including a revenue field that understated multi-segment companies' sales by up to 3.7 times. Three were fixed and the tables are being regenerated. The four premiums above moved between three successive runs: the two illiquid cells held steady, while the two liquid cells shifted by several points.
- The headline Piotroski script cannot currently be re-run. The file that produced the size-by-liquidity table contains its write-up but not its code, so those figures cannot be reproduced from the repository today.
- ROCE for banks and lenders is wrong in this data. For a lender, interest is a cost of doing business, so the standard formula overstates its returns, and the error happens to land in a plausible-looking range.
- Samples are short. The earnings-drift study covers about one year for most markets. The Piotroski tests have only nine annual rebalances, and stocks move together within a year, so the effective sample is closer to nine than to thousands. No standard errors are reported because none would be credible.
- Returns are medians before tax, and the Piotroski results control for size but not for value or market risk.
- The India ROCE screen (118 stocks, 40 strong F-scores, 12 with full ROCE marks) comes from the project's research notes rather than a saved results file.
Sources: Ball & Brown (1968), An empirical evaluation of accounting income numbers, Journal of Accounting Research · Bernard & Thomas (1989), Post-earnings-announcement drift: delayed price response or risk premium?, Journal of Accounting Research · Chordia, Goyal, Sadka, Sadka & Shivakumar (2009), Liquidity and the post-earnings-announcement drift, Financial Analysts Journal 65(4) · Piotroski (2000), Value investing: the use of historical financial statement information to separate winners from losers, Journal of Accounting Research · Amihud (2002), Illiquidity and stock returns, Journal of Financial Markets · Fang, Noe & Tice (2009), Stock market liquidity and firm value, Journal of Financial Economics · Corwin & Schultz (2012), A simple way to estimate bid-ask spreads from daily high and low prices, Journal of Finance 67(2). Research code: the author's Global Market Scanners project (earnings drift and liquidity modules) and Piotroski × liquidity research repository. Data: SEC EDGAR filings and Yahoo Finance daily prices. This post is AI-assisted analysis of public data, not investment advice.
About this article: Researched, written and edited by Umashankar Triplicane Dwarakanathan, with AI research assistance; every figure is meant to trace to the primary source cited. See the Editorial Policy for how sourcing, AI use and corrections work.