Montier C-Score
Calculate James Montier’s C-Score, a count from 0 to 6 of warning signs that a company is “cooking the books”. Each sign is 1 when present:
- A growing gap between net income and cash flow from operations.
- Rising days sales outstanding: receivables growing faster than sales.
- Rising days sales of inventory: inventory growing faster than cost of sales.
- Rising other current assets relative to revenue, a place to park costs.
- Falling depreciation relative to gross property, plant and equipment, which flatters earnings.
- Total asset growth above 10%, typical of serial acquirers.
Montier found that companies scoring 5 or 6 underperformed the market markedly.
For more information, see the following paper:
- Montier, J. (2008). “Cooking the Books, or, More Sailing Under the Black Flag.” Société Générale, Mind Matters.
Also known as: C-Score, cooking the books score.
Montier C-Score in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_montier_c_score as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["AAPL", "MSFT", "SMCI"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.models.get_montier_c_score().xs("C-Score", level=1)
Or, after setting up the Finance Toolkit MCP, ask:
What was the Montier C-Score of Apple, Microsoft and Super Micro Computer from 2021 to 2025?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| AAPL | 4 | 2 | 3 | 2 | 3 |
| MSFT | 5 | 2 | 5 | 3 | 2 |
| SMCI | 3 | 5 | 2 | 5 | 2 |
Parameters
get_montier_c_score accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
trailing | int | None | Sum the flows over this many periods (e.g. 4 quarters, a trailing twelve months) and compare with the values trailing periods back, so that with quarterly data every change is year over year. Balance sheet items are taken at the period end. Defaults to None, which is 4 for quarterly data (a year) and 1 otherwise; pass 1 for quarterly data to compare quarter over quarter. | 4 |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the Toolkit’s rounding. | 2 |
show_columns | list[str] | None | The periods to show. Defaults to None, all periods. | None, all periods |