Residual Income
Residual Income is a measure of the profit a company generates in excess of the return required by its equity holders. It is the equity-side counterpart to Economic Value Added (EVA), and underpins the Residual Income Model, an alternative equity valuation lens to a traditional Discounted Cash Flow (DCF) that is particularly useful when a company’s free cash flows are negative or unpredictable but its accounting earnings are more stable.
The formula is as follows:
\[\text{Residual Income} = \text{Net Income} - (\text{Cost of Equity} \cdot \text{Book Value of Equity})\]Also known as: RI, economic profit (equity variant), abnormal earnings.
Residual Income in Python
get_residual_income is part of the Models module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_residual_income as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.models.get_residual_income().loc["AAPL"]
Which returns:
| 2021 | 2022 | |
|---|---|---|
| Net Income | 9.4680e+10 | 9.9803e+10 |
| Cost of Equity | 0.3757 | -0.2485 |
| Book Value of Equity | 6.4215e+10 | 5.6881e+10 |
| Residual Income | 7.0554e+10 | 1.1394e+11 |
Parameters
get_residual_income accepts the following parameters:
- rounding (int, optional): The number of decimals to round the results to. Defaults to None.
- growth (bool, optional): Whether to calculate the growth of the values. Defaults to False.
- lag (int | list[int], optional): The lag to use for the growth calculation. Defaults to 1.
- standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.
- 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.