Net Operating Assets
Calculate the net operating assets of Hirshleifer, Hou, Teoh and Zhang (2004): the operating assets minus the operating liabilities, scaled by the total assets at the start of the period.
Net operating assets are the cumulative difference between the operating income and the free cash flow a company has reported over the years, so a high value means its earnings have run ahead of its cash for a long time (a bloated balance sheet). Hirshleifer et al. show that investors overlook this, so that companies with high net operating assets earn lower earnings growth and lower returns over the following years than those with low net operating assets.
The formula is as follows:
\[\text{Operating Assets} = \text{Total Assets} - \text{Cash and Short Term Investments}\] \[\text{Operating Liabilities} = \text{Total Assets} - \text{Short Term Debt} - \text{Long Term Debt} - \text{Total Equity}\] \[\text{Net Operating Assets} = (\text{Operating Assets} - \text{Operating Liabilities}) / \text{Beginning Total Assets}\]The paper deducts the debt in current liabilities, the long term debt, the minority interest, the preferred stock and the common equity from the total assets for the operating liabilities; the total equity here holds the last three. The debt is the short and long term debt rows of the statements, without separately reported lease liabilities. The cash is the cash and cash equivalents plus the short term investments. The balances are those at the end of the period and the beginning total assets those at the end of the period before (the year before with annual data, the quarter before with quarterly data, as in the quarterly version of Hou, Xue and Zhang). Beginning total assets of zero or less give NaN.
Also known as: NOA, scaled net operating assets, balance sheet bloat.
Net Operating Assets in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_net_operating_assets 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_net_operating_assets()
Or, after setting up the Finance Toolkit MCP, ask:
How large were the net operating assets of Apple, Microsoft, Coca-Cola and ExxonMobil relative to their total assets from 2021 to 2025?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| AAPL | 0.3865 | 0.3488 | 0.3166 | 0.2791 | 0.3225 |
| KO | 0.6335 | 0.5654 | 0.6024 | 0.5765 | 0.6554 |
| MSFT | 0.2319 | 0.3343 | 0.3898 | 0.5937 | 0.5703 |
| XOM | 0.6453 | 0.6218 | 0.5927 | 0.7582 | 0.6604 |
Parameters
get_net_operating_assets 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 |