Extended DuPont Analysis
Perform an Extended Dupont analysis to breakdown the return on equity (ROE) into its components, while considering additional financial metrics.
The Extended Dupont analysis splits the three-factor decomposition’s Net Profit Margin into three separate drivers - the Tax Burden, the Interest Burden and the Operating Profit Margin - so that the effect of taxation, of financing costs and of operating performance on the return on equity (ROE) can be read separately.
The formula is as follows:
\[\text{Interest Burden Ratio} = \text{Income Before Tax} / \text{Operating Income}\] \[\text{Tax Burden Ratio} = \text{Net Income} / \text{Income Before Tax}\] \[\text{Operating Profit Margin} = \text{Operating Income} / \text{Revenue}\] \[\text{Asset Turnover} = \text{Revenue} / \text{Average Total Assets}\] \[\text{Equity Multiplier} = \text{Average Total Assets} / \text{Average Total Equity}\] \[\text{ROE} = \text{Interest Burden Ratio} \cdot \text{Tax Burden Ratio} \cdot \text{Operating Profit Margin} \cdot \text{Asset Turnover} \cdot \text{Equity Multiplier}\]Also known as: extended DuPont, five-factor DuPont, ROE breakdown.
Extended DuPont Analysis in Python
get_extended_dupont_analysis is part of the Models module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_extended_dupont_analysis as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")
extended_dupont_analysis = toolkit.models.get_extended_dupont_analysis()
extended_dupont_analysis.loc["AAPL"]
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| Interest Burden Ratio | 0.9976 | 1.0028 | 1.005 | 0.9978 | 1.0024 |
| Tax Burden Ratio | 0.869 | 0.8356 | 0.8486 | 0.7607 | 0.8419 |
| Operating Profit Margin | 0.2985 | 0.302 | 0.2967 | 0.3158 | 0.3189 |
| Asset Turnover | 1.0841 | 1.1206 | 1.0868 | 1.0899 | 1.1493 |
| Equity Multiplier | 5.255 | 6.1862 | 6.252 | 6.0251 | 5.5418 |
| Return on Equity | 1.4744 | 1.7546 | 1.7195 | 1.5741 | 1.7142 |
Parameters
get_extended_dupont_analysis accepts the following parameters:
- rounding (int, optional): The number of decimals to round the results to. Defaults to 4.
- growth (bool, optional): Whether to calculate the growth of the values. Defaults to False.
- lag (int | str, 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.