Return on Invested Capital (RoIC)
Calculate the return on invested capital (ROIC), a financial ratio that measures the company’s return on the capital invested in it, including both equity and debt.
The return on invested capital is calculated by dividing the net operating profit after taxes (NOPAT) by the average invested capital: total equity plus total debt (Damodaran). NOPAT is operating income (EBIT) taxed at the effective tax rate (Income Tax Expense / Income Before Tax, bounded to [0, 1]; set to 0 for a period with a pre-tax loss). Because EBIT is before interest, the return does not depend on how the capital is financed, which makes the ratio a measure of how efficiently a company generates returns for all of its investors. Cash is not deducted from the invested capital: for companies that hold large cash balances, deducting it can shrink the base to near zero or below.
The formula is as follows:
\[\text{Return on Invested Capital} = \text{Operating Income}\; x (1 - \text{Effective Tax Rate}) / (\text{Average Total Equity} + \text{Average Total Debt})\]ROIC is compared with the weighted average cost of capital (Toolkit.models.get_weighted_average_cost_of_capital): a company that earns more than its cost of capital creates value as it invests and grows, one that earns less destroys it. It is less distorted by buybacks and leverage than ROE.
Also known as: ROIC, return on capital (ROC).
Return on Invested Capital (RoIC) in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_return_on_invested_capital as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["CAT", "DE", "CMI"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.ratios.get_return_on_invested_capital()
Or, after setting up the Finance Toolkit MCP, ask:
What return on invested capital did Caterpillar, Deere and Cummins earn from 2021 to 2025?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| CAT | 0.1015 | 0.1127 | 0.1853 | 0.1823 | 0.1392 |
| CMI | 0.1541 | 0.1392 | 0.051 | 0.1728 | 0.1486 |
| DE | 0.0949 | 0.1008 | 0.1439 | 0.1014 | 0.0754 |
Parameters
get_return_on_invested_capital 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 flows (income and cash flow statement items) over, with balance sheet items averaged over the same number of period ends. E.g. 4 with quarterly data gives the trailing twelve months (TTM) and 3 with annual data a three-year cumulative figure. Defaults to None, which uses single-period flows (per quarter and not annualized with quarterly data). | 4 |