Capital Allocation Score¶
Measures how effectively management deploys capital — the difference between a company that compounds value and one that destroys it.
Score: 0–100
Rating: excellent (≥75) | good (50–74) | fair (25–49) | poor (<25)
Signals¶
| Signal | Weight | Logic |
|---|---|---|
| Value Creation (ROIC vs WACC) | 35% | (ROIC − WACC) spread and its trend; positive, growing spread = compounding value |
| FCF Quality | 25% | OCF / Net Income and FCF margin trend; cash-backed earnings indicate durable business model |
| Reinvestment Yield | 25% | Incremental revenue growth per dollar of new invested capital; high ROIIC signals productive reinvestment |
| Payout Discipline | 15% | Dividend and buyback activity relative to FCF and ROIC; rewards capital returned only when above-WACC opportunities are scarce |
Usage¶
from fin_ratios.utils.capital_allocation import (
capital_allocation_score_from_series,
capital_allocation_score,
)
from fin_ratios.fetchers.edgar import fetch_edgar
annual_data = fetch_edgar('MSFT', num_years=7)
score = capital_allocation_score_from_series(annual_data, wacc=0.09)
print(score.score) # 78
print(score.rating) # 'excellent'
print(score.table()) # signal breakdown table
# One-liner
score = capital_allocation_score('MSFT', years=7, source='yahoo', wacc=0.09)
import { capitalAllocationScoreFromSeries } from 'fin-ratios'
import { fetchEdgarFlat } from 'fin-ratios/fetchers/edgar'
const annualData = await fetchEdgarFlat('MSFT')
const score = capitalAllocationScoreFromSeries(annualData, 0.09)
console.log(score.score) // 78
console.log(score.rating) // 'excellent'
Output Structure¶
@dataclass
class CapitalAllocationScore:
score: int
rating: str # excellent / good / fair / poor
components: CapitalAllocationComponents
evidence: list[str]
interpretation: str
wacc_used: float
years_analyzed: int
@dataclass
class CapitalAllocationComponents:
value_creation: float # 0–1
fcf_quality: float # 0–1
reinvestment_yield: float # 0–1
payout_discipline: float # 0–1
Minimum Data Requirements¶
- At least 3 years of data
net_income,operating_cash_flow,capex,total_equity,total_debt,cashneeded for all signals
References¶
- Mauboussin, M. (2012). The Importance of Capital Allocation. Credit Suisse.
- Koller, T., Goedhart, M., Wessels, D. (2020). Valuation (7th ed.). McKinsey & Company.