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 or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_extended_dupont_analysis as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["MSFT"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.models.get_extended_dupont_analysis()
Or, after setting up the Finance Toolkit MCP, ask:
What drove Microsoft's return on equity from 2021 to 2025, according to an extended DuPont analysis?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| Interest Burden Ratio | 1.017 | 1.004 | 1.0089 | 0.985 | 0.9619 |
| Tax Burden Ratio | 0.8617 | 0.8689 | 0.8102 | 0.8177 | 0.8237 |
| Operating Profit Margin | 0.4159 | 0.4206 | 0.4177 | 0.4464 | 0.4562 |
| Asset Turnover | 0.5293 | 0.5676 | 0.5456 | 0.5305 | 0.4981 |
| Equity Multiplier | 2.4399 | 2.2643 | 2.0839 | 1.9468 | 1.8484 |
| Return on Equity | 0.4708 | 0.4715 | 0.3882 | 0.3713 | 0.3328 |
Parameters
get_extended_dupont_analysis 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 values. Defaults to False. | True |
lag | int | list[int] | The lag to use for the growth calculation. Defaults to 1. | 4 |
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 | None | The trailing period to use for the calculation. Defaults to None. | 4 |
show_columns | list[str] | None | Restrict the result to these columns. Defaults to None, which shows all columns. | ["Operating Profit Margin", "Return on Equity"] |