A measure of how efficiently a company uses shareholders' equity to generate profit, calculated as net income divided by shareholders' equity.
In Plain English
Return on equity answers the most fundamental question in capital allocation: for every dollar shareholders have invested in this company, how many cents of profit does the company generate? An ROE of 20% means the company earned 20 cents in profit for every dollar of equity capital. An ROE of 5% means it earned 5 cents.
High ROE signals a business with genuine competitive advantages — pricing power, low capital requirements, brand loyalty, or operational efficiency. Apple, for example, consistently generates ROE above 100% (possible because of significant share buybacks that reduce the equity base). Amazon Web Services generates far higher ROE than Amazon's retail operations. Comparing ROE across a company's segments can reveal which parts of the business are truly creating value.
The DuPont decomposition breaks ROE into three drivers, which is enormously useful for diagnosis:
- Profit margin: How much of each revenue dollar becomes profit?
- Asset turnover: How efficiently are assets being used to generate revenue?
- Financial leverage: How much debt is amplifying returns to equity?
Two companies can have the same ROE for very different reasons. A luxury goods company might have high ROE from fat margins with modest leverage. A retailer might achieve the same ROE with razor-thin margins but tremendous asset turnover and modest leverage. A financial institution might arrive at the same number through high leverage on modest margins. Understanding which lever is driving ROE matters enormously for assessing sustainability and risk.
The catch with leverage-driven ROE is that it works both ways. Leverage amplifies gains in good times and amplifies losses in bad times. ROE inflated by excessive debt can collapse violently when business conditions deteriorate — see virtually every financial crisis.
Technical Definition
ROE = Net Income / Average Shareholders' Equity
DuPont 3-factor decomposition:
ROE = (Net Income/Revenue) × (Revenue/Total Assets) × (Total Assets/Equity) ROE = Net Profit Margin × Asset Turnover × Equity Multiplier (Leverage)
Extended DuPont (5-factor):
ROE = Tax Burden × Interest Burden × EBIT Margin × Asset Turnover × Equity Multiplier
where Tax Burden = Net Income / Pretax Income, Interest Burden = Pretax Income / EBIT.
Piotroski F-Score includes ROA (not ROE) as signal F₁ to avoid the leverage distortion. ROA = Net Income / Average Total Assets = ROE / Equity Multiplier, making it a purer measure of operational profitability.
Sustainable growth rate = ROE × Retention Ratio (1 − payout ratio). A company can grow at the sustainable growth rate without raising external capital.
How VectorFin Uses This
VectorFin's whystock_score incorporates ROE improvement as a quality signal. The Piotroski component specifically uses ROA (the leverage-adjusted version) and tracks whether ROA is improving year over year (F₃), since improving ROA from business operations is a stronger quality signal than ROE inflated by share buybacks.
The NLP layer captures management commentary on return on capital in earnings calls. Language around "expanding returns on invested capital," "capital efficiency," or "disciplined capital allocation" tends to precede positive ROE trends in subsequent quarters.
GET https://api.vectorfinancials.com/v1/signals/whystock-score/{ticker}?date=2024-10-01
GET https://api.vectorfinancials.com/v1/embeddings/search # POST: query about capital efficiencyCode Example
import requests
API_BASE = "https://api.vectorfinancials.com"
API_KEY = "vf_your_api_key_here"
# Search for management commentary on return on capital and equity efficiency
resp = requests.post(
f"{API_BASE}/v1/embeddings/search",
json={
"query": "return on invested capital ROIC improving capital efficiency disciplined allocation",
"tickers": ["JPM", "BAC", "GS", "MS", "WFC"],
"period_start": "2024-Q1",
"period_end": "2024-Q4",
"source": "earnings_call",
"top_k": 5,
},
headers={"X-API-Key": API_KEY},
)
print("Earnings call passages about return on capital (banks):")
for r in resp.json()["results"]:
print(f"\n{r['ticker']} {r['period']} (score: {r['score']:.3f})")
print(f" {r['text'][:250]}")
# Compare quality scores (includes ROE/ROA improvement component)
print("\n\nQuality scores:")
for ticker in ["JPM", "BAC", "GS"]:
resp2 = requests.get(
f"{API_BASE}/v1/signals/whystock-score/{ticker}",
params={"date": "2024-10-01"},
headers={"X-API-Key": API_KEY},
)
if resp2.ok:
print(f" {ticker}: {resp2.json()['score']:.3f}")Related Terms
External References
Put Return on Equity (ROE) to work in your pipeline
Access AI-ready financial data — embeddings, signals, Iceberg tables.