Piotroski F-Score: How to Calculate and Screen Stocks in Excel

Published
Updated
Piotroski F-Score calculation and stock screening workflow in Excel using MarketXLS fundamental data

Piotroski F-Score is a nine-point scoring system that ranks a company's financial strength by evaluating profitability, leverage, liquidity, and operating efficiency. Originally developed by Stanford accounting professor Joseph Piotroski in his 2000 paper "Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers," the F-Score provides a systematic, repeatable method for separating financially strong value stocks from deteriorating ones. This guide focuses on the practical side — how to actually calculate each of the nine criteria, how to build a screening spreadsheet in Excel using MarketXLS, and how to use the score to rank and filter stocks for a value-oriented portfolio.


Why the Piotroski F-Score Matters for Stock Screening

Many investors screen for "cheap" stocks using simple valuation ratios — low price-to-earnings, low price-to-book, or high dividend yields. The problem is that cheapness alone does not distinguish between a temporarily undervalued company and a company in financial distress. The Piotroski F-Score solves this by adding a quality overlay on top of valuation screening.

Research has consistently shown that high F-Score stocks (7-9) significantly outperform low F-Score stocks (0-3) over time. Piotroski's original study found that a strategy of buying high-scoring value stocks and shorting low-scoring ones produced a 23% annual return between 1976 and 1996.

F-Score Interpretation

Score RangeFinancial HealthAction
8–9Excellent — improving on nearly all frontsStrong candidate for value portfolio
6–7Good — majority of criteria metWorth further analysis
4–5Average — mixed signalsProceed with caution
2–3Weak — financial deterioration evidentAvoid or investigate deeply
0–1Very weak — failing most criteriaHigh risk of continued decline

The 9 Criteria: Detailed Calculation Guide

The F-Score consists of nine binary tests (pass = 1, fail = 0). The total score ranges from 0 to 9. Here is exactly how to calculate each one.

Category 1: Profitability (4 Points)

Criterion 1: Positive Net Income

If the company's net income for the most recent fiscal year is greater than zero, score 1.

F1 = 1 if Net Income > 0, else 0

Criterion 2: Positive Return on Assets (ROA)

ROA = Net Income ÷ Total Assets. If ROA is positive, score 1.

F2 = 1 if (Net Income / Total Assets) > 0, else 0

Criterion 3: Positive Operating Cash Flow (CFO)

If cash flow from operations is positive, score 1. This is arguably more important than net income because it is harder to manipulate.

F3 = 1 if Operating Cash Flow > 0, else 0

Criterion 4: Earnings Quality (Accruals)

If operating cash flow exceeds net income, score 1. This tests whether earnings are backed by real cash or driven by accounting accruals.

F4 = 1 if Operating Cash Flow > Net Income, else 0

Category 2: Leverage, Liquidity & Source of Funds (3 Points)

Criterion 5: Decreasing Long-Term Debt Ratio

Compare (Long-Term Debt ÷ Total Assets) for the current year versus the prior year. If leverage decreased, score 1.

F5 = 1 if (LTD/TA)current < (LTD/TA)prior, else 0

Criterion 6: Increasing Current Ratio

Compare the current ratio (Current Assets ÷ Current Liabilities) year-over-year. If liquidity improved, score 1.

F6 = 1 if Current Ratio(current) > Current Ratio(prior), else 0

Criterion 7: No New Share Issuance

If the average shares outstanding did not increase compared to the prior year, score 1. Share dilution is a negative signal.

F7 = 1 if Shares Outstanding(current) ≤ Shares Outstanding(prior), else 0

Category 3: Operating Efficiency (2 Points)

Criterion 8: Improving Gross Margin

Compare gross margin (Gross Profit ÷ Revenue) year-over-year. If it increased, score 1.

F8 = 1 if Gross Margin(current) > Gross Margin(prior), else 0

Criterion 9: Improving Asset Turnover

Compare asset turnover (Revenue ÷ Total Assets) year-over-year. If it increased, score 1.

F9 = 1 if Asset Turnover(current) > Asset Turnover(prior), else 0

Total F-Score = F1 + F2 + F3 + F4 + F5 + F6 + F7 + F8 + F9


Calculating the Piotroski F-Score in Excel with MarketXLS

MarketXLS provides a dedicated function that calculates the complete Piotroski F-Score automatically:

=PitrioskiFScore("AAPL")

This function evaluates all nine criteria internally and returns the total score (0-9) for any stock ticker. It is the fastest way to get the F-Score without building the entire calculation from scratch.

Note: The function name in MarketXLS is PitrioskiFScore (matching the internal function registry). It accepts a single parameter — the stock symbol.

Quick F-Score Lookup Table

To screen multiple stocks at once, create a table:

