The Piotroski F-Score is a 0 to 9 score that rates a company's financial strength using nine pass/fail tests on profitability, leverage and liquidity, and operating efficiency. To calculate it in Excel, pull the inputs for the last two fiscal years with MarketXLS historical fundamental (hf_) functions such as =hf_Net_Income("META","ly"), score each test 1 or 0 with an IF formula, and add the nine results. A score of 7 to 9 is generally read as strong; a score below 3 as weak.
Try it in your own spreadsheet
Get the free MarketXLS sample workbook (.xlsx).
No account needed. MarketXLS live data requires a paid plan. Preview workbook
Explore more videos
Joseph Piotroski, an accounting professor then at the University of Chicago, designed the F-Score to separate financially improving companies from weak ones among cheap (value) stocks. Use it as one screen alongside others, not as a buy signal on its own. This article is educational and is not investment advice.
How the Piotroski F-Score is scored
Each of the nine tests awards 1 point if the company passes and 0 if it fails. The total ranges from 0 (fails every test) to 9 (passes every test). Most tests compare the latest fiscal year with the year before.
Profitability (4 points)
- Net income. 1 point if net income for the latest fiscal year is positive.
- Operating cash flow. 1 point if cash flow from operations is positive.
- Return on assets (ROA). 1 point if ROA (net income divided by assets) increased from the prior year.
- Earnings quality (accruals). 1 point if operating cash flow is greater than net income. Profit backed by cash is harder to inflate with non-cash accounting items.
Leverage, liquidity, and source of funds (3 points)
- Long-term debt to assets. 1 point if the ratio of long-term debt to total assets fell from the prior year.
- Current ratio. 1 point if the current ratio (current assets divided by current liabilities) rose from the prior year.
- Shares outstanding. 1 point if the weighted average share count did not increase. New share issuance dilutes existing holders.
Operating efficiency (2 points)
- Gross margin. 1 point if gross margin increased from the prior year, which points to higher prices or lower costs.
- Asset turnover. 1 point if asset turnover (sales divided by total assets) increased from the prior year.
MarketXLS formulas for each F-Score input
MarketXLS historical fundamental functions start with hf_ and share one argument pattern: hf_Function(Symbol, Year, [Quarter], [TTM]). You can type =hf_ in Excel to see the full list, or browse the formula reference.
- Symbol: a US stock ticker, such as "META".
- Year: a year such as "2024", or a period code such as "ly" (last fiscal year) and "ly-1" (the fiscal year before).
- Quarter (optional): 1 to 4.
- TTM (optional): "TTM" for trailing twelve months.
Quarterly values refer to calendar quarters, not fiscal quarters. For a company with an April to March fiscal year, calendar Q1 (January to March) is its fiscal Q4.
| # | Test | Formula (latest year) | Pass rule |
|---|---|---|---|
| 1 | Net income | =hf_Net_Income("META","ly") | > 0 |
| 2 | Operating cash flow | =hf_Net_Cash_Flow_from_Operations("META","ly") | > 0 |
| 3 | Return on assets | =hf_Return_on_Average_Assets("META","ly") | higher than "ly-1" |
| 4 | Earnings quality | =hf_Net_Cash_Flow_from_Operations("META","ly")-hf_Net_Income("META","ly") | > 0 |
| 5 | Long-term debt to assets | =hf_Debt_Non_Current("META","ly")/hf_Total_Assets("META","ly") | lower than "ly-1" |
| 6 | Current ratio | =hf_Current_Ratio("META","ly") | higher than "ly-1" |
| 7 | Shares outstanding | =hf_Weighted_Average_Shares("META","ly") | less than or equal to "ly-1" |
| 8 | Gross margin | =hf_Gross_Margin("META","ly") | higher than "ly-1" |
| 9 | Asset turnover | =hf_Asset_Turnover("META","ly") | higher than "ly-1" |
For the comparison tests, put the "ly" formula in one column and the same formula with "ly-1" in the next, then score it. For example, if the current ratio for "ly" is in B7 and for "ly-1" is in C7, the score cell is =IF(B7>C7,1,0). The F-Score is the SUM of the nine score cells. Replace "META" with a cell reference to score a list of tickers.
Piotroski F-Score template
MarketXLS publishes ready-made Excel templates, including value-investing scores, at /marketxls-templates. The templates are unlocked, so you can edit the formulas and extend them to your own watchlists. For a related balance-sheet risk score, see the Altman Z-Score guide. For using the F-Score in a value screen, see identifying overvalued stocks with MarketXLS.
