Piotroski Score
Calculate the Piotroski Score, a comprehensive financial assessment tool that helps investors and analysts evaluate a company’s financial health and fundamental strength.
The Piotroski Score was developed by Joseph Piotroski and is based on a set of nine fundamental financial criteria. Each criterion is assigned a score of 0 or 1, and the scores are then summed to calculate the Piotroski Score.
The nine criteria are categorized into three groups:
-
Profitability: - Return on Assets (ROA) Criteria: Measures the profitability of the company. - Operating Cash Flow Criteria: Evaluates the company’s ability to generate cash from its operations. - Change in ROA Criteria: Assesses the trend in ROA over time. - Accruals Criteria: Examines the quality of earnings.
-
Leverage, Liquidity, and Operating Efficiency: - Change in Leverage Criteria: Analyzes changes in the company’s leverage (debt). - Change in Current Ratio Criteria: Evaluates changes in the current ratio. - Number of Shares Criteria: Assesses the issuance of common shares.
-
Operating Efficiency and Asset Utilization: - Gross Margin Criteria: Examines the company’s gross margin, a measure of profitability. - Asset Turnover Ratio Criteria: Evaluates the efficiency of asset utilization and sales generation.
The Piotroski Score is calculated by summing the scores assigned to each of the nine criteria. The maximum possible score is 9, indicating the highest financial strength, while the minimum score is 0, suggesting potential financial weaknesses.
Note that the Piostroski Score has been developed many decades ago and that it is important to always compare the same sectors. E.g. it could be that it is quite normal that a firm issues shares each year which nets a lower score even though it is a normal practice in that sector.
Please see Piotroski, Joseph D. “Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers.” Journal of Accounting Research, Vol. 38, Supplement, 2000, pp. 1-41.
Also known as: Piotroski F-score, financial strength, quality score.
No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Piotroski Score for you. Just ask in plain English.
Calculate the Piotroski Score in Python
The Piotroski Score is available in the Models module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_piotroski_score as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "TSLA", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.models.get_piotroski_score().loc["AAPL"]
Which returns:
| 2022 | 2023 | 2024 | 2025 | 2026 | |
|---|---|---|---|---|---|
| Return on Assets Criteria | 1 | 1 | 1 | 1 | nan |
| Operating Cashflow Criteria | 1 | 1 | 1 | 1 | nan |
| Change in Return on Assets Criteria | 1 | 0 | 0 | 1 | nan |
| Accruals Criteria | 1 | 1 | 1 | 0 | nan |
| Change in Leverage Criteria | 1 | 1 | 1 | 1 | nan |
| Change in Current Ratio Criteria | 0 | 1 | 0 | 1 | nan |
| Number of Shares Criteria | 1 | 1 | 1 | 1 | nan |
| Gross Margin Criteria | 1 | 1 | 1 | 1 | nan |
| Asset Turnover Criteria | 1 | 0 | 1 | 1 | nan |
| Piotroski Score | 8 | 7 | 7 | 8 | nan |
Periods for which the financial statements have not been reported yet are returned as NaN rather than being scored zero across the board.
Parameters
get_piotroski_score accepts the following parameters:
- trailing (int | None, optional): The trailing period to use for the calculation. Defaults to None.
- show_columns (list[str] | None, optional): List of columns to show in the results. If None, all columns will be shown. Defaults to None.
Related Models
The Models module page introduces the module, and the sidebar lists all of its functions.