ROE of 20% — Is That Good? Check Historical & Industry Percentiles First
4-section structure: Concept / How We Compute / How to Read / Caveats.
1. Concept
"This company's ROE is 20%" — sounds impressive. But:
- Semiconductor industry average ROE = 25% → this is merely average
- Traditional industries average 8% → this is a star
Absolute values alone don't decide. You need relative positioning:
| Axis | Question |
|---|---|
| Self historical percentile | "Better than X% of this company's own history" |
| Industry percentile | "Better than Y% of same-sector peers today" |
Both together tell you if a number is impressive or pedestrian.
Same philosophy as P0.4 Relative Valuation — just extended to all financial ratios, not just P/E, P/B, P/S, yield.
2. How We Compute
2.1 Which Ratios?
All 30+: every row in the financial ratios table gets a percentile badge.
- Profitability: gross/operating/net margin, ROA, ROE, DuPont ROE
- Solvency: current ratio, quick ratio, interest coverage
- Leverage: debt ratio, equity multiplier
- Operational: turnovers, days outstanding, CCC
- Cash Flow: OCF/NI, FCF
- Growth: Revenue / NI / EPS / FCF YoY
2.2 Dual Percentile
Self 5y Percentile (H):
sample = past 20 quarters of this stock's same ratio
H = rank of latest_value in sample × 100%
Industry Percentile (I):
sample = all companies in same basic_info.sector, same year+quarter
I = rank of latest_value in sample × 100%
2.3 Direction Matters
Not all ratios are "higher is better":
| Direction | Examples | Coloring |
|---|---|---|
| higher_better | ROE, margins, current ratio, turnovers | High percentile → green |
| lower_better | Debt ratios, equity multiplier, CCC, days outstanding | High percentile → red (reversed) |
| neutral | Payout ratio (high isn't necessarily good) | Grey |
Frontend coloring auto-reverses per direction — green always means good, no mental math.
2.4 Latest Row Only
Historical rows show absolute values. Only the latest row gets percentile badges to avoid N×M query explosion. This matches how people read financials: trends from the curve, current status from the badges.
2.5 Sample Thresholds
- Industry < 8 → badge flagged ⚠
- Industry < 3 → industry percentile hidden
- Self history < 4 → self percentile hidden
2.6 Industry Definition
Uses basic_info.sector (TWSE major classification) + country filter. Same definition as P0.4 Relative Valuation for consistency.
3. How to Read
3.1 Badge Interpretation
Gross Margin 51.23% [H72] [I88]
- H72: better than 72% of own history → recent quarters trending up
- I88: better than 88% of peers → industry leader
- 🟢 Verdict: fundamentals upgrading across the board
Debt Ratio 38.2% [H45] [I15]
- direction = lower_better → high percentile means more debt (worse)
- H45: middle-low in own history
- I15: bottom 15% of industry (most peers have more debt)
- Green (due to lower_better reversal)
- 🟢 Verdict: less leveraged than most peers, structurally conservative
3.2 Four-Quadrant Reading
| Self | Industry | Verdict |
|---|---|---|
| 🟢 High | 🟢 High | Across-the-board leader — structural quality |
| 🟢 High | 🔴 Low | Improving but peers faster — sector taking off |
| 🔴 Low | 🟢 High | Declining but still beats peers — cyclical-bottom champion |
| 🔴 Low | 🔴 Low | Full retreat — warning |
3.3 Use Alongside Other Metrics
- Absolute value + badge together:
- Absolute value = "how much"
- Badge = "is this much good in context"
- Multiple metrics together:
- High ROE + high equity multiplier → juiced by leverage, not pure quality
- High margins + low turnover → high-margin but capital-inefficient
4. Caveats
⚠️ Coarse Sector Granularity
basic_info.sector is TWSE's major classification:
- "Semiconductors" mixes IC design / foundry / OSAT / IDM — totally different valuation logic
- "Electronic components" mixes PCB / connectors / passive / printed circuits
For extreme percentiles (>95 or <5), ask: is this genuinely "beating peers", or "the sector definition is too broad for meaningful comparison"?
⚠️ Self History Contaminated by Structural Changes
Companies that have undergone transformation (traditional → software), M&A (balance sheet reshaped), or business pivots have mixed distributions in their 5-year history. Percentiles lose meaning.
Mitigation: rely on industry percentile only, or wait 3+ years to accumulate new history.
⚠️ Latest Row Is a Snapshot
- At fiscal quarter boundaries, "latest row" may be last quarter (new one not yet reported)
- Some peers may have reported; some haven't → comparison period misaligned
UI shows latest: 2024 Q3 so you know which "same period" is being compared.
⚠️ Direction Defaults Aren't Perfect
- Turnover: generally higher is better, but retail with too-high turnover may mean "not enough inventory, customers leaving"
- Payout ratio: cash cow with high payout is good; high-growth with high payout means no reinvestment opportunities
We set payout as neutral; others have clear direction. Always combine with industry context.
⚠️ Percentile Isn't Complete Fundamental Analysis
Percentile tells you relative position, not:
- Will this performance continue?
- Is there a hidden risk event brewing?
- Is management excellent?
Percentile is a starting point, not the conclusion — find high-percentile stocks, then dig into fundamentals, industry dynamics, and valuation reasonableness.
Further Reading
- Relative Valuation Percentile (P0.4)
- Altman Z / Piotroski F / Beneish M (Financial Health Trio)
- ROE DuPont Analysis
Try It
- Open Stock Analysis → Financial Ratios: every ratio row has two small badges
- Rows with green H + I: this company's strengths
- Red I: lagging peers, investigate why
- Switch categories (profitability / structure / cash flow): see which areas are advantages
- Compare stocks: blue-chips vs speculatives show dramatically different badge distributions