RowColumn A (Ticker)Column B (F-Score)Column C (P/E Ratio)Column D (Revenue)
2AAPL=PitrioskiFScore("AAPL")=PERatio("AAPL")=Revenue("AAPL")
3MSFT=PitrioskiFScore("MSFT")=PERatio("MSFT")=Revenue("MSFT")
4JNJ=PitrioskiFScore("JNJ")=PERatio("JNJ")=Revenue("JNJ")
5XOM=PitrioskiFScore("XOM")=PERatio("XOM")=Revenue("XOM")
6BRK.B=PitrioskiFScore("BRK.B")=PERatio("BRK.B")=Revenue("BRK.B")

Sorting and Filtering

Once you have the F-Scores populated, use Excel's built-in Sort & Filter to:

  • Sort descending by F-Score to see the strongest companies first
  • Filter to show only stocks with F-Score ≥ 7
  • Add conditional formatting: green for 7-9, yellow for 4-6, red for 0-3

Building a Manual F-Score Calculator in Excel

If you want to understand each criterion and see exactly where a company scores or fails, you can build the full calculation manually using MarketXLS fundamental data functions.

Step 1: Pull Fundamental Data

Use =hf_revenue() to get historical financial data:

=hf_revenue("AAPL", 2024, 4)     ' Annual revenue for fiscal year 2024
=hf_revenue("AAPL", 2023, 4)     ' Annual revenue for fiscal year 2023

Use =Revenue() for the most recent trailing twelve months:

=Revenue("AAPL")

Use =PERatio() to assess current valuation alongside the F-Score:

=PERatio("AAPL")

Step 2: Calculate Each Criterion

Here is a sample layout for a manual F-Score calculator:

RowCriterionCurrent Year DataPrior Year DataScore Formula
1Net Income > 0(from financials)=IF(C2>0, 1, 0)
2ROA > 0=C2/TotalAssets=IF(C3>0, 1, 0)
3CFO > 0(from financials)=IF(C4>0, 1, 0)
4CFO > Net Income=C4-C2=IF(C5>0, 1, 0)
5LTD/TA decreasedCurrent ratioPrior ratio=IF(C6<D6, 1, 0)
6Current Ratio increasedCurrent CRPrior CR=IF(C7>D7, 1, 0)
7No dilutionCurrent sharesPrior shares=IF(C8<=D8, 1, 0)
8Gross Margin upCurrent GMPrior GM=IF(C9>D9, 1, 0)
9Asset Turnover upCurrent ATPrior AT=IF(C10>D10, 1, 0)
Total=SUM(E2:E10)

Step 3: Validate Against the Built-In Function

Compare your manual calculation against the MarketXLS function:

=PitrioskiFScore("AAPL")

If they match, your spreadsheet is correctly built. If they differ, check which criterion is calculated differently and investigate the data source.


Stock Screening Workflow Using the F-Score

Here is a practical, step-by-step workflow for using the Piotroski F-Score to screen stocks:

Step 1: Start with a Value Universe

Begin with stocks that already meet basic value criteria:

=PERatio("AAPL")        ' Filter for P/E < 15 or your preferred threshold

Create a list of 50-100 stocks from a value screen (low P/E, low P/B, high dividend yield, etc.).

Step 2: Apply the F-Score Filter

For each stock in your value universe, calculate the F-Score:

=PitrioskiFScore(A2)     ' Where A2 contains the ticker symbol

Filter to keep only stocks scoring 7 or higher.

Step 3: Add Revenue and Earnings Growth

Supplement the F-Score with growth metrics:

=Revenue("AAPL")
=hf_revenue("AAPL", 2024, 4)
=hf_revenue("AAPL", 2023, 4)

Calculate year-over-year revenue growth to ensure the company is not just financially strong but also growing.

Step 4: Rank and Prioritize

Sort your filtered list by:

  1. F-Score (highest first)
  2. P/E Ratio (lowest first, among tied F-Scores)
  3. Revenue growth (highest first, as a tiebreaker)

This gives you a ranked list of financially strong, undervalued companies with growth momentum.


Comparison: F-Score Screening Methods

MethodSpeedDepthCustomizationBest For
=PitrioskiFScore() one-linerInstantSummary onlyNone — returns total scoreQuick screening of many stocks
Manual 9-criterion spreadsheet15-30 min setupFull — see each criterionComplete — adjust thresholdsUnderstanding why a stock scores well or poorly
Combined approach (auto + manual)ModerateFullHighScreening first, then deep-diving into top picks
Third-party screener websitesInstantVariesLimitedQuick checks without Excel

Practical Tips for F-Score Screening

Tip 1: Combine with Sector Analysis

The F-Score works across all sectors, but some criteria may be more relevant in certain industries. For example, the share issuance criterion (F7) is particularly important in sectors like biotech where dilution is common.

Tip 2: Use Historical F-Scores for Trend Analysis

