biz-dupont
用杜邦分析把 ROE 拆成利潤率、週轉率、槓桿
中文翻譯
---
name: "biz-dupont"
description: "套用杜邦分析,把股東權益報酬率(ROE)拆解成獲利能力、效率和槓桿三個成分。當使用者需要診斷 ROE 為什麼高或低、比較不同公司的財務績效驅動因素、或找出該拉動哪個營運槓桿時使用,即使他們說的是「為什麼我們的 ROE 在下滑」或「我們怎麼提高報酬」也一樣。"
metadata:
category: "WP-15 商學院—財務"
tags: ["finance", "dupont", "roe-analysis"]
---
# 杜邦分析(DuPont Analysis)
## 概述
杜邦分析把 ROE 拆成三個相乘的成分:淨利率 × 資產週轉率 × 權益乘數。這能看出 ROE 是由獲利能力、效率還是槓桿所驅動,對診斷和比較至關重要。
## 何時使用
**觸發條件:**
- 使用者問「我們的 ROE 為什麼高/低?」
- 使用者在比較不同公司的財務績效
- 使用者需要找出哪個營運槓桿能提高報酬
- 使用者在分析營收以外的獲利能力
**何時不要用:**
- 公司估值 → 用 DCF
- 完整的比率分析 → 用財務比率 skill
- 策略定位 → 用 SWOT
## 框架
```
鐵律:三因子分解
ROE = 淨利率 × 資產週轉率 × 權益乘數
= (淨利/營收) × (營收/總資產) × (總資產/權益)
三個因子「都必須」計算和分析。只報告 ROE 而不分解,
就像只報告發燒,卻沒檢查症狀。
```
```
鐵律:高槓桿 ≠ 好績效
高權益乘數(資產/權益)會透過負債灌高 ROE。
一家利潤率 5%、週轉率 1.0x、槓桿 6x 的公司,ROE 是 30%,
但只要一季表現不好,就面臨無力償債。
當槓桿是主要驅動因素時,一定要標出來。
```
### 步驟 1:計算三個成分
| 成分 | 公式 | 衡量什麼 |
|-----------|---------|-----------------|
| 淨利率 | 淨利 / 營收 | 獲利能力:每一塊錢營收有多少變成利潤 |
| 資產週轉率 | 營收 / 總資產 | 效率:資產創造營收的能力 |
| 權益乘數 | 總資產 / 股東權益 | 槓桿:負債把股權報酬放大多少 |
### 步驟 2:診斷驅動因素
把每個成分和產業基準及趨勢做比較:
- **利潤率驅動的 ROE**:高端品牌、科技公司(高利潤率、較低週轉)
- **週轉率驅動的 ROE**:零售、速食(低利潤率、高週轉)
- **槓桿驅動的 ROE**:銀行、不動產(中等利潤率、高槓桿),要標出風險
### 步驟 3:趨勢分析
計算 3-5 年的杜邦成分。找出:
- 哪個成分在改善/惡化?
- ROE 的改善是來自營運(利潤率、週轉率),還是財務操作(槓桿)?
### 步驟 4:同業比較
比較各競爭對手的杜邦成分,找出相對的強項/弱項。
## 輸出格式
> ⚠️ **小數 vs 百分比**:隨附的腳本回傳的 ROE 和所有利潤率/負擔成分,都是**小數**
> (`0.2014` 代表 20.14%,不是 `20.14`)。下方的敘述表格為了人類閱讀,會呈現成百分比,
> 但 JSON 輸出和任何下游 pipeline 都必須一致使用小數。
```markdown
# 杜邦分析:{公司}
## ROE 分解
| 成分 | 數值 | 產業平均 | 趨勢(3 年) |
|-----------|-------|-------------|-------------|
| 淨利率 | X% | X% | ↑/↓/→ |
| 資產週轉率 | X.Xx | X.Xx | ↑/↓/→ |
| 權益乘數 | X.Xx | X.Xx | ↑/↓/→ |
| **ROE** | **X%** | **X%** | ↑/↓/→ |
## 診斷
- 主要的 ROE 驅動因素:{利潤率 / 週轉率 / 槓桿}
- 風險警示:{如果適用,說明槓桿的疑慮}
## 同業比較
| 公司 | 利潤率 | 週轉率 | 槓桿 | ROE |
|---------|--------|----------|----------|-----|
| {公司} | X% | X.Xx | X.Xx | X% |
| {同業 A} | ... | ... | ... | ... |
## 建議
1. {該改善哪個槓桿、怎麼改善}
```
## 範例
### 正確的應用
**情境:** 兩家台灣零售業者的杜邦分析
| | 公司 A | 公司 B |
|---|---|---|
| 淨利率 | 2% | 8% |
| 資產週轉率 | 3.5x | 1.2x |
| 權益乘數 | 2.0x | 2.0x |
| **ROE** | **14%** | **19.2%** |
診斷:公司 A 是週轉率驅動(高銷量、低利潤率的零售)。公司 B 是利潤率驅動(高端定位)。兩者槓桿相近,ROE 的差異來自營運 ✓
### 錯誤的應用
- ROE 是 25%,沒有分解就報告為「很優秀」。結果是:利潤率 3%、週轉率 1.0x、槓桿 8.3x → 幾乎完全由槓桿驅動,風險極高。違反鐵律:必須分解。
## 常見陷阱
- **延伸的 5 因子杜邦**:要更深入分析的話,把利潤率拆成稅負 × 利息負擔 × 營業利益率。在比較不同稅制地區時很有用。
- **負權益會讓模型失效**:有累積虧損的公司可能權益為負,使乘數失去意義。要註明,並改用其他指標。
- **一次性項目會扭曲利潤率**:要使用正規化/調整後的淨利,避免因資產出售、減損或法律和解造成單一年度的暴衝。
- **週轉率因產業而差異極大**:輕資產的事業(SaaS)天生週轉率高。重資本的事業(製造業)週轉率低。只在同產業內比較。
## 腳本
| 腳本 | 說明 | 用法 |
|--------|-------------|-------|
| `scripts/dupont.py` | 把 ROE 分解成 3 因子或 5 因子的杜邦成分 | `python scripts/dupont.py --help` |
執行 `python scripts/dupont.py --verify` 可以跑內建的健全性測試。
## 參考資料
- 5 因子杜邦的延伸,見 `references/extended-dupont.md`英文原文
---
name: "biz-dupont"
description: "Apply DuPont Analysis to decompose Return on Equity (ROE) into profitability, efficiency, and leverage components. Use this skill when the user needs to diagnose why ROE is high or low, compare financial performance drivers across companies, or identify which operational lever to pull — even if they say 'why is our ROE declining' or 'how do we improve returns'."
metadata:
category: "WP-15 商學院—財務"
tags: ["finance", "dupont", "roe-analysis"]
---
# DuPont Analysis
## Overview
DuPont decomposes ROE into three multiplicative components: Net Profit Margin × Asset Turnover × Equity Multiplier. This reveals whether ROE is driven by profitability, efficiency, or leverage — critical for diagnosis and comparison.
## When to Use
**Trigger conditions:**
- User asks "why is our ROE high/low?"
- User comparing financial performance across companies
- User needs to identify which operational lever improves returns
- User analyzing profitability beyond top-line metrics
**When NOT to use:**
- For company valuation → use DCF
- For comprehensive ratio analysis → use Financial Ratios skill
- For strategic positioning → use SWOT
## Framework
```
IRON LAW: Three-Factor Decomposition
ROE = Net Profit Margin × Asset Turnover × Equity Multiplier
= (Net Income/Revenue) × (Revenue/Total Assets) × (Total Assets/Equity)
All three factors MUST be calculated and analyzed. Reporting ROE without
decomposition is like reporting a fever without checking symptoms.
```
```
IRON LAW: High Leverage ≠ Good Performance
A high Equity Multiplier (Assets/Equity) inflates ROE through debt.
A company with 5% margin, 1.0x turnover, and 6x leverage has ROE of 30% —
but is one bad quarter away from insolvency. Always flag when leverage
is the dominant driver.
```
### Step 1: Calculate the Three Components
| Component | Formula | What It Measures |
|-----------|---------|-----------------|
| Net Profit Margin | Net Income / Revenue | Profitability — how much of each dollar of revenue becomes profit |
| Asset Turnover | Revenue / Total Assets | Efficiency — how well assets generate revenue |
| Equity Multiplier | Total Assets / Shareholders' Equity | Leverage — how much debt amplifies equity returns |
### Step 2: Diagnose the Driver
Compare each component to industry benchmarks and trends:
- **Margin-driven ROE**: Premium brands, tech companies (high margin, lower turnover)
- **Turnover-driven ROE**: Retail, fast food (low margin, high turnover)
- **Leverage-driven ROE**: Banks, real estate (moderate margin, high leverage) — flag the risk
### Step 3: Trend Analysis
Calculate DuPont components for 3-5 years. Identify:
- Which component is improving/declining?
- Is improving ROE driven by operations (margin, turnover) or financial engineering (leverage)?
### Step 4: Peer Comparison
Compare DuPont components across competitors to identify relative strengths/weaknesses.
## Output Format
> ⚠️ **Decimal vs percent**: The bundled script returns ROE and all margin/burden
> components as **decimals** (`0.2014` means 20.14%, NOT `20.14`). The narrative
> table below renders them as percentages for humans, but JSON outputs and any
> downstream pipeline must use decimals consistently.
```markdown
# DuPont Analysis: {Company}
## ROE Decomposition
| Component | Value | Industry Avg | Trend (3yr) |
|-----------|-------|-------------|-------------|
| Net Profit Margin | X% | X% | ↑/↓/→ |
| Asset Turnover | X.Xx | X.Xx | ↑/↓/→ |
| Equity Multiplier | X.Xx | X.Xx | ↑/↓/→ |
| **ROE** | **X%** | **X%** | ↑/↓/→ |
## Diagnosis
- Primary ROE driver: {margin / turnover / leverage}
- Risk flag: {leverage concern if applicable}
## Peer Comparison
| Company | Margin | Turnover | Leverage | ROE |
|---------|--------|----------|----------|-----|
| {Company} | X% | X.Xx | X.Xx | X% |
| {Peer A} | ... | ... | ... | ... |
## Recommendations
1. {Which lever to improve and how}
```
## Examples
### Correct Application
**Scenario:** DuPont for two Taiwanese retailers
| | Company A | Company B |
|---|---|---|
| Net Profit Margin | 2% | 8% |
| Asset Turnover | 3.5x | 1.2x |
| Equity Multiplier | 2.0x | 2.0x |
| **ROE** | **14%** | **19.2%** |
Diagnosis: Company A is turnover-driven (high-volume, low-margin retail). Company B is margin-driven (premium positioning). Both have similar leverage — ROE difference comes from operations ✓
### Incorrect Application
- ROE is 25% and reported as "excellent" without decomposition. Turns out: Margin 3%, Turnover 1.0x, Leverage 8.3x → Almost entirely leverage-driven, extremely risky. Violates Iron Law: must decompose.
## Gotchas
- **Extended 5-factor DuPont**: For deeper analysis, decompose margin into Tax Burden × Interest Burden × Operating Margin. Useful when comparing across tax jurisdictions.
- **Negative equity breaks the model**: Companies with accumulated losses can have negative equity, making the multiplier meaningless. Note and use alternative metrics.
- **One-time items distort margin**: Use normalized/adjusted net income to avoid single-year spikes from asset sales, write-downs, or legal settlements.
- **Turnover varies wildly by industry**: Asset-light businesses (SaaS) have naturally high turnover. Capital-heavy businesses (manufacturing) have low turnover. Compare within industry only.
## Scripts
| Script | Description | Usage |
|--------|-------------|-------|
| `scripts/dupont.py` | Decompose ROE into 3-factor or 5-factor DuPont components | `python scripts/dupont.py --help` |
Run `python scripts/dupont.py --verify` to execute built-in sanity tests.
## References
- For 5-factor DuPont extension, see `references/extended-dupont.md`