Gross Profitability
Calculate the gross profitability of Novy-Marx (2013), the gross profit a company earns on its assets.
Novy-Marx shows that gross profit is the cleanest accounting measure of economic profitability: the further down the income statement, the more the profit is polluted by expenses that are really investments (selling, research and administrative expenses) or by financing and taxes. Gross profitability predicts stock returns about as well as book-to-market does, and profitable companies outperform unprofitable ones even though they trade at higher valuations, which makes it the profitability factor that complements value.
The formula is as follows:
\[\text{Gross Profitability} = (\text{Revenue} - \text{Cost of Goods Sold}) / \text{Total Assets}\]The total assets are those at the end of the fiscal year, the same date as the gross profit, as in the paper (a point in time, not averaged). Gross profitability is an annual measure, so with quarterly data the gross profit is that of the trailing twelve months by default.
Also known as: GP/A, gross profits to assets, gross profitability premium, Novy-Marx profitability.
Gross Profitability in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_gross_profitability as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["AAPL", "MSFT", "KO", "XOM"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.ratios.get_gross_profitability()
Or, after setting up the Finance Toolkit MCP, ask:
What gross profit did Apple, Microsoft, Coca-Cola and ExxonMobil earn on their total assets from 2021 to 2025?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| AAPL | 0.4354 | 0.4841 | 0.4797 | 0.495 | 0.5434 |
| KO | 0.2469 | 0.2695 | 0.2787 | 0.2858 | 0.2819 |
| MSFT | 0.3471 | 0.3717 | 0.3545 | 0.3339 | 0.3132 |
| XOM | 0.1914 | 0.2793 | 0.2236 | 0.1692 | 0.1564 |
Parameters
get_gross_profitability accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit (4 unless set otherwise). | 2 |
growth | bool | Whether to calculate the growth of the ratios. Defaults to False. | True |
lag | int | list[int] | The lag to use for the growth calculation. Defaults to 1. | 4 |
compound | bool | Whether the growth is the compound annual growth rate over the lag (e.g. lag=5 for the five-year CAGR) instead of the total change. Defaults to False. | False |
standardize | bool | Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False. | True |
trailing | int | The number of periods to sum the revenue and cost of goods sold over; the total assets stay those at the end of the last period. Defaults to None, which uses the trailing twelve months (4 quarters) with quarterly data and single years with annual data. | 4 |