A company that improved from F-Score 4 to F-Score 7 over two years is showing a positive trajectory — potentially more attractive than a company that dropped from 9 to 7.

Tip 3: Be Cautious with Financial Sector Stocks

The Piotroski F-Score was designed for non-financial companies. Banks, insurance companies, and REITs have different financial structures that may not be well-captured by the nine criteria. Exercise caution when screening financials.

Tip 4: Combine F-Score with Other Scoring Systems

The F-Score works well in combination with:

  • Altman Z-Score — for bankruptcy risk assessment
  • Beneish M-Score — for earnings manipulation detection
  • Magic Formula — for combined quality and value ranking

Using multiple scoring systems reduces the risk of any single model's blind spots.

Tip 5: Rebalance Quarterly

F-Scores change as new financial statements are released. Rescreen your portfolio quarterly after earnings season to catch companies whose financial health is improving or deteriorating.


Who Should Use the Piotroski F-Score?

Investor TypeHow to Use F-ScoreKey Benefit
Value investorsPrimary screening filter on low P/B stocksEliminates value traps before they damage your portfolio
Dividend investorsConfirm financial health before relying on dividend paymentsCompanies with high F-Scores are less likely to cut dividends
Portfolio managersQuality overlay across the entire portfolioSystematic risk reduction through financial health scoring
Quantitative analystsFactor in multi-factor models alongside momentum and valueProven academic alpha factor with decades of backtested data
Individual investorsQuick sanity check on any stockInstant financial health assessment without reading financial statements
Financial advisorsClient-facing analysis and due diligenceObjective, transparent methodology that clients can understand

Pricing and Access

MarketXLS offers the =PitrioskiFScore() function as part of its Excel add-in. To access this function and the full library of 1,100+ fundamental analysis functions, visit the MarketXLS pricing page to choose the plan that fits your needs. All plans include access to fundamental data functions used throughout this guide.

Real-World Screening Example

Let us walk through a complete screening exercise using the Piotroski F-Score.

Step 1: Create a list of 20 large-cap stocks across different sectors.

Step 2: For each stock, pull the F-Score and key valuation metrics:

=PitrioskiFScore("AAPL")    ' Financial health score
=PERatio("AAPL")            ' Current valuation
=Revenue("AAPL")            ' Revenue scale
=Last("AAPL")               ' Current stock price

Step 3: Build a scoring matrix:

TickerF-ScoreP/E RatioRevenue ($B)Current PriceAction
AAPL=PitrioskiFScore("AAPL")=PERatio("AAPL")=Revenue("AAPL")=Last("AAPL")Review if F≥7
MSFT=PitrioskiFScore("MSFT")=PERatio("MSFT")=Revenue("MSFT")=Last("MSFT")Review if F≥7
WMT=PitrioskiFScore("WMT")=PERatio("WMT")=Revenue("WMT")=Last("WMT")Review if F≥7

Step 4: Filter the table to show only stocks where:

  • F-Score ≥ 7 (strong financial health)
  • P/E Ratio < 20 (reasonable valuation)

Step 5: For the remaining stocks, do a deep dive into each of the 9 criteria to understand specifically where the company excels and where it falls short.

This systematic workflow removes emotion and bias from the screening process, ensuring every candidate meets objective financial health standards before you commit research time.

Historical Performance of F-Score Strategies

The Piotroski F-Score has one of the strongest academic track records of any stock screening methodology:

  • Original study (1976-1996): A long-short strategy buying high F-Score stocks and shorting low F-Score stocks produced approximately 23% annual returns.
  • Out-of-sample testing: Multiple independent studies have confirmed the F-Score's effectiveness across different markets and time periods.
  • International markets: The F-Score has shown positive results in European, Asian, and emerging markets — not just U.S. stocks.
  • Small-cap stocks: The effect is particularly strong among small-cap value stocks, where information asymmetry is greatest and financial health screening adds the most value.

The persistence of the F-Score's performance across decades and geographies suggests it captures a genuine economic relationship — financially improving companies tend to outperform financially deteriorating ones — rather than a temporary statistical anomaly.

Limitations of the Piotroski F-Score

LimitationExplanationMitigation
Backward-lookingBased on historical financial statementsSupplement with forward estimates and analyst consensus
Binary scoringEach criterion is pass/fail — no partial creditBuild a weighted version for more nuance
Sector biasNot designed for banks and financialsExclude or use modified criteria for financial firms
Ignores valuationHigh F-Score does not mean cheapAlways combine with valuation metrics like P/E
No momentumDoes not consider price trendsAdd technical indicators or price momentum screens
Annual data lagFinancial statements are released quarterly but some items are annualUse quarterly data where available via =hf_revenue()

Frequently Asked Questions

What is a good Piotroski F-Score?

