Calculate Piotroski F-Score in Excel Using MarketXLS

In this article

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.

See it in actionMarketXLS video

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
Calculate Piotroski F-Score In Excel Using - financial analysis guide with MarketXLS Excel add-in

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)

  1. Net income. 1 point if net income for the latest fiscal year is positive.
  2. Operating cash flow. 1 point if cash flow from operations is positive.
  3. Return on assets (ROA). 1 point if ROA (net income divided by assets) increased from the prior year.
  4. 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)

  1. Long-term debt to assets. 1 point if the ratio of long-term debt to total assets fell from the prior year.
  2. Current ratio. 1 point if the current ratio (current assets divided by current liabilities) rose from the prior year.
  3. Shares outstanding. 1 point if the weighted average share count did not increase. New share issuance dilutes existing holders.

Operating efficiency (2 points)

  1. Gross margin. 1 point if gross margin increased from the prior year, which points to higher prices or lower costs.
  2. 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.

#TestFormula (latest year)Pass rule
1Net income=hf_Net_Income("META","ly")> 0
2Operating cash flow=hf_Net_Cash_Flow_from_Operations("META","ly")> 0
3Return on assets=hf_Return_on_Average_Assets("META","ly")higher than "ly-1"
4Earnings quality=hf_Net_Cash_Flow_from_Operations("META","ly")-hf_Net_Income("META","ly")> 0
5Long-term debt to assets=hf_Debt_Non_Current("META","ly")/hf_Total_Assets("META","ly")lower than "ly-1"
6Current ratio=hf_Current_Ratio("META","ly")higher than "ly-1"
7Shares outstanding=hf_Weighted_Average_Shares("META","ly")less than or equal to "ly-1"
8Gross margin=hf_Gross_Margin("META","ly")higher than "ly-1"
9Asset 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.

About the authors
Ankur

About Ankur

CEO & Founder, MarketXLS

Ankur is the CEO and founder of MarketXLS. He works with Anagh and Robin on the MarketXLS blog, creating articles together about market data and spreadsheet workflows.

Written collaboratively by Ankur, Anagh and Robin.

Important Disclaimer

The information provided in this article is for educational and informational purposes only and should not be construed as investment advice, a recommendation, or an offer to buy or sell any securities. MarketXLS is a financial data platform and is not a registered investment advisor, broker-dealer, or financial planner. Always conduct your own research and consult with a qualified financial professional before making any investment decisions. Past performance is not indicative of future results. Trading and investing involve substantial risk of loss.

Explore MarketXLS in Excel
Download a free sample workbook (.xlsx). MarketXLS is a paid subscription.

See MarketXLS in action

Bring this workflow into Excel.

Book a demo with our team to see how MarketXLS supports your market research.

Ankur
AnkurFounder & CEO, MarketXLS
Book a demo