Financial
Piotroski F-Score formula: 9-point fundamental value investing checklist
Practice a nine-signal accounting screen using explicitly prepared financial metrics. A high score is not a recommendation or a guaranteed return.
Turn Joseph Piotroski's 9 accounting signals into a 0–9 binary score
Piotroski studied accounting signals in high book-to-market firms. This worksheet sums nine supplied signals, rather than extracting financial statements. Its High/Middle/Low labels are descriptive bands chosen for this exercise, not a promise that a stock is cheap or will outperform.
Prepare comparable annual data. A2 is ROA using beginning assets; B2 and D2 are operating cash flow and net income in the same units and period. C2 is change in ROA; E2 change in long-term debt divided by average assets; F2 change in current ratio; H2 change in gross margin; I2 change in asset turnover. G2 is gross common equity issued during the year: zero if none, positive if issued, never a net share-count change. Buybacks do not cancel issuance for this signal.
| Piotroski Pillar | Binary Tests (1 pt each) | Healthy Turnaround Example |
|---|---|---|
| Profitability (4 pts) | ROA>0, CFO>0, dROA>0, CFO>NI | 1 + 1 + 1 + 1 = 4 / 4 |
| Leverage & Liquidity (3 pts) | dDebt<0, dCurrRatio>0, GrossEquityIssued=0 | 1 + 1 + 1 = 3 / 3 |
| Efficiency (2 pts) | dGrossMargin>0, dTurnover>0 | 1 + 0 = 1 / 2 -> Total F-Score = 8 / 9! |
Compute total 0–9 Piotroski F-Score from financial metrics
Boolean comparisons summed directly convert TRUE/FALSE into 1/0 points without nine separate IF formulas!
=IF(OR(COUNT(A2:I2)<>9,G2<0),"Invalid inputs",(A2 > 0) + (B2 > 0) + (C2 > 0) + (B2 > D2) + (E2 < 0) + (F2 > 0) + (G2 = 0) + (H2 > 0) + (I2 > 0))Display descriptive score bands
High means 8–9, Middle means 3–7 and Low means 0–2 in this exercise. These are labels for the supplied signals, not investment suitability or valuation judgments. Equal-to-zero changes earn no improvement point.
=IF(OR(COUNT(A2:I2)<>9,G2<0),"Invalid inputs",LET(f, (A2 > 0) + (B2 > 0) + (C2 > 0) + (B2 > D2) + (E2 < 0) + (F2 > 0) + (G2 = 0) + (H2 > 0) + (I2 > 0), IFS(f >= 8, "High score", f >= 3, "Middle score", TRUE, "Low score")))Try the example
Use the original values or change them to test your understanding.