A score of 7 to 9 is considered strong, indicating that the company passes most or all of the nine financial health criteria. Scores of 8-9 are often called "high F-Score" stocks and have historically outperformed the broader market. Scores below 3 indicate significant financial weakness.

How often should I recalculate the Piotroski F-Score?

The F-Score should be recalculated after each quarterly earnings release, as the underlying financial data changes. Many investors do a full rescreen once per quarter. With MarketXLS, recalculation is instant — the =PitrioskiFScore() function automatically uses the most recent available data.

Can the Piotroski F-Score be used for growth stocks?

The F-Score was designed for value stocks — companies with low price-to-book ratios. It can be applied to growth stocks, but some criteria (like the share issuance test) may penalize high-growth companies that legitimately raise capital for expansion. Use it as one of several inputs rather than the sole filter for growth investing.

How is the Piotroski F-Score different from the Altman Z-Score?

The Piotroski F-Score measures financial health and improvement (is the company getting stronger?), while the Altman Z-Score specifically predicts bankruptcy risk (is the company at risk of failure?). They are complementary — a stock with a high F-Score and a safe Z-Score is in strong financial shape.

Does MarketXLS calculate the F-Score automatically?

Yes. MarketXLS provides the =PitrioskiFScore("TICKER") function that returns the complete F-Score (0-9) for any stock. You can also pull individual fundamental data points using functions like =Revenue(), =PERatio(), and =hf_revenue() to build a manual calculation if you want full visibility into each criterion.

Should I use the F-Score alone to make investment decisions?

No. The F-Score is one tool among many. It excels at identifying financially strong companies, but it does not account for valuation, industry dynamics, competitive positioning, management quality, or macroeconomic factors. Use it as a screening filter in combination with valuation analysis and qualitative research.


Conclusion

The Piotroski F-Score is one of the most practical, well-researched tools available for screening stocks based on financial health. Its nine binary criteria provide a clear, objective framework for evaluating profitability, leverage, liquidity, and operating efficiency — cutting through the noise of complex financial statements.

With MarketXLS, you can calculate the F-Score instantly using =PitrioskiFScore(), or build a fully transparent manual calculator using =Revenue(), =hf_revenue(), and =PERatio() to see exactly how each criterion is evaluated. Combined with valuation screening and other scoring systems, the F-Score gives you a disciplined, evidence-based approach to stock selection.

Whether you are a value investor looking for undervalued gems or a portfolio manager screening for quality, the Piotroski F-Score belongs in your analytical toolkit.

Ready to screen stocks with the Piotroski F-Score? Get started with MarketXLS and access the =PitrioskiFScore() function plus 1,100+ other Excel functions for fundamental analysis.


Disclaimer

None of the content published on marketxls.com constitutes a recommendation that any particular security, portfolio of securities, transaction, or investment strategy is suitable for any specific person. The author is not offering any professional advice of any kind. The reader should consult a professional financial advisor to determine their suitability for any strategies discussed herein. The article is written for educational purposes only. Past performance does not guarantee future results.

Related posts

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.

Interested in building, analyzing and managing Portfolios in Excel?
Download our Free Portfolio Template
I agree to the MarketXLS Terms and Conditions
Call: 1-877-778-8358
Ankur Mohan MarketXLS
Welcome! I'm Ankur, the founder and CEO of MarketXLS. With more than ten years of experience, I have assisted over 2,500 customers in developing personalized investment research strategies and monitoring systems using Excel.

I invite you to book a demo with me or my team to save time, enhance your investment research, and streamline your workflows.
Implement "your own" investment strategies in Excel with thousands of MarketXLS functions and templates.
I use MarketXLS to manage my personal portfolio. I can easily pull in stock quotes, betas, and dividends. I also like to access historical closing prices on a particular date. That makes tracking performance easy.

Patrick Cusatis, Ph.D., CFA

Associate Professor of Finance, Penn State University

I have used lots of stock and option information services. This is the only one which gives me what I need inside Excel.

Lloyd L.

Professional Trader

I can now concentrate on manipulating financial data, valuing stocks and making investment decisions, rather than hacking around with VBA or copying and pasting data from websites.

Samir Khan

InvestExcel.net

I have been using MarketXLS for the last 6+ years and they really enhanced the product every year.

Kirubakaran K.

Investment Professional

I Love My MarketXLS. The market speaks to you when you know how to listen. With MarketXLS, the market truly does speak. Patterns emerge. Pricing behavior becomes clearer.

Don Zelezny

Entrepreneur & Options Trader

Meet The Ultimate Excel Solution for Investors

Live Streaming Prices in your Excel
All historical (intraday) data in your Excel
Real time option greeks and analytics in your Excel
Leading data service for Investment Managers, RIAs, Asset Managers
Easy to use with formulas and pre-made sheets