claude-skills/finance/skills/stock-analysis/scripts/benchmarks.json
2026-08-06 09:40:15 +05:30

1608 lines
200 KiB
JSON

{
"_note": "INDICATIVE DEFAULTS, MEANT TO BE EDITED. Every threshold in this file is a starting reference, not a fact. Benchmark levels move with market, cycle, accounting regime, interest rates and period. Where you have a real peer set with comparable accounting and aligned fiscal periods, PERCENTILE COMPARISON AGAINST THAT PEER SET OVERRIDES THESE ABSOLUTE BANDS — pass peer_values or peer_percentile in the input and score.py will use it in preference to the band below. Where a company has a long, stable, comparable own history, own-history scoring (basis: own_history) overrides the band too. Treat an unedited run as a first draft of a scorecard, and say so in the report.",
"_version": "1.0",
"_scale": {
"min": 0.0,
"max": 10.0,
"anchors": {
"poor": 2.5,
"average": 5.0,
"good": 7.5,
"excellent": 10.0
},
"note": "Metric values are mapped onto 0-10 by piecewise-linear interpolation between the four threshold anchors. Values beyond the 'excellent' anchor clamp at 10. Values beyond 'poor' fall linearly to 0 over one further band width. 'band' metrics score 10 inside the excellent interval and taper outward. 'judgement' metrics are supplied directly on the 0-10 scale by the analyst, with a written justification."
},
"_categories": {
"business_quality": {
"label": "Business quality & moat",
"why": "Whether the economics are structurally defensible. Everything else decays toward the industry mean without this."
},
"profitability": {
"label": "Profitability & returns on capital",
"why": "What the business earns on the money tied up in it. Return on capital, not margin, is what compounds."
},
"earnings_quality": {
"label": "Earnings quality & cash conversion",
"why": "Whether reported profit turns into cash. Profit is an opinion; cash is a fact."
},
"balance_sheet": {
"label": "Balance sheet & solvency",
"why": "Whether the company survives a bad two years. Solvency is the precondition for every other virtue mattering."
},
"growth": {
"label": "Growth & reinvestment",
"why": "Whether there is somewhere to put the next rupee at the same return. Growth without incremental returns destroys value."
},
"governance": {
"label": "Governance & management",
"why": "Who controls the cash flows and whether minority owners get their share of them."
},
"valuation": {
"label": "Valuation & margin of safety",
"why": "What the price already assumes. A great business at a price that assumes perfection is a poor investment."
},
"risk": {
"label": "Risk",
"why": "Concentration, regulation, cyclicality, key-person and tail exposures that can invalidate the thesis regardless of the fundamentals."
}
},
"_category_weights": {
"business_quality": 0.15,
"profitability": 0.20,
"earnings_quality": 0.15,
"balance_sheet": 0.12,
"growth": 0.12,
"governance": 0.10,
"valuation": 0.10,
"risk": 0.06
},
"_weight_presets": {
"default": {
"note": "Balanced quality-and-price view. Use unless the user states an objective."
},
"quality_compounder": {
"note": "Long-hold quality bias: pays up for durability, tolerates a fuller price.",
"weights": {
"business_quality": 0.22,
"profitability": 0.22,
"earnings_quality": 0.16,
"balance_sheet": 0.10,
"growth": 0.12,
"governance": 0.10,
"valuation": 0.05,
"risk": 0.03
}
},
"deep_value": {
"note": "Price and balance-sheet led. Survival and discount matter more than moat.",
"weights": {
"business_quality": 0.08,
"profitability": 0.12,
"earnings_quality": 0.14,
"balance_sheet": 0.20,
"growth": 0.04,
"governance": 0.12,
"valuation": 0.24,
"risk": 0.06
}
},
"income": {
"note": "Distribution durability led. Cash conversion and solvency dominate.",
"weights": {
"business_quality": 0.14,
"profitability": 0.14,
"earnings_quality": 0.22,
"balance_sheet": 0.20,
"growth": 0.04,
"governance": 0.10,
"valuation": 0.10,
"risk": 0.06
}
},
"forensic": {
"note": "Fraud-screen bias for a company you already distrust. Use with the gates, not instead of them.",
"weights": {
"business_quality": 0.08,
"profitability": 0.10,
"earnings_quality": 0.26,
"balance_sheet": 0.16,
"growth": 0.04,
"governance": 0.26,
"valuation": 0.04,
"risk": 0.06
}
}
},
"_coverage": {
"min_category_coverage": 0.70,
"min_metrics_per_category": 2,
"note": "Composite is emitted as INDICATIVE ONLY when the weight of categories carrying at least one scored metric falls below min_category_coverage, or when any category weighted 10% or more is entirely empty. Missing categories are dropped and the remaining category weights renormalised to 1.0 — never scored as zero. A missing number is not a bad number."
},
"_gates": [
{
"id": "going_concern_doubt",
"label": "Auditor material uncertainty related to going concern",
"severity": "veto",
"why": "The auditor is saying the entity may not survive the next twelve months. No margin, return or multiple is meaningful against that. Averaging it into a composite converts a binary survival question into a rounding error.",
"evidence_needed": "Auditor's report — Material Uncertainty Related to Going Concern paragraph; 10-K Item 7 / Note 1 substantial-doubt disclosure."
},
{
"id": "fraud_investigation",
"label": "Active fraud, forensic audit or securities-regulator enforcement on the accounts",
"severity": "veto",
"why": "If the accounts themselves are under investigation, every input to the scorecard is of unknown reliability. You cannot score numbers you do not believe.",
"evidence_needed": "SEBI/SFIO/ED order or SEC enforcement action; exchange disclosure of a forensic audit; lender-mandated forensic audit."
},
{
"id": "adverse_or_disclaimer_opinion",
"label": "Adverse audit opinion or disclaimer of opinion",
"severity": "veto",
"why": "The auditor has declined to certify the financials. The scorecard has no valid inputs.",
"evidence_needed": "Independent Auditor's Report opinion paragraph."
},
{
"id": "payment_default",
"label": "Debt default, rating at D, or covenant breach not waived",
"severity": "veto",
"why": "Equity in a defaulting capital structure is an option, not an ownership stake, and is valued as such — not by a fundamental scorecard.",
"evidence_needed": "Rating rationale, exchange default disclosure (SEBI LODR Reg 51 / 30), 10-K subsequent events."
},
{
"id": "auditor_qualification",
"label": "Qualified audit opinion on the financial statements",
"severity": "cap",
"cap": 4.0,
"why": "A qualification is the auditor formally disagreeing with a number you are about to score. The disputed item is usually exactly the one driving the flattering ratio.",
"evidence_needed": "Basis for Qualified Opinion paragraph; quantify the effect if the auditor did."
},
{
"id": "auditor_resignation",
"label": "Auditor resigned mid-term or was replaced without a clean stated reason",
"severity": "cap",
"cap": 4.5,
"why": "Auditors rarely walk away from fee income. A mid-term exit is the single highest-information governance signal available, and it usually precedes restatement.",
"evidence_needed": "India: resignation letter filed under SEBI LODR + NFRA/ICAI context. US: Item 4.01 8-K and the Item 304 disagreement disclosure."
},
{
"id": "material_restatement",
"label": "Material restatement of prior-period financials",
"severity": "cap",
"cap": 5.0,
"why": "A restatement invalidates the multi-year series that every trend, CAGR and own-history comparison in this scorecard rests on.",
"evidence_needed": "Restated comparatives in the annual report; US Item 4.02 8-K (non-reliance)."
},
{
"id": "cashflow_profit_divergence",
"label": "Cumulative operating cash flow below 50% of cumulative reported profit over 3+ years",
"severity": "cap",
"cap": 4.0,
"why": "Sustained divergence between profit and cash is the most reliable quantitative precursor of accounting failure. Over one year it is working capital; over three or more it is a claim that has never been collected in cash. Averaging a great ROCE against it hides the exact thing that makes the ROCE untrustworthy.",
"evidence_needed": "Five-year cash flow statements: sum CFO, sum PAT, show the ratio. State the explanation offered and whether it is credible."
},
{
"id": "promoter_pledge_high",
"label": "[India] More than 50% of promoter holding pledged",
"severity": "cap",
"cap": 4.0,
"why": "Heavy pledging couples the share price to control. A price fall triggers margin calls, invoked shares and forced selling — a reflexive spiral that is independent of business quality and has repeatedly destroyed otherwise sound companies.",
"evidence_needed": "Quarterly shareholding pattern, Table on encumbered shares; trend over 8 quarters."
},
{
"id": "promoter_pledge_moderate",
"label": "[India] 25-50% of promoter holding pledged, or pledging rising",
"severity": "cap",
"cap": 6.0,
"why": "Same mechanism, earlier stage. The direction of travel matters more than the level.",
"evidence_needed": "Shareholding pattern trend; stated purpose of the pledge."
},
{
"id": "related_party_leakage",
"label": "Material unexplained related-party transactions or promoter-group fund diversion",
"severity": "cap",
"cap": 4.5,
"why": "Value can be perfectly real and still never reach minority shareholders. Related-party leakage is a claim on cash flows that never appears in any ratio in this scorecard.",
"evidence_needed": "Related-party note (Ind-AS 24 / ASC 850), audit committee approvals, loans and advances to group entities, corporate guarantees."
},
{
"id": "opaque_structure",
"label": "Unconsolidated subsidiaries, opaque group structure, or material unaudited components",
"severity": "cap",
"cap": 5.5,
"why": "What is not consolidated cannot be scored. Historically, the entity that fails is the one that was never in the reporting perimeter.",
"evidence_needed": "Subsidiary list, 'Other Matters' paragraph on unaudited components, JV/associate accounting basis."
},
{
"id": "receivables_blowout",
"label": "Receivables or unbilled revenue growing far faster than sales for 2+ years",
"severity": "cap",
"cap": 6.0,
"why": "Revenue that has not been collected is a hypothesis. Sustained divergence usually resolves as a write-off, not a collection.",
"evidence_needed": "Receivable days and unbilled revenue over 5 years vs revenue growth; ageing schedule; expected credit loss provisioning trend."
},
{
"id": "surveillance_action",
"label": "[India] Exchange surveillance action (ASM / GSM / trade-for-trade) or SEBI restraint order",
"severity": "cap",
"cap": 6.0,
"why": "Surveillance placement changes the tradability, margin requirement and price-discovery quality of the security regardless of the fundamentals.",
"evidence_needed": "NSE/BSE surveillance lists; SEBI orders."
},
{
"id": "serial_dilution",
"label": "Repeated equity issuance at or below book value without a clear returns case",
"severity": "cap",
"cap": 6.5,
"why": "Per-share value is what the owner receives. A company that funds growth by continuously selling cheap equity can grow every headline number while making each share worth less.",
"evidence_needed": "Share count over 5-10 years, issue prices vs book, use of proceeds."
},
{
"id": "auditor_or_board_independence_failure",
"label": "Board or audit committee independence materially compromised",
"severity": "cap",
"cap": 6.0,
"why": "Every governance control in this scorecard assumes someone independent is checking. If nobody is, the other governance metrics measure disclosure, not conduct.",
"evidence_needed": "Board composition, independent-director resignations and their stated reasons, audit committee membership and attendance."
},
{
"id": "outside_circle_of_competence",
"label": "Analyst cannot explain the revenue model or the key accounting judgement",
"severity": "cap",
"cap": 5.0,
"why": "A confident composite on a business you cannot explain is a false signal that reads exactly like a real one. Capping it forces the report to say so.",
"evidence_needed": "State plainly what could not be understood and what would resolve it."
}
],
"generic": {
"label": "Generic (non-financial operating company)",
"notes": "Fallback metric set. Applies to any operating company where EBIT, invested capital and free cash flow are meaningful. It is NOT valid for banks, NBFCs, insurers or REITs — those have their own standalone sets because the standard ratios there are undefined or inverted.",
"metrics": {
"moat_width_score": {"label": "Moat width and direction", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "No identifiable advantage; price-taker", "5": "Local or contractual advantage, stable", "8": "Structural advantage (scale, network, switching costs) demonstrably widening"},
"note": "Justify with evidence: market share trend, pricing vs input costs, customer retention, returns persistence."},
"pricing_power_score": {"label": "Pricing power", "category": "business_quality", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Cannot pass through input costs", "5": "Passes through with a 1-2 quarter lag", "8": "Prices ahead of costs; gross margin stable or rising through an input spike"}},
"customer_concentration_top5_pct": {"label": "Top-5 customer concentration (% of revenue)", "category": "business_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 60, "average": 40, "good": 25, "excellent": 12}},
"market_share_change_3y_bps": {"label": "Market share change, 3y (bps)", "category": "business_quality", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": -300, "average": 0, "good": 150, "excellent": 400}},
"roce_pct": {"label": "ROCE (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 8, "average": 13, "good": 20, "excellent": 28},
"note": "EBIT / (net debt + equity + capitalised leases). Compare to the company's own cost of capital, not to another sector."},
"roic_wacc_spread_pp": {"label": "ROIC - WACC spread (pp)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -2, "average": 2, "good": 6, "excellent": 12},
"note": "The single most sector-portable profitability measure, because WACC already absorbs local rates and business risk."},
"opm_pct": {"label": "Operating margin (%)", "category": "profitability", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 6, "average": 12, "good": 18, "excellent": 26},
"note": "Deliberately low-weighted. Margin level is a function of value-chain position, not quality — see the sector overrides."},
"gross_margin_pct": {"label": "Gross margin (%)", "category": "profitability", "direction": "higher_better", "weight": 0.5,
"thresholds": {"poor": 15, "average": 28, "good": 40, "excellent": 55},
"note": "Read the trend, not the level. Definitions differ across filers; check what sits above the line."},
"roe_pct": {"label": "ROE (%)", "category": "profitability", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 8, "average": 13, "good": 18, "excellent": 25},
"note": "Always read with leverage. A high ROE on 3x debt/equity is a different fact from the same ROE debt-free."},
"cfo_to_pat_3y": {"label": "Cumulative CFO / PAT, 3y (x)", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0.5, "average": 0.8, "good": 1.0, "excellent": 1.2},
"note": "The core cash-conversion test. Sustained readings below 0.5 trigger the cashflow_profit_divergence gate."},
"fcf_margin_pct": {"label": "FCF margin (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0, "average": 4, "good": 8, "excellent": 15},
"note": "CFO less full capex. If separating maintenance from growth capex, state the split and the basis."},
"accruals_ratio_pct": {"label": "Accruals ratio (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 15, "average": 8, "good": 3, "excellent": -2},
"note": "(NI - CFO - CFI) / average net operating assets, or the simpler (NI - CFO) / average total assets. State which."},
"receivable_days_gap_pp": {"label": "Receivable-days growth minus sales growth (pp)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 15, "average": 7, "good": 2, "excellent": -3}},
"other_income_share_of_pbt_pct": {"label": "Other income as % of PBT", "category": "earnings_quality", "direction": "lower_better", "weight": 0.5,
"thresholds": {"poor": 30, "average": 15, "good": 7, "excellent": 3},
"note": "High other income means the operating business is smaller than the headline profit suggests."},
"effective_tax_rate_pct": {"label": "Effective tax rate (%)", "category": "earnings_quality", "direction": "band", "weight": 1.0,
"thresholds": {"poor": [0, 50], "average": [8, 42], "good": [15, 35], "excellent": [20, 30]},
"note": "India new regime ~25.2%; US federal 21% plus state. A persistently sub-normal rate needs an explanation (SEZ/holiday/loss carry-forward) with an expiry date."},
"net_debt_to_ebitda": {"label": "Net debt / EBITDA (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 4.0, "average": 2.5, "good": 1.2, "excellent": 0.0},
"note": "Include capitalised leases and acceptances. Negative (net cash) clamps at 10."},
"interest_coverage_x": {"label": "Interest coverage (EBIT / interest, x)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 2, "average": 4, "good": 8, "excellent": 15}},
"current_ratio": {"label": "Current ratio (x)", "category": "balance_sheet", "direction": "band", "weight": 0.5,
"thresholds": {"poor": [0.6, 5.0], "average": [0.9, 3.5], "good": [1.1, 3.0], "excellent": [1.3, 2.5]},
"note": "A very high current ratio is idle capital, not strength."},
"near_term_maturity_cover_x": {"label": "Liquidity / next-12m debt maturities (x)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0.5, "average": 1.0, "good": 1.5, "excellent": 2.5},
"note": "(Cash + undrawn committed lines + expected FCF) over the maturity wall. Refinancing risk kills solvent companies."},
"cash_conversion_cycle_days": {"label": "Cash conversion cycle (days)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 120, "average": 70, "good": 35, "excellent": 0},
"note": "Heavily sector-dependent; negative is normal and good for retail, FMCG and subscription models."},
"revenue_cagr_5y_pct": {"label": "Revenue CAGR, 5y (%)", "category": "growth", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 2, "average": 7, "good": 13, "excellent": 20},
"note": "Nominal. In a high-inflation market, decompose into volume, price and mix before believing it."},
"eps_cagr_5y_pct": {"label": "EPS CAGR, 5y (%)", "category": "growth", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 0, "average": 8, "good": 15, "excellent": 22},
"note": "Per share, always. Absolute profit growth funded by dilution is not growth for the owner."},
"roiic_pct": {"label": "Return on incremental invested capital (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 6, "average": 12, "good": 18, "excellent": 28},
"note": "Change in NOPAT over change in invested capital, measured over 3-5 years to damp noise. This is the metric that decides whether growth creates or destroys value."},
"reinvestment_runway_score": {"label": "Reinvestment runway", "category": "growth", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Saturated; incremental capital goes to buybacks or worse acquisitions", "5": "Several years of visible reinvestment at current returns", "8": "Decade-long runway at or above current returns, evidenced by penetration data"}},
"organic_share_of_growth_pct": {"label": "Organic share of growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 30, "average": 55, "good": 75, "excellent": 90},
"note": "Serial acquirers can be excellent, but acquisition-led growth must be tested against goodwill and ROIIC, not revenue."},
"promoter_insider_holding_pct": {"label": "Promoter / insider holding (%)", "category": "governance", "direction": "band", "weight": 1.0,
"thresholds": {"poor": [0, 95], "average": [10, 85], "good": [22, 80], "excellent": [33, 75]},
"note": "[India] promoter holding from the quarterly shareholding pattern. [US] founder/insider beneficial ownership from DEF 14A. Skin in the game is good; near-total control with a thin float is not."},
"promoter_pledge_pct": {"label": "[India] Promoter shares pledged (% of promoter holding)", "category": "governance", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 40, "average": 15, "good": 2, "excellent": 0},
"note": "Levels above 25% also trigger a gate. Track the direction over 8 quarters."},
"related_party_to_revenue_pct": {"label": "Related-party transactions / revenue (%)", "category": "governance", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 15, "average": 6, "good": 2, "excellent": 0.5}},
"capital_allocation_score": {"label": "Capital allocation record", "category": "governance", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Value-destroying M&A, buybacks at peaks, unrelated diversification", "5": "Adequate; reinvests sensibly, no disasters", "8": "Demonstrated countercyclical discipline; buys assets cheap, returns cash when it cannot"}},
"disclosure_quality_score": {"label": "Disclosure quality", "category": "governance", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Segment data withheld, guidance missed silently, hostile concalls", "5": "Compliant disclosure, adequate segments", "8": "Discusses failures unprompted, gives unit economics, restates history when definitions change"}},
"dilution_5y_pct": {"label": "Share count change, 5y (%)", "category": "governance", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 40, "average": 15, "good": 3, "excellent": -5},
"note": "Include SBC, convertibles, warrants and ESOP pools on a fully diluted basis."},
"fcf_yield_pct": {"label": "FCF yield (%)", "category": "valuation", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 1, "average": 3, "good": 5.5, "excellent": 9},
"note": "FCF to equity holders over market cap, or unlevered FCF over EV — state which."},
"ev_ebitda_x": {"label": "EV / EBITDA (x)", "category": "valuation", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 22, "average": 14, "good": 9, "excellent": 6}},
"pe_x": {"label": "P/E (x)", "category": "valuation", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 45, "average": 28, "good": 18, "excellent": 12},
"note": "Meaningless for deep cyclicals at the peak or trough of a cycle — use mid-cycle earnings or drop the metric."},
"multiple_vs_own_10y_median_pct": {"label": "Current multiple vs own 10y median (%)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 10, "good": -10, "excellent": -30},
"note": "The cleanest sector-neutral valuation input available: the company is its own control group."},
"reverse_dcf_growth_gap_pp": {"label": "Price-implied growth minus defensible growth (pp)", "category": "valuation", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 8, "average": 3, "good": 0, "excellent": -4},
"note": "Converts valuation from an opinion into a testable claim. State the reverse-DCF assumptions."},
"cyclicality_resilience_score": {"label": "Resilience through a downturn", "category": "risk", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Loss-making at trough, needed rescue capital last cycle", "5": "Profitable but sharply lower at trough", "8": "Cash-generative through the last full cycle without dilution"}},
"regulatory_risk_score": {"label": "Regulatory / policy exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0,
"anchors": {"2": "Price or licence set by regulator with an adverse review pending", "5": "Normal regulated exposure", "8": "Minimal single-point regulatory dependence"}},
"input_fx_exposure_score": {"label": "Input cost / FX exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0},
"key_person_dependence_score": {"label": "Key-person dependence (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0,
"anchors": {"2": "One founder holds the customer relationships and the strategy; no succession", "5": "Strong second line, founder still central", "8": "Institutionalised; a CEO change would not alter the thesis"}},
"esg_controversy_score": {"label": "Environmental / social / litigation exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 0.5}
}
},
"banks": {
"label": "Banks and deposit-taking lenders",
"notes": "Standalone set — does NOT extend generic. For a bank, debt is raw material rather than financing, so invested capital, EV, net debt/EBITDA and ROIC are undefined or meaningless. Score ROA and ROE together with capital adequacy; a high ROE on thin CET1 is leverage, not skill. Indian bands assume Ind-AS/RBI IRAC reporting; US bands assume GAAP/CECL. GNPA and Stage 3 / NPL are not identical definitions — say which you used.",
"category_weights": {"business_quality": 0.12, "profitability": 0.18, "earnings_quality": 0.16, "balance_sheet": 0.18, "growth": 0.08, "governance": 0.12, "valuation": 0.10, "risk": 0.06},
"metrics": {
"casa_ratio_pct": {"label": "[India] CASA ratio (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 25, "average": 33, "good": 42, "excellent": 50},
"note": "US equivalent: non-interest-bearing demand deposits as % of deposits (poor 8 / avg 15 / good 25 / excellent 35). The deposit franchise, not the loan book, is what a durable bank multiple pays for."},
"deposit_franchise_score": {"label": "Deposit franchise durability", "category": "business_quality", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Bulk deposits and CDs funding loan growth; deposit beta above 60%", "5": "Retail-led but repricing with the cycle", "8": "Granular retail deposits, low beta, growing faster than credit"}},
"fee_income_to_assets_pct": {"label": "Core fee income / average assets (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 0.4, "average": 0.8, "good": 1.2, "excellent": 1.8},
"note": "Exclude treasury gains — those are market luck, not franchise."},
"loan_book_diversification_score": {"label": "Loan-book diversification", "category": "business_quality", "direction": "judgement", "weight": 1.0},
"roa_pct": {"label": "Return on assets (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0.5, "average": 1.0, "good": 1.5, "excellent": 2.0},
"note": "The leverage-neutral profitability measure for a lender. Prefer it to ROE."},
"roe_pct": {"label": "ROE / ROTE (%)", "category": "profitability", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 8, "average": 12, "good": 16, "excellent": 20}},
"nim_pct": {"label": "Net interest margin (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 2.2, "average": 3.0, "good": 3.8, "excellent": 4.5},
"note": "India large private 3.5-4.5%, PSU 2.6-3.2%, SFBs 6-9%; US 2.8-3.6%; Europe 1.2-2.0%. Edit before use. NIM rising on unsecured mix is a different quality of earnings from NIM rising on CASA."},
"cost_to_income_pct": {"label": "Cost-to-income ratio (%)", "category": "profitability", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 60, "average": 48, "good": 40, "excellent": 33},
"note": "A low ratio achieved by under-investing in technology or collections is borrowed, not earned."},
"rorwa_pct": {"label": "Return on risk-weighted assets (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 1.0, "average": 1.6, "good": 2.2, "excellent": 3.0},
"note": "The best single measure of whether a bank is being paid for the risk it takes."},
"credit_cost_pct": {"label": "Credit cost (% of average advances)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 2.0, "average": 1.1, "good": 0.6, "excellent": 0.3},
"note": "Read across a full cycle. Under-provisioning inflates every profitability metric simultaneously."},
"slippage_ratio_pct": {"label": "Slippage ratio (fresh NPA formation, %)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 3.5, "average": 2.0, "good": 1.2, "excellent": 0.7},
"note": "The forward-looking asset-quality number. GNPA is history; slippage is the future."},
"pcr_pct": {"label": "Provision coverage ratio (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 60, "good": 70, "excellent": 80},
"note": "State whether it includes technical write-offs — the two definitions differ by 10-20pp."},
"treasury_gains_share_of_ppop_pct": {"label": "Treasury gains as % of pre-provision profit", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 25, "average": 12, "good": 6, "excellent": 2}},
"gnpa_pct": {"label": "Gross NPA / NPL (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 6.0, "average": 3.0, "good": 1.8, "excellent": 1.0}},
"nnpa_pct": {"label": "Net NPA (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 2.0, "average": 1.0, "good": 0.5, "excellent": 0.2},
"note": "Net NPA / net worth is the real solvency question — compute it and state it in the report."},
"cet1_pct": {"label": "CET1 ratio (%)", "category": "balance_sheet", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 9, "average": 12, "good": 14, "excellent": 16}},
"car_pct": {"label": "Capital adequacy (CRAR, %)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 12, "average": 15, "good": 17, "excellent": 19},
"note": "India: RBI minimum 11.5% including CCB for commercial banks. Score the buffer over the minimum, not the level."},
"lcr_pct": {"label": "Liquidity coverage ratio (%)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 110, "average": 125, "good": 140, "excellent": 165}},
"credit_deposit_ratio_pct": {"label": "Credit-deposit ratio (%)", "category": "balance_sheet", "direction": "band", "weight": 1.0,
"thresholds": {"poor": [45, 105], "average": [60, 95], "good": [65, 90], "excellent": [70, 85]},
"note": "Too high means funded by wholesale money; too low means an unproductive balance sheet."},
"sma2_pct": {"label": "[India] SMA-2 / Stage 2 book (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 2.5, "average": 1.2, "good": 0.6, "excellent": 0.3},
"note": "The pipeline of tomorrow's NPAs. US equivalent: criticised and classified loans."},
"loan_growth_vs_system_x": {"label": "Loan growth vs system credit growth (x)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0.2, 2.5], "average": [0.5, 2.0], "good": [0.8, 1.7], "excellent": [1.0, 1.5]},
"note": "Deliberately a band. A lender growing at 2-3x the system is buying market share with credit standards; the losses arrive two to three years later."},
"book_value_cagr_5y_pct": {"label": "Book value per share CAGR, 5y (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 5, "average": 10, "good": 15, "excellent": 20},
"note": "Per share, after dilution. This is what a bank shareholder actually compounds."},
"deposit_growth_vs_credit_growth_pp": {"label": "Deposit growth minus credit growth (pp)", "category": "growth", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": -8, "average": -2, "good": 1, "excellent": 4}},
"promoter_insider_holding_pct": {"label": "Promoter / parent holding (%)", "category": "governance", "direction": "band", "weight": 0.5,
"thresholds": {"poor": [0, 95], "average": [5, 85], "good": [15, 80], "excellent": [26, 75]},
"note": "[India] RBI licensing conditions cap promoter holding over time — check the dilution obligation and its deadline."},
"capital_allocation_score": {"label": "Capital allocation and underwriting discipline", "category": "governance", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Grew fastest into the last credit blow-up", "5": "Average through-cycle discipline", "8": "Visibly shrank a segment before losses appeared; raised capital early and cheaply"}},
"disclosure_quality_score": {"label": "Asset-quality disclosure quality", "category": "governance", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "No sectoral/segment slippage detail, restructuring poorly disclosed", "5": "Regulatory minimum disclosure", "8": "Full slippage bridge, vintage curves, segment-wise credit cost, discussed unprompted"}},
"dilution_5y_pct": {"label": "Share count change, 5y (%)", "category": "governance", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 45, "average": 20, "good": 6, "excellent": 0},
"note": "Banks legitimately raise capital to grow. Judge issue price vs book value, not the fact of issuance."},
"divergence_report_score": {"label": "[India] RBI risk-assessment divergence record (10 = none)", "category": "governance", "direction": "judgement", "weight": 1.5,
"note": "A reported divergence in NPA or provisioning is the regulator publicly disagreeing with management's numbers."},
"pb_x": {"label": "Price / book (x)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 4.5, "average": 2.5, "good": 1.6, "excellent": 1.0},
"note": "P/B is only interpretable against ROE. The correct question is whether the P/B is justified by sustainable ROE minus cost of equity, not whether it is low."},
"pe_x": {"label": "P/E (x)", "category": "valuation", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 30, "average": 20, "good": 13, "excellent": 9}},
"multiple_vs_own_10y_median_pct": {"label": "P/B vs own 10y median (%)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 10, "good": -10, "excellent": -30}},
"unsecured_retail_share_pct": {"label": "Unsecured retail as % of advances", "category": "risk", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 35, "average": 22, "good": 12, "excellent": 6}},
"top20_borrower_concentration_pct": {"label": "Top-20 borrower exposure (% of tier-1)", "category": "risk", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 200, "average": 130, "good": 90, "excellent": 55}},
"htm_unrealised_loss_to_cet1_pct": {"label": "Unrealised HTM/AFS losses as % of CET1", "category": "risk", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 30, "average": 15, "good": 5, "excellent": 1},
"note": "The 2023 US regional-bank mechanism: solvent on reported capital, insolvent on marked capital, and deposits leave at the speed of a mobile app."}
}
},
"nbfc": {
"label": "NBFCs, housing finance and non-bank lenders",
"notes": "Standalone set. Leverage is the product, not a flaw — score it against the regulatory ceiling and the segment norm (an HFC legitimately runs 6-8x where a gold lender runs 3-4x). The binding risk is liability-side: an NBFC fails when funding stops, not when assets deteriorate. India: RBI scale-based regulation layer (base/middle/upper) changes the applicable capital and disclosure norms — state the layer.",
"category_weights": {"business_quality": 0.10, "profitability": 0.16, "earnings_quality": 0.16, "balance_sheet": 0.20, "growth": 0.08, "governance": 0.12, "valuation": 0.10, "risk": 0.08},
"metrics": {
"liability_franchise_score": {"label": "Liability franchise quality", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Short-term wholesale funding against long-tenor assets", "5": "Bank lines plus NCDs, adequately matched", "8": "Diversified across banks, capital markets, ECB and securitisation, tenor-matched, tested through a liquidity event"}},
"borrowing_cost_vs_peer_pp": {"label": "Cost of borrowing vs peer median (pp)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 1.5, "average": 0.5, "good": -0.3, "excellent": -1.0},
"note": "For a lender, funding cost advantage IS the moat. It is the closest analogue to low-cost production."},
"product_niche_score": {"label": "Defensibility of the lending niche", "category": "business_quality", "direction": "judgement", "weight": 1.0},
"roa_pct": {"label": "Return on assets (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 1.2, "average": 2.0, "good": 3.0, "excellent": 4.0}},
"roe_pct": {"label": "ROE (%)", "category": "profitability", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 8, "average": 13, "good": 17, "excellent": 22}},
"nim_pct": {"label": "Net interest margin (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 4, "average": 6, "good": 8, "excellent": 10},
"note": "Segment-dependent: an HFC at 3% and a microfinance lender at 12% can both be excellent. Edit per segment before use."},
"cost_to_income_pct": {"label": "Cost-to-income (%)", "category": "profitability", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 55, "average": 42, "good": 33, "excellent": 25}},
"credit_cost_pct": {"label": "Credit cost (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 3.0, "average": 1.8, "good": 1.0, "excellent": 0.5}},
"stage3_pct": {"label": "Stage 3 / GNPA (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 5.0, "average": 3.0, "good": 1.8, "excellent": 1.0}},
"pcr_stage3_pct": {"label": "Stage 3 provision coverage (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 30, "average": 45, "good": 60, "excellent": 75}},
"collection_efficiency_pct": {"label": "Collection efficiency (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 92, "average": 96, "good": 98, "excellent": 99.5},
"note": "State the definition — current-month billing vs total including arrears differ by several points and are routinely conflated."},
"restructured_book_pct": {"label": "Restructured / modified book (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 4.0, "average": 2.0, "good": 0.8, "excellent": 0.2}},
"leverage_x": {"label": "Debt / equity (x)", "category": "balance_sheet", "direction": "band", "weight": 2.0,
"thresholds": {"poor": [0.2, 10], "average": [1.0, 8], "good": [1.5, 6.5], "excellent": [2.0, 5.0]},
"note": "Band, not lower-better: an under-levered lender is wasting the only asset it has. Compare to the segment norm and the regulatory ceiling."},
"capital_adequacy_pct": {"label": "CRAR (%)", "category": "balance_sheet", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 16, "average": 19, "good": 22, "excellent": 26},
"note": "India: RBI minimum 15% for most NBFCs. Score the buffer."},
"alm_cumulative_gap_1y_pct": {"label": "Cumulative ALM gap up to 1 year (% of outflows)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 15, "average": 5, "good": -5, "excellent": -15},
"note": "Negative gap (inflows exceed outflows) is good. This is the number that decides whether the company survives a funding freeze."},
"liquidity_buffer_months": {"label": "On-balance-sheet liquidity (months of outflows)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 1, "average": 2, "good": 3, "excellent": 6}},
"funding_mix_diversification_pct": {"label": "Largest funding source share (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 75, "average": 55, "good": 40, "excellent": 28}},
"aum_growth_pct": {"label": "AUM growth (%)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [-5, 70], "average": [4, 50], "good": [10, 35], "excellent": [14, 28]},
"note": "Band by design. Above roughly 40-50% sustained, an NBFC is almost always buying growth by loosening underwriting or entering an adjacent segment it does not understand."},
"book_value_cagr_5y_pct": {"label": "Book value per share CAGR, 5y (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 5, "average": 10, "good": 15, "excellent": 22}},
"promoter_pledge_pct": {"label": "[India] Promoter shares pledged (%)", "category": "governance", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 35, "average": 12, "good": 2, "excellent": 0}},
"related_party_to_revenue_pct": {"label": "Related-party exposure / net worth (%)", "category": "governance", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 20, "average": 8, "good": 2, "excellent": 0.5},
"note": "Lending to the promoter group is the classic NBFC failure mode — the loan book becomes a funding line for the parent."},
"capital_allocation_score": {"label": "Capital allocation and underwriting discipline", "category": "governance", "direction": "judgement", "weight": 2.0},
"disclosure_quality_score": {"label": "Disclosure quality (ECL model, stage movement, co-lending)", "category": "governance", "direction": "judgement", "weight": 1.5},
"dilution_5y_pct": {"label": "Share count change, 5y (%)", "category": "governance", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 50, "average": 22, "good": 8, "excellent": 0}},
"pb_x": {"label": "Price / book (x)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 5.0, "average": 3.0, "good": 2.0, "excellent": 1.2}},
"pe_x": {"label": "P/E (x)", "category": "valuation", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 35, "average": 24, "good": 16, "excellent": 11}},
"multiple_vs_own_10y_median_pct": {"label": "P/B vs own 10y median (%)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 10, "good": -10, "excellent": -30}},
"single_state_concentration_pct": {"label": "Largest state / region exposure (%)", "category": "risk", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 60, "average": 40, "good": 25, "excellent": 15},
"note": "Geographic concentration converts a local political or weather event into a solvency event — repeatedly demonstrated in Indian microfinance."},
"unsecured_share_pct": {"label": "Unsecured share of AUM (%)", "category": "risk", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 50, "average": 30, "good": 15, "excellent": 5}},
"rate_sensitivity_score": {"label": "Rate-cycle sensitivity (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0,
"note": "Fixed-rate assets funded by floating-rate borrowings is the compression trap."}
}
},
"insurance": {
"label": "Life, general, health and P&C insurers",
"notes": "Standalone set. New-business strain depresses reported profit precisely when a life insurer is writing the most profitable growth, so P/E and ROE are close to useless for life — use VNB margin, ROEV and operating variances. For general/P&C the combined ratio is the whole business: below 100 means the underwriting itself makes money, above 100 means the company is a leveraged bond fund with an expensive distribution habit. Score only the metrics that apply to the sub-sector and let coverage renormalisation handle the rest.",
"category_weights": {"business_quality": 0.14, "profitability": 0.18, "earnings_quality": 0.16, "balance_sheet": 0.14, "growth": 0.10, "governance": 0.10, "valuation": 0.10, "risk": 0.08},
"metrics": {
"persistency_13m_pct": {"label": "[Life] 13th-month persistency (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 75, "average": 82, "good": 87, "excellent": 92},
"note": "Persistency is the honest test of whether the product was sold or mis-sold."},
"persistency_61m_pct": {"label": "[Life] 61st-month persistency (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 55, "good": 65, "excellent": 75}},
"bancassurance_dependence_pct": {"label": "Largest distribution channel share (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 70, "average": 50, "good": 35, "excellent": 20},
"note": "A bank partner that can be renegotiated or lost is a single point of failure for the whole franchise."},
"brand_agency_strength_score": {"label": "Brand and proprietary distribution strength", "category": "business_quality", "direction": "judgement", "weight": 1.0},
"vnb_margin_pct": {"label": "[Life] Value of new business margin (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 12, "average": 20, "good": 26, "excellent": 32},
"note": "Check the product mix behind it — protection and non-par carry high margin, ULIP low. A margin jump is usually mix, not skill."},
"roev_pct": {"label": "[Life] Return on embedded value (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 8, "average": 13, "good": 17, "excellent": 22}},
"combined_ratio_pct": {"label": "[General/P&C] Combined ratio (%)", "category": "profitability", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 112, "average": 104, "good": 98, "excellent": 92},
"note": "Above 100 the underwriting loses money and profit depends entirely on investment income. India's motor third-party pool structurally lifts this — compare within sub-segment."},
"operating_roe_pct": {"label": "Operating ROE ex investment gains (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 8, "average": 12, "good": 16, "excellent": 20}},
"operating_variance_to_ev_pct": {"label": "[Life] Operating variance as % of opening EV", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -1.0, "average": 0.5, "good": 1.5, "excellent": 3.0},
"note": "Positive variances mean the actuarial assumptions were conservative and reality beat them. Persistent negative variances mean the EV was written optimistically — the closest thing to an earnings-quality test in life insurance."},
"reserve_development_pct": {"label": "[General/P&C] Prior-year reserve development (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 5, "average": 1, "good": -2, "excellent": -5},
"note": "Negative is favourable development — reserves were adequate. Persistent adverse development means current profit is borrowed from future losses."},
"claims_ratio_pct": {"label": "Claims / loss ratio (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 85, "average": 72, "good": 62, "excellent": 55}},
"solvency_ratio_pct": {"label": "Solvency ratio (%)", "category": "balance_sheet", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 165, "average": 185, "good": 210, "excellent": 250},
"note": "India: IRDAI minimum 150%. US: RBC ratio, different scale — replace the band. A ratio drifting toward the minimum means a capital raise or a growth slowdown is coming."},
"investment_book_quality_score": {"label": "Investment book credit quality", "category": "balance_sheet", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Reaching for yield in low-rated paper or illiquid assets", "5": "Mostly sovereign and AAA", "8": "Conservative, duration-matched, no credit events through the last cycle"}},
"alm_duration_gap_years": {"label": "Asset-liability duration gap (years)", "category": "balance_sheet", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [-6, 6], "average": [-3, 3], "good": [-1.5, 1.5], "excellent": [-0.5, 0.5]},
"note": "For long-tail guaranteed liabilities the gap is the risk, and India lacks enough long-duration paper to close it fully — say so rather than scoring it silently."},
"ape_growth_pct": {"label": "[Life] APE growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0, "average": 8, "good": 15, "excellent": 25}},
"gwp_growth_vs_industry_x": {"label": "Premium growth vs industry (x)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0.3, 2.5], "average": [0.7, 1.9], "good": [0.9, 1.6], "excellent": [1.0, 1.4]},
"note": "Band: an insurer growing at 2x the industry is usually under-pricing risk, and the claims arrive with a lag."},
"vnb_growth_pct": {"label": "[Life] VNB growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0, "average": 10, "good": 18, "excellent": 28}},
"assumption_disclosure_score": {"label": "Actuarial assumption disclosure quality", "category": "governance", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "EV published with no sensitivities or assumption detail", "5": "Standard sensitivities disclosed", "8": "Full assumption set, sensitivities, and an independent actuarial review disclosed"}},
"related_party_to_revenue_pct": {"label": "Related-party / parent-channel dependence (%)", "category": "governance", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 60, "average": 40, "good": 25, "excellent": 12}},
"capital_allocation_score": {"label": "Capital allocation and underwriting discipline", "category": "governance", "direction": "judgement", "weight": 1.5},
"dilution_5y_pct": {"label": "Share count change, 5y (%)", "category": "governance", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 35, "average": 15, "good": 4, "excellent": 0}},
"p_ev_x": {"label": "[Life] Price / embedded value (x)", "category": "valuation", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 3.0, "average": 2.2, "good": 1.5, "excellent": 1.0}},
"implied_new_business_multiple_x": {"label": "[Life] Implied new-business multiple (x)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 35, "average": 25, "good": 15, "excellent": 8},
"note": "(Market cap - EV) / VNB. Makes explicit how many years of current new business the price already pays for."},
"pb_x": {"label": "[General/P&C] Price / book (x)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 6.0, "average": 4.0, "good": 2.5, "excellent": 1.6}},
"catastrophe_retention_score": {"label": "Catastrophe / tail retention (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5},
"reinsurance_counterparty_score": {"label": "Reinsurance programme and counterparty quality", "category": "risk", "direction": "judgement", "weight": 1.0},
"guaranteed_book_pct": {"label": "[Life] Guaranteed / non-par book as % of liabilities", "category": "risk", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 25, "good": 12, "excellent": 4},
"note": "Guarantees written at high rates become a solvency problem when rates fall, and the hedge is rarely as complete as disclosed."}
}
},
"realestate-reit": {
"label": "REITs, InvITs and real estate developers",
"notes": "Standalone set. For a REIT the asset IS the business and is carried at fair value, so ROIC collapses toward the cap rate by construction and earnings are meaningless after depreciation — use AFFO, LTV and the cap-rate/cost-of-debt spread. Developer metrics (pre-sales, collections, unsold inventory) are tagged [DEV] and should be scored instead of the REIT set for a developer. India: REIT/InvIT distributions are governed by SEBI regulations requiring 90% distribution of net distributable cash flow — check the NDCF definition, it is not AFFO.",
"category_weights": {"business_quality": 0.15, "profitability": 0.15, "earnings_quality": 0.14, "balance_sheet": 0.18, "growth": 0.08, "governance": 0.10, "valuation": 0.12, "risk": 0.08},
"metrics": {
"occupancy_pct": {"label": "Portfolio occupancy (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 80, "average": 88, "good": 93, "excellent": 97},
"note": "Distinguish committed from in-place occupancy; the gap is future rent, not current rent."},
"wale_years": {"label": "Weighted average lease expiry (years)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 2, "average": 4, "good": 6, "excellent": 9},
"note": "Long WALE is cash-flow certainty but caps mark-to-market upside in a rising rent market. Read with leasing spreads."},
"tenant_concentration_top10_pct": {"label": "Top-10 tenant share of rent (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 55, "average": 40, "good": 28, "excellent": 18}},
"asset_quality_score": {"label": "Asset grade and micro-market position", "category": "business_quality", "direction": "judgement", "weight": 1.5},
"noi_margin_pct": {"label": "NOI margin (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 55, "average": 65, "good": 72, "excellent": 80}},
"cap_rate_spread_over_debt_pp": {"label": "Cap rate minus cost of debt (pp)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -0.5, "average": 0.5, "good": 1.5, "excellent": 3.0},
"note": "The whole economic engine of a levered property vehicle. When this spread goes negative, leverage subtracts value and the distribution is being funded by refinancing."},
"yield_on_cost_pct": {"label": "Development yield on cost (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 6, "average": 8, "good": 10, "excellent": 13},
"note": "Compare to the exit cap rate. Yield on cost minus market cap rate is the development spread — the only reason to build rather than buy."},
"affo_to_ffo_pct": {"label": "AFFO / FFO (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 65, "average": 78, "good": 86, "excellent": 93},
"note": "The gap is maintenance capex and leasing costs — real cash that FFO pretends does not exist."},
"ffo_payout_ratio_pct": {"label": "Distribution / AFFO (%)", "category": "earnings_quality", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [20, 120], "average": [50, 105], "good": [65, 100], "excellent": [75, 95]},
"note": "Above 100% the distribution is funded by debt or asset sales, which is a countdown, not a yield."},
"maintenance_capex_to_noi_pct": {"label": "Maintenance capex / NOI (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 20, "average": 12, "good": 7, "excellent": 4}},
"collections_to_presales_pct": {"label": "[DEV] Collections / pre-sales (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 60, "average": 75, "good": 88, "excellent": 100},
"note": "Pre-sales are bookings; collections are cash. India RERA escrow rules restrict how collected money can be used — check before treating it as free cash."},
"ltv_pct": {"label": "Loan to value (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 55, "average": 45, "good": 35, "excellent": 25},
"note": "India: SEBI caps REIT leverage at 49% of asset value with conditions above 25%. Score the headroom to the cap, not just the level."},
"interest_coverage_x": {"label": "Interest coverage (x)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 1.8, "average": 2.5, "good": 3.5, "excellent": 5.0}},
"fixed_rate_debt_share_pct": {"label": "Fixed-rate debt share (%)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 40, "average": 60, "good": 80, "excellent": 95}},
"avg_debt_maturity_years": {"label": "Weighted average debt maturity (years)", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 2, "average": 3.5, "good": 5, "excellent": 7}},
"unsold_completed_inventory_months": {"label": "[DEV] Unsold completed inventory (months of sales)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 24, "average": 14, "good": 8, "excellent": 4}},
"same_store_noi_growth_pct": {"label": "Same-store NOI growth (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0, "average": 3, "good": 5, "excellent": 8},
"note": "Strips acquisitions out. This is the only growth number that tells you whether the existing portfolio is getting better."},
"leasing_spread_pct": {"label": "Re-leasing spread (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": -2, "average": 2, "good": 6, "excellent": 12}},
"presales_growth_pct": {"label": "[DEV] Pre-sales growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": -5, "average": 8, "good": 18, "excellent": 30}},
"development_pipeline_to_gav_pct": {"label": "Development pipeline / GAV (%)", "category": "growth", "direction": "band", "weight": 1.0,
"thresholds": {"poor": [0, 55], "average": [1, 40], "good": [4, 28], "excellent": [7, 20]},
"note": "Band: no pipeline means no growth, a large pipeline means development and funding risk on a fixed-distribution vehicle."},
"external_manager_fee_to_noi_pct": {"label": "Manager fees / NOI (%)", "category": "governance", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 12, "average": 8, "good": 5, "excellent": 2},
"note": "Externally managed vehicles have a structural conflict: the manager is paid on assets, so it is paid to grow whether or not growth is accretive per unit."},
"sponsor_alignment_score": {"label": "Sponsor alignment and unit ownership", "category": "governance", "direction": "judgement", "weight": 2.0},
"related_party_to_revenue_pct": {"label": "Related-party asset purchases (% of GAV)", "category": "governance", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 30, "average": 15, "good": 5, "excellent": 0},
"note": "Sponsor-to-REIT asset drop-downs need an independent valuation and a unitholder vote — check both happened."},
"distribution_transparency_score": {"label": "NDCF / distribution computation transparency", "category": "governance", "direction": "judgement", "weight": 1.0},
"affo_yield_pct": {"label": "AFFO yield (%)", "category": "valuation", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 3, "average": 5, "good": 6.5, "excellent": 8.5}},
"price_to_nav_discount_pct": {"label": "Discount to NAV (%)", "category": "valuation", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": -20, "average": 0, "good": 15, "excellent": 30},
"note": "Positive = trading below NAV. Test the NAV first: it is a valuer's opinion of cap rates, and cap rates move with the bond yield."},
"distribution_yield_spread_pp": {"label": "Distribution yield minus 10y govt bond (pp)", "category": "valuation", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": -1, "average": 0.5, "good": 2, "excellent": 3.5},
"note": "The correct sector-neutral test — a property yield must be judged against the risk-free rate of its own market, not against another country's REITs."},
"lease_expiry_next3y_pct": {"label": "Leases expiring in next 3 years (%)", "category": "risk", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 45, "average": 30, "good": 18, "excellent": 10}},
"supply_pipeline_score": {"label": "Micro-market supply pipeline (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5},
"rate_sensitivity_score": {"label": "Interest-rate sensitivity (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0}
}
},
"it-saas": {
"label": "IT services, software, SaaS and internet platforms",
"extends": "generic",
"notes": "Margin levels here are high by construction, so the sector bands are lifted: a 20% operating margin that would be excellent in distribution is merely average in software. What actually differentiates is retention, incremental returns and whether growth survives without ever-rising sales spend. Indian IT services and US SaaS are different businesses on the same tag — services score on attrition, revenue per employee and book-to-bill; product SaaS on NRR, Rule of 40 and CAC payback.",
"category_weights": {"business_quality": 0.18, "profitability": 0.18, "earnings_quality": 0.14, "balance_sheet": 0.06, "growth": 0.16, "governance": 0.10, "valuation": 0.12, "risk": 0.06},
"metrics": {
"opm_pct": {"thresholds": {"poor": 10, "average": 18, "good": 25, "excellent": 35}, "weight": 1.5,
"note": "Lifted band. Indian IT services run 20-27%; product SaaS at scale 20-35%. A 20% margin here is average, not excellent — this is the sector-relative principle in its clearest form."},
"gross_margin_pct": {"thresholds": {"poor": 55, "average": 68, "good": 76, "excellent": 84}, "weight": 1.0},
"roce_pct": {"thresholds": {"poor": 15, "average": 25, "good": 35, "excellent": 50},
"note": "Asset-light: capital employed is small, so returns are structurally high. Judge against the sector, not against a manufacturer."},
"net_revenue_retention_pct": {"label": "Net revenue retention (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 95, "average": 105, "good": 115, "excellent": 125},
"note": "The single best moat proxy in software: above 100% the installed base grows without any new customer."},
"attrition_pct": {"label": "[IT services] Voluntary attrition (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 22, "average": 16, "good": 12, "excellent": 9}},
"client_concentration_top10_pct": {"label": "Top-10 client concentration (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 45, "average": 33, "good": 22, "excellent": 15}},
"revenue_per_employee_kusd": {"label": "[IT services] Revenue per employee (USD k)", "category": "profitability", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 35, "average": 50, "good": 70, "excellent": 100},
"note": "The productivity metric that shows whether growth is pyramid expansion or genuine value capture."},
"sbc_to_revenue_pct": {"label": "Stock-based compensation / revenue (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 20, "average": 12, "good": 6, "excellent": 2},
"note": "SBC is cash compensation paid in shares. Non-GAAP profit that adds it back is not profit. Always score fully diluted."},
"rule_of_40": {"label": "Rule of 40 (growth % + FCF margin %)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 20, "average": 30, "good": 40, "excellent": 55}},
"cac_payback_months": {"label": "CAC payback (months)", "category": "growth", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 36, "average": 24, "good": 15, "excellent": 9}},
"book_to_bill_x": {"label": "[IT services] Book-to-bill (x)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0.8, "average": 1.0, "good": 1.2, "excellent": 1.5},
"note": "Read TCV against duration — a large TCV over seven years is a smaller annual number than it sounds."},
"ev_ebitda_x": {"thresholds": {"poor": 35, "average": 24, "good": 16, "excellent": 11}},
"pe_x": {"thresholds": {"poor": 60, "average": 38, "good": 25, "excellent": 17}},
"ai_disruption_exposure_score": {"label": "AI / platform disruption exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "Ask specifically whether the revenue is priced per seat or per unit of work, and what happens to it if the work is automated."}
}
},
"pharma-healthcare": {
"label": "Pharma, biotech, CDMO, hospitals and diagnostics",
"extends": "generic",
"notes": "Four different business models on one tag. Innovators are option portfolios valued on pipeline risk-adjusted NPV; generics are commodity manufacturers with a regulatory moat and structural price erosion; CDMOs are capacity businesses; hospitals are real-estate-plus-operations with occupancy economics. Regulatory compliance is the gating variable everywhere: a single import alert can remove more value than several years of margin improvement, which is exactly why compliance sits in risk with a heavy weight rather than being averaged in.",
"category_weights": {"business_quality": 0.16, "profitability": 0.16, "earnings_quality": 0.14, "balance_sheet": 0.10, "growth": 0.14, "governance": 0.10, "valuation": 0.12, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 10, "average": 17, "good": 23, "excellent": 30}},
"gross_margin_pct": {"thresholds": {"poor": 35, "average": 52, "good": 64, "excellent": 75}},
"product_concentration_top5_pct": {"label": "Top-5 product share of revenue (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 60, "average": 45, "good": 30, "excellent": 18},
"note": "For innovators also state the patent cliff date of the largest product — a concentrated portfolio with a near cliff is a different business in three years."},
"chronic_share_pct": {"label": "[India] Chronic therapy share of domestic sales (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 20, "average": 32, "good": 45, "excellent": 60},
"note": "Chronic prescriptions repeat; acute do not. Chronic mix is the closest thing to recurring revenue in branded generics."},
"hospital_occupancy_pct": {"label": "[Hospitals] Occupancy (%)", "category": "business_quality", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [30, 96], "average": [50, 92], "good": [60, 88], "excellent": [66, 82]},
"note": "Band: above roughly 85% a hospital is turning patients away and needs capex, which changes the return profile."},
"rd_to_sales_pct": {"label": "R&D / sales (%)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0, 30], "average": [2, 22], "good": [4, 18], "excellent": [6, 14]},
"note": "Band and sub-sector dependent: generics 4-9%, specialty 8-14%, innovators 15-25%. Too little means no pipeline; too much without approvals means burning owner capital."},
"rd_capitalisation_share_pct": {"label": "R&D capitalised (% of R&D spend)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 60, "average": 35, "good": 15, "excellent": 5},
"note": "Ind-AS/IFRS permit capitalising development costs; US GAAP largely does not. This single policy difference can move reported margin several points between otherwise identical companies."},
"price_erosion_pct": {"label": "[US generics] Base business price erosion (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 12, "average": 8, "good": 4, "excellent": 1}},
"pipeline_value_score": {"label": "Pipeline depth and approval record", "category": "growth", "direction": "judgement", "weight": 2.0},
"regulatory_compliance_score": {"label": "Regulatory compliance record (10 = clean)", "category": "risk", "direction": "judgement", "weight": 2.5,
"anchors": {"2": "Import alert or OAI at a plant contributing material revenue", "5": "Form 483 observations resolved without escalation", "8": "Clean EIR/VAI record across all significant sites over 5+ years"},
"note": "Weighted heavily on purpose. This is a step-function risk, not a gradual one."},
"litigation_exposure_score": {"label": "Litigation exposure (opioid, price-fixing, product liability) (10 = low)", "category": "risk", "direction": "judgement", "weight": 1.5},
"payer_pricing_risk_score": {"label": "Payer / government pricing exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0,
"note": "[India] NLEM/DPCO price control coverage of the portfolio. [US] IRA negotiation eligibility and PBM concentration."}
}
},
"fmcg-consumer": {
"label": "FMCG, consumer staples, branded consumer and QSR",
"extends": "generic",
"notes": "The sector where brand and distribution, not manufacturing, are the assets — so the scorecard weights business quality highest and balance sheet lowest. Volume growth is the honesty test: price-led growth in an inflationary year can flatter revenue while the franchise shrinks. Working capital is typically negative and should be scored as a strength, not a liquidity concern.",
"category_weights": {"business_quality": 0.20, "profitability": 0.18, "earnings_quality": 0.14, "balance_sheet": 0.08, "growth": 0.12, "governance": 0.10, "valuation": 0.12, "risk": 0.06},
"metrics": {
"opm_pct": {"thresholds": {"poor": 8, "average": 15, "good": 21, "excellent": 27}},
"gross_margin_pct": {"thresholds": {"poor": 30, "average": 42, "good": 52, "excellent": 62}, "weight": 1.0},
"roce_pct": {"thresholds": {"poor": 14, "average": 22, "good": 35, "excellent": 55},
"note": "Asset-light branded businesses routinely earn 40%+ ROCE. Scoring them against a generic 20% 'good' band would rate almost every company excellent and destroy all discrimination."},
"cash_conversion_cycle_days": {"thresholds": {"poor": 60, "average": 30, "good": 5, "excellent": -20},
"note": "Negative working capital is normal and desirable here — the trade funds the company."},
"volume_growth_pct": {"label": "Volume growth (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0, "average": 4, "good": 8, "excellent": 12},
"note": "The honesty test. Revenue growth net of price and mix is the only number that shows whether more people are buying more product."},
"ad_spend_to_sales_pct": {"label": "Advertising & promotion / sales (%)", "category": "business_quality", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0, 22], "average": [3, 17], "good": [5, 14], "excellent": [7, 12]},
"note": "Band: cutting A&P is the easiest way to buy a year of margin and lose a decade of brand. Rising A&P with flat share is also a warning."},
"distribution_reach_score": {"label": "Distribution reach and direct-reach growth", "category": "business_quality", "direction": "judgement", "weight": 1.5,
"note": "[India] Direct reach in lakh outlets and the stockist-to-direct shift; rural share. [US/global] retail ACV distribution and shelf position."},
"premiumisation_score": {"label": "Premiumisation and mix upgrade", "category": "business_quality", "direction": "judgement", "weight": 1.0},
"pe_x": {"thresholds": {"poor": 80, "average": 58, "good": 42, "excellent": 30},
"note": "Quality staples structurally trade rich. A 30x P/E here is not the same signal as a 30x P/E in metals — which is the entire reason valuation is scored sector-relative."},
"ev_ebitda_x": {"thresholds": {"poor": 45, "average": 33, "good": 24, "excellent": 16}},
"private_label_disruption_score": {"label": "Private label / D2C disruption exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0},
"commodity_input_exposure_score": {"label": "Input commodity exposure and pass-through lag (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0}
}
},
"auto": {
"label": "Automobiles, auto components and tyres",
"extends": "generic",
"notes": "Operating leverage dominates: margin is mostly a function of utilisation, so a margin comparison across two points in the cycle compares demand, not skill. Always separate the automotive business from a captive finance arm — consolidating a lending book into an industrial balance sheet makes net debt, ROCE and leverage meaningless. Score the powertrain transition explicitly; a strong ICE franchise with no credible electrification path is a melting asset even at excellent current returns.",
"category_weights": {"business_quality": 0.14, "profitability": 0.16, "earnings_quality": 0.14, "balance_sheet": 0.14, "growth": 0.10, "governance": 0.10, "valuation": 0.12, "risk": 0.10},
"metrics": {
"opm_pct": {"thresholds": {"poor": 4, "average": 9, "good": 14, "excellent": 19},
"note": "OEMs 6-14%, components 10-18%, tyres 12-18%. A 9% OEM margin is average; the same number would be poor for a branded consumer company and excellent for a distributor."},
"roce_pct": {"thresholds": {"poor": 6, "average": 12, "good": 18, "excellent": 25}, "note": "Compute on automotive capital employed only, excluding the finance arm."},
"capacity_utilisation_pct": {"label": "Capacity utilisation (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 55, "average": 70, "good": 82, "excellent": 90}},
"dealer_inventory_days": {"label": "Channel inventory (days)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 60, "average": 40, "good": 28, "excellent": 20},
"note": "[India] Wholesale dispatches minus retail registrations (VAHAN) shows whether reported sales are demand or stuffing the channel."},
"warranty_provision_to_sales_pct": {"label": "Warranty provision / sales (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 3.5, "average": 2.0, "good": 1.2, "excellent": 0.7},
"note": "Compare provision created against claims paid. Under-provisioning is a quiet way to lift margin for two years."},
"rd_capitalisation_share_pct": {"label": "Product development capitalised (% of spend)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 70, "average": 45, "good": 25, "excellent": 10},
"note": "A major Ind-AS/IFRS versus US GAAP divergence — European and Indian OEMs capitalise heavily, US ones expense. Adjust before comparing margins across regimes."},
"auto_net_debt_to_ebitda": {"label": "Automotive net debt / EBITDA, ex-finance arm (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 3.0, "average": 1.5, "good": 0.3, "excellent": -0.5}},
"market_share_change_3y_bps": {"weight": 1.5},
"ev_transition_score": {"label": "Powertrain transition position", "category": "growth", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "No credible EV platform, compliance shortfall, share loss in the growing segment", "5": "Announced platform, launches pending, credits purchased", "8": "Competitive EV contribution margin ex-credits, in-house battery or secured supply, share gains"}},
"content_per_vehicle_growth_pct": {"label": "[Components] Content per vehicle growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0, "average": 5, "good": 10, "excellent": 18},
"note": "The structural growth lever that lets a component supplier outgrow a flat vehicle market."},
"captive_finance_quality_score": {"label": "Captive finance arm quality (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "Penetration, credit cost, residual value exposure and leverage. Score it as a lender — because it is one."},
"cyclicality_resilience_score": {"weight": 2.0}
}
},
"metals-mining": {
"label": "Steel, aluminium, mining and commodity producers",
"extends": "generic",
"notes": "The only durable advantage in an undifferentiated commodity is being cheaper to produce than the marginal producer — so cost-curve position is the moat metric and carries the heaviest weight in the sector. Spot ROCE is procyclical nonsense: highest at the top of the cycle when the stock is most dangerous, negative at the bottom when it is cheapest. Score mid-cycle returns and mid-cycle leverage, state the assumed mid-cycle price, and never score a trailing P/E for a deep cyclical.",
"category_weights": {"business_quality": 0.16, "profitability": 0.16, "earnings_quality": 0.12, "balance_sheet": 0.18, "growth": 0.06, "governance": 0.10, "valuation": 0.14, "risk": 0.08},
"metrics": {
"cost_curve_position_pctile": {"label": "Position on the global cost curve (percentile, 1 = cheapest)", "category": "business_quality", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 75, "average": 50, "good": 30, "excellent": 15},
"note": "First-quartile producers earn money at prices that shut competitors down. This is the whole moat in a commodity."},
"reserve_life_years": {"label": "Reserve / resource life (years)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 8, "average": 15, "good": 25, "excellent": 40},
"note": "Check the classification standard (JORC/NI 43-101 vs a domestic estimate) and the price assumption behind reserve conversion."},
"integration_captive_input_pct": {"label": "Captive input integration (% of requirement)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 20, "average": 45, "good": 70, "excellent": 90},
"note": "Captive iron ore, coal or bauxite is what turns a swinging spread into a stable one."},
"mid_cycle_roce_pct": {"label": "Mid-cycle ROCE (%)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 6, "average": 10, "good": 15, "excellent": 22},
"note": "State the mid-cycle realisation assumed and show the sensitivity. This replaces roce_pct, which is disabled for this sector."},
"ebitda_per_tonne_vs_peer_pct": {"label": "EBITDA per tonne vs peer median (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -20, "average": 0, "good": 15, "excellent": 35}},
"net_debt_to_midcycle_ebitda": {"label": "Net debt / mid-cycle EBITDA (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 4.0, "average": 2.5, "good": 1.2, "excellent": 0.3},
"note": "Leverage measured on peak EBITDA is how cyclical companies enter restructuring while reporting a 1.5x ratio."},
"capex_intensity_vs_da_x": {"label": "Capex / depreciation (x)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0.2, 3.5], "average": [0.5, 2.5], "good": [0.7, 2.0], "excellent": [0.8, 1.6]},
"note": "Band: below 1x for years is liquidation by depreciation; far above 1x at the top of the cycle is the classic capital-destruction pattern."},
"ev_ebitda_x": {"thresholds": {"poor": 9, "average": 7, "good": 5, "excellent": 3.5},
"note": "On mid-cycle EBITDA. Low trailing EV/EBITDA at a cycle peak is the single most common cyclical value trap."},
"pe_x": {"thresholds": {"poor": 25, "average": 14, "good": 9, "excellent": 6},
"note": "Only meaningful on normalised earnings. A trailing P/E of 4 at the peak usually signals expensive, not cheap."},
"closure_rehab_provision_score": {"label": "Mine closure / rehabilitation provisioning adequacy", "category": "risk", "direction": "judgement", "weight": 1.5},
"resource_nationalism_score": {"label": "Licence, royalty and resource-nationalism exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "[India] auction-based mine allocation, royalty and DMF levies, captive block conditions."},
"cyclicality_resilience_score": {"weight": 2.5}
},
"disable": ["roce_pct", "net_debt_to_ebitda", "revenue_cagr_5y_pct", "eps_cagr_5y_pct"]
},
"oil-gas": {
"label": "Oil & gas — upstream, refining, marketing and gas utilities",
"extends": "generic",
"notes": "Three unrelated businesses under one tag: upstream is a price-taking resource depletion business, refining is a spread business, marketing and gas distribution are regulated volume businesses. Score the segment that drives profit and say which. In India, state-owned refiners and marketers carry subsidy and price-control exposure that can override every operating metric in a given year — that belongs in risk and in the report, not buried in an average.",
"category_weights": {"business_quality": 0.14, "profitability": 0.16, "earnings_quality": 0.12, "balance_sheet": 0.16, "growth": 0.08, "governance": 0.10, "valuation": 0.14, "risk": 0.10},
"metrics": {
"reserve_replacement_ratio_pct": {"label": "[Upstream] Reserve replacement ratio (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 60, "average": 100, "good": 130, "excellent": 180},
"note": "Below 100% the company is consuming itself; production growth funded by depletion is not growth."},
"finding_dev_cost_usd_boe": {"label": "[Upstream] Finding & development cost (USD/boe)", "category": "profitability", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 25, "average": 15, "good": 9, "excellent": 5}},
"opex_per_boe_usd": {"label": "[Upstream] Lifting cost (USD/boe)", "category": "profitability", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 25, "average": 15, "good": 9, "excellent": 5}},
"gross_refining_margin_premium_usd_bbl": {"label": "[Refining] GRM premium over benchmark crack (USD/bbl)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -1, "average": 0.5, "good": 2, "excellent": 4},
"note": "Complexity (Nelson index) and crude flexibility are what create a durable premium; a good year for cracks is not."},
"mid_cycle_roce_pct": {"label": "Mid-cycle ROCE (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 6, "average": 10, "good": 14, "excellent": 20}},
"net_debt_to_midcycle_ebitda": {"label": "Net debt / mid-cycle EBITDA (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 3.5, "average": 2.0, "good": 1.0, "excellent": 0.2}},
"ev_ebitda_x": {"thresholds": {"poor": 9, "average": 7, "good": 5, "excellent": 3.5}},
"pe_x": {"thresholds": {"poor": 20, "average": 13, "good": 8, "excellent": 5.5}},
"subsidy_price_control_score": {"label": "Subsidy / administered-price exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 2.0,
"note": "[India] Under-recoveries on LPG and fuel, and the timing and certainty of government compensation."},
"energy_transition_score": {"label": "Energy transition / terminal value exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "For a depleting-asset business the terminal value assumption is the valuation. State the assumed reserve life against the demand outlook."},
"cyclicality_resilience_score": {"weight": 2.0}
},
"disable": ["roce_pct", "net_debt_to_ebitda", "gross_margin_pct"]
},
"utilities-power": {
"label": "Power generation, transmission and regulated utilities",
"extends": "generic",
"notes": "The return here is set by a regulator, not earned competitively, so the question is not 'how high is the ROE' but 'is the allowed ROE being achieved, and is the asset base growing'. Leverage is structurally high and legitimately so — a 4x net debt/EBITDA that would be alarming for a manufacturer is normal for a regulated network with contracted cash flows, which is why the sector bands are loosened. In India, counterparty risk sits with state distribution companies and shows up as receivable days, not as a credit rating.",
"category_weights": {"business_quality": 0.12, "profitability": 0.14, "earnings_quality": 0.14, "balance_sheet": 0.18, "growth": 0.10, "governance": 0.10, "valuation": 0.12, "risk": 0.10},
"metrics": {
"allowed_vs_achieved_roe_gap_pp": {"label": "Achieved minus allowed RoE (pp)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": -4, "average": -1, "good": 0, "excellent": 1.5},
"note": "[India] CERC/SERC norms fix an allowed RoE on approved equity, with incentives for availability. [US] the allowed ROE comes from the rate case. Beating it means operating outperformance; missing it means under-recovery."},
"ppa_tie_up_share_pct": {"label": "Capacity tied up under long-term PPAs (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 50, "average": 75, "good": 90, "excellent": 98},
"note": "Merchant capacity is a commodity exposure inside what looks like a regulated business."},
"plant_availability_pct": {"label": "Plant availability / PLF (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 60, "good": 72, "excellent": 85},
"note": "Technology-dependent: for renewables the equivalent is CUF (solar ~20-25%, wind ~25-35%). Replace the band before scoring a renewables IPP."},
"discom_receivable_days": {"label": "[India] Receivable days from discoms", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 150, "average": 90, "good": 60, "excellent": 40},
"note": "The characteristic Indian power-sector failure: profit is booked, cash sits with a loss-making state utility."},
"regulatory_assets_to_equity_pct": {"label": "Regulatory assets / under-recoveries as % of equity", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 20, "good": 8, "excellent": 2},
"note": "A regulatory asset is profit recognised now on the promise of a future tariff order. Test whether past ones were actually recovered."},
"net_debt_to_ebitda": {"thresholds": {"poor": 6.5, "average": 5.0, "good": 3.5, "excellent": 2.0},
"note": "Loosened band. Contracted, regulated cash flows support leverage that would be reckless in a cyclical business."},
"interest_coverage_x": {"thresholds": {"poor": 1.5, "average": 2.2, "good": 3.5, "excellent": 5.0}},
"rab_growth_pct": {"label": "Regulated asset base growth (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 2, "average": 6, "good": 10, "excellent": 15},
"note": "For a regulated utility, growth in the asset base at the allowed return IS earnings growth. It is the cleanest growth metric in the sector."},
"ev_ebitda_x": {"thresholds": {"poor": 14, "average": 10, "good": 7.5, "excellent": 5.5}},
"fuel_supply_security_score": {"label": "Fuel supply security (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5},
"regulatory_risk_score": {"weight": 2.0}
}
},
"infra-capitalgoods": {
"label": "Infrastructure, EPC, capital goods and defence",
"extends": "generic",
"notes": "Percentage-of-completion accounting makes revenue and profit an estimate rather than an observation, so earnings quality carries the heaviest weight in this sector. The characteristic failure is an order book that grows while cash does not: unbilled revenue, retention money and claims accumulate on the balance sheet, and years later become a write-off. Off-balance-sheet bank guarantees and performance bonds are real leverage and must be added to the solvency view.",
"category_weights": {"business_quality": 0.10, "profitability": 0.14, "earnings_quality": 0.18, "balance_sheet": 0.16, "growth": 0.10, "governance": 0.12, "valuation": 0.12, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 4, "average": 8, "good": 12, "excellent": 17}},
"order_book_to_revenue_x": {"label": "Order book / trailing revenue (x)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 1.0, "average": 1.8, "good": 2.6, "excellent": 3.5},
"note": "State the execution period. A 3x book over six years is weaker than a 2x book over two."},
"order_inflow_growth_pct": {"label": "Order inflow growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": -5, "average": 8, "good": 18, "excellent": 30}},
"execution_cycle_months": {"label": "Average execution cycle (months)", "category": "business_quality", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 42, "average": 30, "good": 22, "excellent": 15}},
"unbilled_revenue_to_revenue_pct": {"label": "Unbilled revenue / revenue (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 30, "average": 18, "good": 10, "excellent": 5},
"note": "Revenue recognised on a percentage-of-completion estimate but not yet billable. Rising unbilled revenue with flat cash is the sector's signature warning."},
"receivable_days": {"label": "Receivable days (incl. retention)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 150, "average": 100, "good": 70, "excellent": 45}},
"claims_to_networth_pct": {"label": "Arbitration claims recognised / net worth (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 20, "good": 8, "excellent": 2},
"note": "Claims booked as assets are litigation outcomes recognised as profit. Check the historical realisation rate before believing any of it."},
"bg_lc_to_networth_x": {"label": "Bank guarantees + LCs / net worth (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 2.5, "average": 1.5, "good": 0.8, "excellent": 0.3}},
"fixed_price_orderbook_pct": {"label": "Fixed-price share of order book (%)", "category": "risk", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 70, "average": 50, "good": 30, "excellent": 15},
"note": "Fixed-price contracts without input escalation clauses transfer commodity risk onto a thin-margin contractor."},
"client_receivable_quality_score": {"label": "Counterparty quality of the order book (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "Government and state-entity clients pay late; private capex clients cancel. Both are risks, differently shaped."},
"cfo_to_pat_3y": {"weight": 2.5}
}
},
"telecom-media": {
"label": "Telecom, towers, broadcasting and media",
"extends": "generic",
"notes": "A perpetual-capex utility with consumer-brand economics on top. The binding constraint is the balance sheet: spectrum and network capex are funded with debt, and the sector's history is of leverage, not competition, deciding survivors. Score FCF after spectrum payments, because pre-spectrum free cash flow flatters every operator. For media, the accounting judgement that matters is content amortisation policy — it sets margin almost at will.",
"category_weights": {"business_quality": 0.14, "profitability": 0.14, "earnings_quality": 0.12, "balance_sheet": 0.20, "growth": 0.10, "governance": 0.10, "valuation": 0.12, "risk": 0.08},
"metrics": {
"ebitda_margin_pct": {"label": "EBITDA margin (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 25, "average": 35, "good": 45, "excellent": 52},
"note": "Post-IFRS-16/Ind-AS-116 margins are inflated by lease accounting. Compare on a consistent basis or use EBITDAaL."},
"roce_pct": {"thresholds": {"poor": 3, "average": 7, "good": 12, "excellent": 18},
"note": "Structurally low: enormous capital base. A 12% ROCE here is a good business; the same number in software would be poor."},
"arpu_growth_pct": {"label": "ARPU growth (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -3, "average": 2, "good": 6, "excellent": 12},
"note": "In a saturated market ARPU is the only real growth lever, and it is a proxy for whether the industry has stopped competing on price."},
"subscriber_churn_monthly_pct": {"label": "Monthly subscriber churn (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 3.0, "average": 1.8, "good": 1.0, "excellent": 0.6}},
"capex_to_revenue_pct": {"label": "Capex / revenue (%)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0, 50], "average": [8, 38], "good": [12, 30], "excellent": [15, 25]},
"note": "Band: too little means the network falls behind and churn follows; too much means the returns will never be earned."},
"fcf_after_spectrum_pct": {"label": "FCF after spectrum payments / revenue (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -5, "average": 0, "good": 5, "excellent": 12}},
"net_debt_to_ebitda": {"thresholds": {"poor": 5.0, "average": 3.5, "good": 2.2, "excellent": 1.0},
"note": "[India] Include AGR and deferred spectrum liabilities to the government — they are debt regardless of where they sit."},
"content_amortisation_score": {"label": "[Media] Content amortisation policy conservatism", "category": "earnings_quality", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Long straight-line amortisation of content with no impairment history", "5": "Standard accelerated policy", "8": "Fast, viewership-linked amortisation with disclosed impairments"}},
"market_position_score": {"label": "Market structure position (subscriber and revenue share trend)", "category": "business_quality", "direction": "judgement", "weight": 2.0},
"spectrum_regulatory_score": {"label": "Spectrum, licence and regulatory exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5}
}
},
"aviation-hotels": {
"label": "Airlines, hotels, travel and restaurants",
"extends": "generic",
"notes": "High operating leverage against fixed capacity, which means margins swing violently and the balance sheet decides who survives the swing. Always capitalise leases: an airline or hotel operator that leases its assets is not less levered, only differently disclosed — score on EBITDAR and adjusted net debt. Liquidity measured in months of fixed costs is the metric that actually predicted which operators survived the last demand shock.",
"category_weights": {"business_quality": 0.12, "profitability": 0.16, "earnings_quality": 0.12, "balance_sheet": 0.20, "growth": 0.08, "governance": 0.10, "valuation": 0.12, "risk": 0.10},
"metrics": {
"rask_cask_spread": {"label": "[Airlines] RASK minus CASK (per ASK, local minor units)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": -0.3, "average": 0.1, "good": 0.5, "excellent": 1.0},
"note": "The entire airline business in one number. Report both legs — a positive spread from collapsing costs is a different fact from one from strong yields."},
"cask_ex_fuel_vs_peer_pct": {"label": "[Airlines] CASK ex-fuel vs peer median (%)", "category": "profitability", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 15, "average": 5, "good": -5, "excellent": -15},
"note": "Cost leadership is the only durable moat in aviation. Fuel is common to everyone; ex-fuel cost is the company."},
"load_factor_pct": {"label": "[Airlines] Passenger load factor (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 72, "average": 82, "good": 87, "excellent": 91},
"note": "Read with yield. A high load factor bought with discounting is a cost, not an achievement."},
"revpar_index_rgi": {"label": "[Hotels] RevPAR index vs competitive set (RGI)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 85, "average": 100, "good": 115, "excellent": 135},
"note": "Indexed to the local competitive set, so it strips out the cycle and measures relative execution — the sector-relative principle built into a single metric."},
"goppar_margin_pct": {"label": "[Hotels] GOP margin (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 25, "average": 33, "good": 40, "excellent": 48}},
"asset_light_fee_share_pct": {"label": "[Hotels] Managed/franchised fee income share (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 10, "average": 25, "good": 45, "excellent": 70},
"note": "Fee income is annuity-like and needs no capital; owned rooms are a levered property bet with an operating business attached."},
"adjusted_net_debt_to_ebitdar_x": {"label": "Adjusted net debt / EBITDAR (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 6.0, "average": 4.5, "good": 3.0, "excellent": 1.5}},
"liquidity_months_fixed_costs": {"label": "Liquidity in months of fixed costs", "category": "balance_sheet", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 1.5, "average": 3, "good": 6, "excellent": 12},
"note": "The survival metric. In a demand shock, revenue goes to near zero while fixed costs continue; everything else is secondary."},
"deferred_revenue_days": {"label": "Forward bookings / deferred revenue (days of revenue)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 5, "average": 15, "good": 30, "excellent": 50},
"note": "Customer float funds the business — a genuine negative working capital advantage. It also reverses violently when demand stops."},
"fuel_hedge_score": {"label": "[Airlines] Fuel and FX hedging discipline (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0},
"cyclicality_resilience_score": {"weight": 2.5}
},
"disable": ["gross_margin_pct"]
},
"retail-ecommerce": {
"label": "Retail chains, e-commerce, marketplaces and quick commerce",
"extends": "generic",
"notes": "Thin margins by construction, so return on capital is driven by turnover and negative working capital, not by margin — the clearest illustration in this whole scorecard of why a low-margin retailer can be a better business than a high-margin manufacturer. Score store-level economics before consolidated margins: a chain with strong unit economics and heavy new-store investment looks worse on consolidated numbers precisely because it is doing the right thing. Ind-AS 116 / IFRS 16 shifted lease costs below EBITDA — compare pre-lease store EBITDA across companies or the comparison is meaningless.",
"category_weights": {"business_quality": 0.16, "profitability": 0.16, "earnings_quality": 0.14, "balance_sheet": 0.10, "growth": 0.14, "governance": 0.10, "valuation": 0.12, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 2, "average": 5, "good": 9, "excellent": 14},
"note": "A 5% operating margin here is average; the same number would be alarming in software. The margin band is the sector's, not the market's."},
"gross_margin_pct": {"thresholds": {"poor": 15, "average": 25, "good": 35, "excellent": 48}},
"roce_pct": {"thresholds": {"poor": 8, "average": 14, "good": 22, "excellent": 35},
"note": "The whole point of retail: 3-5% net margin multiplied by high asset turnover and negative working capital can produce a 25%+ ROCE."},
"cash_conversion_cycle_days": {"thresholds": {"poor": 60, "average": 25, "good": -5, "excellent": -30},
"note": "Deeply negative is excellent — suppliers fund the inventory. But test whether it is genuine terms or stretched payables hiding a liquidity problem."},
"sssg_pct": {"label": "Same-store sales growth (%)", "category": "growth", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": -2, "average": 4, "good": 8, "excellent": 14},
"note": "Decompose into footfall, conversion, basket size and price. Growth that is only new stores can continue until the map runs out and then stops."},
"store_payback_years": {"label": "New store cash payback (years)", "category": "growth", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 6, "average": 4, "good": 2.5, "excellent": 1.5},
"note": "The single number that decides whether store expansion creates or destroys value."},
"store_ebitda_margin_pre_lease_pct": {"label": "Store-level EBITDA margin, pre-lease (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 6, "average": 12, "good": 18, "excellent": 25}},
"contribution_margin_pct": {"label": "[E-commerce] Contribution margin after delivery and discounts (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -2, "average": 3, "good": 8, "excellent": 15},
"note": "Before corporate overhead but after every variable cost of serving the order. If this is negative at scale, scale makes it worse."},
"take_rate_pct": {"label": "[Marketplace] Net revenue take rate (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 4, "average": 8, "good": 13, "excellent": 20},
"note": "Also check gross vs net revenue recognition — GMV-based reporting is not revenue."},
"inventory_days": {"label": "Inventory days", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 120, "average": 80, "good": 55, "excellent": 35},
"note": "Rising inventory days in retail nearly always ends in markdowns, which arrive as a margin shock one or two quarters later."},
"pe_x": {"thresholds": {"poor": 90, "average": 60, "good": 40, "excellent": 28}},
"omnichannel_execution_score": {"label": "Omnichannel and format-relevance execution", "category": "business_quality", "direction": "judgement", "weight": 1.5},
"platform_disruption_score": {"label": "Disruption exposure (quick commerce, platform shift) (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5}
}
},
"chemicals-cement": {
"label": "Specialty chemicals, agrochemicals, fertilisers and cement",
"extends": "generic",
"notes": "Two economics under one tag. Cement is a regional, freight-limited commodity where the moat is a limestone lease plus a short lead distance, and EBITDA per tonne is the comparable unit. Specialty chemicals sits between commodity and pharma — the moat is customer qualification and process IP, so the test is whether margins survive a Chinese supply restart. In both, per-unit metrics compared to regional peers beat any absolute margin band.",
"category_weights": {"business_quality": 0.14, "profitability": 0.16, "earnings_quality": 0.12, "balance_sheet": 0.14, "growth": 0.10, "governance": 0.10, "valuation": 0.14, "risk": 0.10},
"metrics": {
"opm_pct": {"thresholds": {"poor": 8, "average": 14, "good": 20, "excellent": 28}},
"ebitda_per_tonne_vs_peer_pct": {"label": "[Cement] EBITDA per tonne vs regional peer median (%)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": -20, "average": 0, "good": 12, "excellent": 30},
"note": "Regional, not national: cement prices and costs are local because freight limits the market to a few hundred kilometres."},
"capacity_utilisation_pct": {"label": "Capacity utilisation (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 55, "average": 70, "good": 80, "excellent": 90}},
"lead_distance_km": {"label": "[India, cement] Average lead distance (km)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 500, "average": 350, "good": 250, "excellent": 150},
"note": "Freight is one of the largest cost lines. Short lead distance is a structural, un-copyable cost advantage."},
"power_fuel_cost_vs_peer_pct": {"label": "Power & fuel cost per tonne vs peer (%)", "category": "profitability", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 15, "average": 5, "good": -5, "excellent": -15},
"note": "Captive power, WHRS and green power share drive this and are durable."},
"backward_integration_score": {"label": "Backward integration and key raw material security", "category": "business_quality", "direction": "judgement", "weight": 1.5},
"product_concentration_top5_pct": {"label": "[Chemicals] Top-5 molecule share of revenue (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 70, "average": 50, "good": 35, "excellent": 20}},
"new_product_revenue_share_pct": {"label": "[Chemicals] Revenue from products launched in last 5y (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 3, "average": 8, "good": 15, "excellent": 25},
"note": "The innovation pipeline test that separates a specialty chemicals company from a commodity producer calling itself one."},
"china_supply_exposure_score": {"label": "Chinese / low-cost supply restart exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 2.0,
"note": "Many 'specialty' margins were China-shutdown windfalls. Ask what the margin was before the disruption and what happens when supply returns."},
"environmental_compliance_score": {"label": "Environmental compliance and pollution-control record (10 = clean)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "[India] State pollution control board closure orders can halt a plant with no notice — a step-function risk, like FDA action in pharma."},
"ev_ebitda_x": {"thresholds": {"poor": 22, "average": 15, "good": 10, "excellent": 7}}
}
},
"holdco-assetmgr": {
"label": "Holding companies, conglomerates, AMCs and alternative managers",
"extends": "generic",
"notes": "Consolidated ratios blend unrelated businesses into a number no manager can act on, so score look-through economics and value sum-of-the-parts. Governance carries the heaviest weight of any sector here because the entire question is whether value at the subsidiary level ever reaches the holdco shareholder. A wide discount to NAV is only an opportunity if there is a mechanism to close it; without one it is a permanent, rational tax on the structure.",
"category_weights": {"business_quality": 0.12, "profitability": 0.14, "earnings_quality": 0.12, "balance_sheet": 0.10, "growth": 0.10, "governance": 0.20, "valuation": 0.16, "risk": 0.06},
"metrics": {
"look_through_roe_pct": {"label": "Look-through ROE on proportionate stakes (%)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 8, "average": 13, "good": 18, "excellent": 25},
"note": "Weight each holding's ROE by the holdco's economic interest. Consolidated ROE is an artefact of which stakes cross the consolidation threshold."},
"opex_to_nav_pct": {"label": "Holdco operating cost / NAV (%)", "category": "profitability", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 2.5, "average": 1.2, "good": 0.6, "excellent": 0.25},
"note": "The running cost of the structure itself. Capitalised at a market multiple, a 1% cost drag explains a large part of most holdco discounts."},
"dividend_upstreaming_pct": {"label": "Dividends received / look-through profit (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 20, "average": 45, "good": 70, "excellent": 90},
"note": "Tests whether subsidiary profit actually reaches the parent, or is permanently trapped where minorities cannot access it."},
"aum_growth_pct": {"label": "[AMC] AUM growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 0, "average": 8, "good": 15, "excellent": 25}},
"net_flows_to_opening_aum_pct": {"label": "[AMC] Net flows / opening AUM (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -5, "average": 2, "good": 8, "excellent": 15},
"note": "Separates flows from market appreciation. Only flows are the business; market moves are borrowed."},
"yield_on_aum_bps": {"label": "[AMC] Revenue yield on AUM (bps)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 25, "average": 45, "good": 70, "excellent": 100},
"note": "[India] SEBI TER caps compress yield as AUM grows — model the slab effect rather than extrapolating current yield."},
"performance_fee_share_pct": {"label": "[Alt manager] Performance fees as % of revenue", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 30, "good": 15, "excellent": 5},
"note": "Carry and performance fees are real but lumpy and cycle-dependent. Capitalising them at a management-fee multiple is a standard valuation error."},
"holdco_discount_to_nav_pct": {"label": "Discount to sum-of-the-parts NAV (%)", "category": "valuation", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 10, "average": 30, "good": 50, "excellent": 65},
"note": "Score with the crystallisation metric below, never alone. A 60% discount that has been 60% for fifteen years is a structural fact, not an opportunity."},
"crystallisation_catalyst_score": {"label": "Discount crystallisation mechanism", "category": "valuation", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "No buyback, no distribution, promoter benefits from the structure", "5": "Occasional dividends, discount stable for years", "8": "Active buybacks below NAV, announced demerger or stake monetisation with a timetable"}},
"minority_treatment_score": {"label": "Historical treatment of minority shareholders", "category": "governance", "direction": "judgement", "weight": 2.5,
"anchors": {"2": "Related-party asset transfers at unfavourable prices, minorities diluted in restructurings", "5": "Compliant, unremarkable", "8": "Restructurings priced independently, minorities consistently offered the same terms as the promoter"}},
"capital_allocation_score": {"weight": 2.5},
"structure_complexity_score": {"label": "Structural complexity and tax leakage (10 = simple)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "Each layer of cross-holding adds a discount and a tax on upstreamed dividends. Count the layers and say what each costs."}
},
"disable": ["opm_pct", "gross_margin_pct", "cash_conversion_cycle_days"]
},
"shipping-logistics": {
"label": "Shipping, tankers, dry bulk, ports and logistics",
"extends": "generic",
"notes": "Shipping is the purest supply-cycle business in the market: rates are set by the global orderbook, not by any operator's skill, so score the balance sheet and the entry price rather than current profitability. Asset value matters more than earnings — price to NAV on vessel values is the primary valuation tool and trailing P/E is actively misleading at both cycle ends. Asset-light logistics has different, better economics and should be scored on the generic set plus network density.",
"category_weights": {"business_quality": 0.12, "profitability": 0.14, "earnings_quality": 0.12, "balance_sheet": 0.18, "growth": 0.06, "governance": 0.10, "valuation": 0.18, "risk": 0.10},
"metrics": {
"rate_to_cash_breakeven_x": {"label": "Achieved rate / cash breakeven (x)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 0.9, "average": 1.1, "good": 1.4, "excellent": 2.0},
"note": "Cash breakeven includes opex, drydocking, interest and debt amortisation. Below 1.0 the company is consuming equity every day it operates."},
"mid_cycle_roce_pct": {"label": "Mid-cycle ROCE (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 4, "average": 8, "good": 13, "excellent": 18}},
"opex_per_day_vs_peer_pct": {"label": "Vessel opex per day vs peer (%)", "category": "profitability", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 12, "average": 4, "good": -4, "excellent": -12}},
"fleet_age_years": {"label": "Average fleet age (years)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 18, "average": 13, "good": 9, "excellent": 6},
"note": "Read with environmental regulation: older, less efficient tonnage faces CII/EEXI restrictions and a widening earnings gap."},
"contracted_revenue_days_pct": {"label": "Contracted revenue days, next 12m (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 25, "average": 50, "good": 70, "excellent": 90},
"note": "Coverage is protection at the top of the cycle and an opportunity cost at the bottom. Judge it against where the cycle is."},
"asset_light_revenue_share_pct": {"label": "[Logistics] Asset-light revenue share (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 10, "average": 30, "good": 55, "excellent": 80}},
"net_debt_to_vessel_value_pct": {"label": "Net debt / fleet market value (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 65, "average": 50, "good": 35, "excellent": 20},
"note": "Vessel values fall with rates, so leverage rises exactly when earnings collapse. This double effect, not the rate itself, is what bankrupts shipowners."},
"price_to_nav_x": {"label": "Price / net asset value on vessel values (x)", "category": "valuation", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 1.4, "average": 1.0, "good": 0.75, "excellent": 0.5}},
"ev_ebitda_x": {"thresholds": {"poor": 9, "average": 7, "good": 5, "excellent": 3.5}, "note": "On mid-cycle EBITDA only."},
"industry_orderbook_to_fleet_pct": {"label": "Industry orderbook / global fleet (%)", "category": "risk", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 35, "average": 22, "good": 12, "excellent": 5},
"note": "The single best forward indicator of shipping returns. A low orderbook is the precondition for a rate cycle; a high one guarantees its end."},
"cyclicality_resilience_score": {"weight": 2.0}
},
"disable": ["revenue_cagr_5y_pct", "eps_cagr_5y_pct", "gross_margin_pct", "pe_x"]
},
"exchanges-payments": {
"label": "Exchanges, depositories, clearing houses, rating agencies and payment networks",
"extends": "generic",
"notes": "Some of the best economics in any market: network effects, negative working capital, and near-zero incremental cost per transaction, which is why the ROCE and margin bands are lifted far above the generic set. Invested capital can be negative because customer float funds the business — say so explicitly rather than reporting an absurd ROIC. The concentrated risk is regulatory: a single rule change on product mix, fee caps or market structure can remove a large share of revenue overnight, which is why risk is weighted above the default.",
"category_weights": {"business_quality": 0.18, "profitability": 0.16, "earnings_quality": 0.12, "balance_sheet": 0.06, "growth": 0.12, "governance": 0.12, "valuation": 0.14, "risk": 0.10},
"metrics": {
"opm_pct": {"thresholds": {"poor": 30, "average": 45, "good": 58, "excellent": 70},
"note": "A 45% operating margin is merely average here. Scored on the generic band it would read as world-class — the sector-relative point in one line."},
"roce_pct": {"thresholds": {"poor": 15, "average": 25, "good": 40, "excellent": 60},
"note": "If invested capital is near zero or negative, report ROCE as not meaningful rather than as infinity, and lean on margin and cash generation instead."},
"take_rate_trend_bps_3y": {"label": "Take rate change over 3 years (bps)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -5, "average": -1, "good": 0.5, "excellent": 2},
"note": "The most under-monitored line in the sector. Volume growth of 20% with take rate down 15% is barely growth at all — always decompose revenue into volume, price and mix."},
"client_retention_pct": {"label": "Client / issuer retention (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 90, "average": 95, "good": 98, "excellent": 99.5}},
"volume_growth_vs_market_x": {"label": "Volume growth vs underlying market (x)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0.7, "average": 1.0, "good": 1.3, "excellent": 1.8}},
"float_income_share_of_pbt_pct": {"label": "Float / treasury income as % of PBT", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 40, "average": 25, "good": 12, "excellent": 5},
"note": "Float income is a rate bet inside an operating business. It inflates profit in a high-rate year and vanishes in a low-rate one."},
"product_concentration_top_product_pct": {"label": "Largest product share of revenue (%)", "category": "risk", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 75, "average": 55, "good": 40, "excellent": 25}},
"regulatory_concentration_score": {"label": "Single-regulator / single-rule dependence (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 2.5,
"anchors": {"2": "Majority of revenue from one product that a regulator has publicly proposed restricting", "5": "Normal regulated exposure across several products", "8": "Diversified across products, geographies and regulators"}},
"pe_x": {"thresholds": {"poor": 70, "average": 50, "good": 35, "excellent": 24}},
"ev_ebitda_x": {"thresholds": {"poor": 40, "average": 28, "good": 20, "excellent": 13}},
"operating_leverage_score": {"label": "Incremental operating leverage", "category": "profitability", "direction": "judgement", "weight": 1.5}
},
"disable": ["gross_margin_pct", "cash_conversion_cycle_days", "net_debt_to_ebitda"]
},
"semiconductors": {
"label": "Semiconductors, fabs, equipment and capital-intensive hardware",
"extends": "generic",
"notes": "A cyclical industry with software-like gross margins and utility-like capex, so both the margin bands and the capital intensity bands are lifted. Judge returns across a full cycle: capacity decided three years ago meets demand today, which is why peak-cycle ROIC flatters and trough-cycle ROIC misleads. R&D and capex are not optional costs — under-spending buys two good years and then permanent process irrelevance, which is why both are scored as bands rather than lower-is-better.",
"category_weights": {"business_quality": 0.16, "profitability": 0.16, "earnings_quality": 0.12, "balance_sheet": 0.10, "growth": 0.16, "governance": 0.08, "valuation": 0.14, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 8, "average": 18, "good": 28, "excellent": 40}},
"gross_margin_pct": {"thresholds": {"poor": 30, "average": 42, "good": 55, "excellent": 65}},
"cycle_adjusted_roic_pct": {"label": "Cycle-adjusted ROIC (%)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 6, "average": 12, "good": 20, "excellent": 30},
"note": "Average across a full cycle, stating the years used. A single-year ROIC in this industry says more about the cycle than the company."},
"rd_to_sales_pct": {"label": "R&D / sales (%)", "category": "growth", "direction": "band", "weight": 2.0,
"thresholds": {"poor": [2, 40], "average": [6, 32], "good": [10, 27], "excellent": [14, 23]},
"note": "Band: under-investing is a slow exit from the industry; over-investing without design wins is capital destruction."},
"capex_to_sales_pct": {"label": "Capex / sales (%)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0, 50], "average": [3, 38], "good": [6, 30], "excellent": [9, 24]},
"note": "Fabless companies sit at the low end legitimately; a fab operator at the low end is falling behind on node."},
"node_position_score": {"label": "Process node / technology position", "category": "business_quality", "direction": "judgement", "weight": 2.5,
"anchors": {"2": "Two nodes behind with no roadmap", "5": "Competitive at mainstream nodes", "8": "At or ahead of the leading edge, or dominant in a defensible mature niche"}},
"customer_concentration_top5_pct": {"thresholds": {"poor": 70, "average": 50, "good": 35, "excellent": 22},
"note": "Loosened band: extreme customer concentration is structurally normal in this industry, so the generic band would misprice it."},
"fab_utilisation_pct": {"label": "Fab / capacity utilisation (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 60, "average": 75, "good": 88, "excellent": 95}},
"inventory_days": {"label": "Inventory days", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 180, "average": 120, "good": 85, "excellent": 60},
"note": "Channel inventory build is the classic late-cycle signal — check distributor inventory as well as the company's own."},
"design_win_pipeline_score": {"label": "Design-win pipeline and revenue visibility", "category": "growth", "direction": "judgement", "weight": 2.0,
"note": "Design wins convert to revenue with a two to four year lag, so this is the only forward-looking growth evidence available."},
"ev_ebitda_x": {"thresholds": {"poor": 30, "average": 20, "good": 13, "excellent": 9}},
"pe_x": {"thresholds": {"poor": 55, "average": 35, "good": 22, "excellent": 15}},
"geopolitical_exposure_score": {"label": "Geopolitical / export-control exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 2.0,
"note": "Concentration of fabs, customers or export licences in a single jurisdiction is a tail risk that no operating metric captures."},
"cyclicality_resilience_score": {"weight": 2.0}
}
},
"mortgage-reit-specialty-finance": {
"label": "Mortgage REITs, BDCs and specialty finance vehicles",
"notes": "Standalone set -- does NOT extend generic. These are levered spread vehicles, not operating companies: there is no revenue, no EBIT, no invested capital and no cash conversion cycle, so operating margin, ROCE, EV/EBITDA and net debt/EBITDA are undefined rather than merely different. Nearly the entire balance sheet is marked to model or to market, so book value is the unit of account and ECONOMIC RETURN (change in book value per share plus dividends declared, over opening book value per share) is the only honest measure of what the owner earned -- a 14% dividend yield paid out of a 12% book value decline is a return of capital. Score an agency mREIT, a credit mREIT and a BDC on different absolute levels: agency vehicles legitimately run 6-8x leverage on 1.0-1.7% spreads, credit vehicles 2-4x on wider spreads, and BDCs are capped near 2.0x by the 150% asset coverage requirement. RANGES BELOW ARE INDICATIVE STARTING POINTS ONLY. Where you have a genuine peer set (same asset class, same leverage convention, same quarter-end marks), PEER-PERCENTILE COMPARISON OVERRIDES THESE BANDS -- pass peer_values or peer_percentile and score.py will use them in preference.",
"category_weights": {"business_quality": 0.10, "profitability": 0.16, "earnings_quality": 0.16, "balance_sheet": 0.20, "growth": 0.06, "governance": 0.12, "valuation": 0.12, "risk": 0.08},
"metrics": {
"permanent_capital_share_pct": {"label": "Term / non-mark-to-market funding as % of liabilities", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 10, "average": 30, "good": 55, "excellent": 75},
"note": "Unsecured notes, CLO liabilities, convertibles and term facilities cannot be margin-called. Every mortgage REIT failure on record was a funding failure: the assets were fine and the repo lender re-marked them. This is the single most important structural quality metric in the sector."},
"funding_diversity_score": {"label": "Funding counterparty diversity and depth", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Three or fewer repo counterparties, no committed lines, no unsecured issuance record", "5": "Ten-plus counterparties, some committed capacity, one unsecured deal done", "8": "Twenty-plus counterparties, laddered committed facilities, repeat unsecured issuance through a stress window"},
"note": "Count committed versus uncommitted capacity separately. Uncommitted repo disappears exactly when it is needed."},
"asset_selection_edge_score": {"label": "Asset selection and underwriting edge", "category": "business_quality", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Buys the index; no origination, servicing or sourcing advantage", "5": "Some proprietary sourcing or a servicing affiliate", "8": "Proprietary origination or workout capability that demonstrably produced better realised losses than the asset class"},
"note": "In a spread vehicle the only durable edges are cheaper funding and better sourcing. Everything else is beta dressed as skill."},
"economic_return_pct": {"label": "Economic return (BVPS change + dividends, % of opening BVPS)", "category": "profitability", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 0, "average": 6, "good": 11, "excellent": 16},
"note": "The headline number for the sector and the only one that cannot be gamed by paying an unearned dividend. Compare it to the vehicle's own cost of equity (commonly 10-13%), and read it over at least three years -- one good quarter of spread tightening flatters it."},
"net_interest_spread_pct": {"label": "Net interest spread (asset yield minus cost of funds, %)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0.8, "average": 1.5, "good": 2.2, "excellent": 3.0},
"note": "State whether hedge carry (swap/SOFR receive-fixed income) is inside the spread -- including it can add 100-200bp and the two conventions are routinely compared as if identical. Band set for a hybrid agency/credit book; a direct-lending BDC runs 5-7%."},
"portfolio_yield_pct": {"label": "Weighted average portfolio yield (%)", "category": "profitability", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [5, 18], "average": [7, 15], "good": [8.5, 13.5], "excellent": [10, 12.5]},
"note": "Band, not higher-better: above the band the yield is being bought with credit risk or PIK, below it the vehicle is not earning its cost of equity. Set for a credit/BDC book -- reset to roughly [3.5, 7] for an agency MBS portfolio before scoring one."},
"dividend_coverage_by_core_eps_x": {"label": "Core / distributable EPS / dividend declared (x)", "category": "earnings_quality", "direction": "band", "weight": 2.5,
"thresholds": {"poor": [0.7, 2.2], "average": [0.9, 1.8], "good": [1.0, 1.5], "excellent": [1.05, 1.35]},
"note": "Band: below 1.0x the distribution is being funded from capital or leverage; far above 1.0x a REIT is failing its 90% distribution requirement or hoarding, and the excess is usually about to be paid as a special. Check what management excludes from 'distributable earnings' -- realised credit losses are commonly excluded, which is precisely the item that matters."},
"non_accrual_pct": {"label": "[BDC] Non-accrual investments (% of portfolio at fair value)", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 5.0, "average": 2.5, "good": 1.0, "excellent": 0.3},
"note": "Quote at fair value AND at cost -- the gap is how much has already been written down. Non-accruals at cost running well above the fair-value figure means the marks moved before the accrual status did."},
"pik_income_share_pct": {"label": "[BDC] PIK income as % of total investment income", "category": "earnings_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 15, "average": 8, "good": 4, "excellent": 1.5},
"note": "Payment-in-kind income is interest the borrower could not pay in cash, accrued into the balance sheet and distributed to shareholders in cash. Rising PIK share alongside flat non-accruals is the classic sequence in which credit deterioration is deferred rather than avoided."},
"leverage_debt_to_equity_x": {"label": "Leverage (debt / equity, x)", "category": "balance_sheet", "direction": "band", "weight": 2.5,
"thresholds": {"poor": [0.3, 9.0], "average": [0.8, 7.0], "good": [1.2, 5.0], "excellent": [1.5, 3.5]},
"note": "Band, not lower-better: an under-levered spread vehicle is not earning its cost of equity, and leverage is the product. Set for a hybrid/credit book. Agency-only mREITs run 6-8x legitimately (reset the band up); BDCs are capped near 2.0x by the 150% asset coverage test (reset it down and score the headroom to the ceiling, not the level)."},
"repo_maturity_days": {"label": "Weighted average remaining repo / secured funding maturity (days)", "category": "balance_sheet", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 20, "average": 45, "good": 90, "excellent": 180},
"note": "The tenor of the funding is the tenor of the company. Thirty-day repo against thirty-year mortgages is a maturity mismatch of roughly 360x, and it is renewed on the lender's terms every month. Report the maturity ladder, not just the average."},
"unencumbered_assets_to_equity_pct": {"label": "Unencumbered assets + cash as % of equity", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 10, "average": 25, "good": 45, "excellent": 70},
"note": "This is the margin-call absorption capacity. It answers the only question that matters in a stress week: how far can spreads widen before the vehicle is a forced seller?"},
"debt_maturity_within_12m_pct": {"label": "Debt maturing within 12 months (% of total debt)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 70, "average": 45, "good": 25, "excellent": 10},
"note": "Include repo rolls only if they are uncommitted. For BDCs this is the unsecured note wall -- refinancing an unsecured maturity while trading below book usually means issuing equity at a discount to do it."},
"book_value_change_1y_pct": {"label": "Book value per share change, 1y (%)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -12, "average": -3, "good": 2, "excellent": 7},
"note": "For a levered spread vehicle, book value per share is the whole growth story -- there is nothing else compounding. Persistent erosion alongside a maintained dividend means the distribution is a partial liquidation. Always read this together with economic_return_pct rather than instead of it."},
"net_portfolio_growth_pct": {"label": "Net portfolio / investment growth (%)", "category": "growth", "direction": "band", "weight": 1.0,
"thresholds": {"poor": [-25, 60], "average": [-10, 40], "good": [-3, 25], "excellent": [2, 18]},
"note": "Band: rapid portfolio growth in a spread business is almost always funded by issuing equity or by moving down in credit, and shrinkage is often the correct decision when spreads are tight. Neither direction is good on its own."},
"external_manager_fee_to_equity_pct": {"label": "Management + incentive fees as % of average equity", "category": "governance", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 3.5, "average": 2.5, "good": 1.7, "excellent": 1.0},
"note": "Externally managed vehicles have the sector's defining conflict: the manager is paid on equity or assets, so it is paid to raise and deploy capital whether or not doing so is accretive per share. Check whether the incentive fee has a total-return hurdle with a high-water mark, or is charged on net investment income alone -- the latter pays the manager for taking credit risk that has not yet been realised as a loss."},
"equity_issuance_premium_to_book_pct": {"label": "Weighted average equity issuance price vs book value (%)", "category": "governance", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": -10, "average": -2, "good": 2, "excellent": 8},
"note": "Positive = issued above book, accretive to existing holders. Issuing below book transfers value from existing shareholders to the manager's fee base and is the most common way these vehicles destroy per-share value while growing every headline number. Look at the ATM programme, not just marketed deals."},
"insider_ownership_pct": {"label": "Manager / insider ownership (%)", "category": "governance", "direction": "band", "weight": 1.0,
"thresholds": {"poor": [0, 40], "average": [0.5, 30], "good": [2, 25], "excellent": [4, 20]},
"note": "Some alignment matters a great deal in an externally managed structure. Near-total insider control of a listed spread vehicle is a different problem -- minority holders cannot force internalisation or a wind-down."},
"valuation_marks_independence_score": {"label": "Independence of fair-value marks", "category": "governance", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Manager marks Level 3 positions with no third-party review", "5": "Rotating third-party review covering part of the book annually", "8": "Independent valuation firm reviews effectively the whole Level 3 book every quarter, with the board's valuation committee documenting disagreements"},
"note": "In a BDC nearly the entire portfolio is Level 3, so 'book value' is an opinion produced by the party paid on it. Who forms that opinion is a first-order fact, not a disclosure detail."},
"disclosure_quality_score": {"label": "Portfolio and funding disclosure quality", "category": "governance", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "No repo maturity ladder, no vintage or LTV detail, hedge notional disclosed without tenor", "5": "Regulatory minimum schedules", "8": "Full funding ladder by counterparty, hedge notional by tenor, portfolio stratified by vintage/LTV/FICO or by loan-to-value and EBITDA, and rate/spread sensitivities published every quarter"}},
"price_to_book": {"label": "Price / book value (x)", "category": "valuation", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 1.35, "average": 1.05, "good": 0.85, "excellent": 0.65},
"note": "The primary valuation anchor because the balance sheet is already at fair value. But a discount to book is not automatically cheap -- it usually means the market disbelieves the marks, disbelieves the dividend, or is charging for the external management fee. Test which before treating it as a margin of safety."},
"dividend_yield_spread_over_10y_pp": {"label": "Dividend yield minus 10y government bond (pp)", "category": "valuation", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 3, "average": 5, "good": 7, "excellent": 9},
"note": "The sector-neutral way to read a double-digit yield: against the risk-free rate of its own market and its own date. A 13% yield with the 10y at 4% is a different proposition from the same yield with the 10y at 1%. Score it only if dividend_coverage_by_core_eps_x is at or above 1.0x."},
"price_to_core_eps_x": {"label": "Price / core (distributable) EPS (x)", "category": "valuation", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 12, "average": 9, "good": 7, "excellent": 5.5},
"note": "Secondary to price_to_book. Core EPS is a management-defined non-GAAP measure in this sector -- state the exclusions before using the multiple."},
"hedge_ratio_pct": {"label": "Hedge notional as % of repo / funding liabilities", "category": "risk", "direction": "band", "weight": 2.0,
"thresholds": {"poor": [10, 130], "average": [35, 115], "good": [55, 105], "excellent": [70, 100]},
"note": "Band: under-hedging leaves book value exposed to a rate move, and over-hedging past 100% converts the vehicle into a directional rate bet in the other direction. The notional alone is not the answer -- state the hedge tenor against the asset duration, since a fully hedged notional at the wrong point on the curve is not a hedge."},
"cpr_prepayment_pct": {"label": "Constant prepayment rate (CPR, % annualised)", "category": "risk", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [2, 30], "average": [4, 22], "good": [5, 16], "excellent": [6, 12]},
"note": "Band, and the direction inverts with the price of the book: for a portfolio held at a premium to par, fast prepayment destroys the premium; for a discount book it pulls the discount forward and is favourable. State the portfolio's average dollar price, then reset this band accordingly. Extension risk (CPR collapsing far below the band) is the mirror danger and is what lengthens duration precisely when rates rise."},
"interest_rate_sensitivity_bvps_pct": {"label": "Modelled BVPS change for a +100bp parallel shift (absolute %)", "category": "risk", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 12, "average": 7, "good": 4, "excellent": 1.5},
"note": "Enter the absolute magnitude of the modelled move, whichever direction is worse. This is the company's own duration-gap disclosure, so also state whether it includes spread widening -- most published shocks are rate-only, and every crisis in the sector was a spread event, not a rate event."},
"top10_issuer_concentration_pct": {"label": "Top-10 borrower / issuer exposure (% of portfolio)", "category": "risk", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 32, "good": 22, "excellent": 14},
"note": "Meaningful for credit mREITs and BDCs; near-irrelevant for an agency book, where the sole credit exposure is the GSE guarantee. Drop the metric rather than scoring it for an agency vehicle."}
}
},
"insurance-brokers-services": {
"label": "Insurance brokers, underwriting agencies and insurance services",
"extends": "generic",
"notes": "Distribution and advice, not underwriting -- brokers take no balance-sheet risk on claims, which is what separates this set from the 'insurance' key and makes the generic operating metrics valid here. The economics are among the best in financial services: recurring commissions on renewing policies, negative working capital from fiduciary float, and a fragmented acquisition pond that has funded three decades of roll-ups. That last point is where the analysis has to be sharpest -- almost every headline growth number in the sector is partly bought, so ORGANIC growth and the goodwill it sits on are the two numbers that decide whether the roll-up is compounding or laundering. Leverage bands are loosened because contracted, recurring, low-capex cash flow supports more debt than a manufacturer's. RANGES BELOW ARE INDICATIVE STARTING POINTS ONLY; where a comparable peer set exists (same commission accounting, same fiduciary-interest treatment, aligned fiscal periods), PEER-PERCENTILE COMPARISON OVERRIDES THESE BANDS -- pass peer_values or peer_percentile.",
"category_weights": {"business_quality": 0.18, "profitability": 0.16, "earnings_quality": 0.16, "balance_sheet": 0.10, "growth": 0.12, "governance": 0.10, "valuation": 0.12, "risk": 0.06},
"metrics": {
"opm_pct": {"thresholds": {"poor": 12, "average": 18, "good": 24, "excellent": 30},
"note": "GAAP operating margin, which sits several points below the adjusted EBITDAC margin the sector reports. Score both and state the bridge -- amortisation of acquired customer relationships is the item that separates them, and it is a real cost of the acquisitions that produced the growth."},
"roce_pct": {"thresholds": {"poor": 7, "average": 11, "good": 16, "excellent": 22},
"note": "Depressed by construction: a serial acquirer's capital employed is mostly goodwill from deals done at 10-15x EBITDA. Returns on TANGIBLE capital are near-infinite and equally uninformative. Judge the roll-up on ROIIC against acquisition multiples paid, not on this."},
"net_debt_to_ebitda": {"thresholds": {"poor": 5.0, "average": 3.5, "good": 2.5, "excellent": 1.5}, "weight": 2.0,
"note": "Loosened band. Recurring renewal commissions with near-zero maintenance capex support more leverage than a cyclical operating business, and the large brokers run 3-4x routinely. Exclude fiduciary cash and fiduciary liabilities from both sides -- that money belongs to insurers and insureds, not to the broker, and consolidating it distorts every leverage ratio in the sector."},
"ev_ebitda_x": {"thresholds": {"poor": 26, "average": 19, "good": 14, "excellent": 10},
"note": "Lifted band: quality brokers structurally trade at 15-22x EBITDA on the strength of retention and organic growth. Use EBITDAC consistently on both sides of the ratio."},
"pe_x": {"thresholds": {"poor": 40, "average": 30, "good": 22, "excellent": 15},
"note": "Lifted band. Recurring renewal commissions on a fee-based, near-capex-free business earn a structurally high multiple, and the large brokers have traded at 22-30x for most of the last decade. Strip fiduciary investment income out of earnings before applying it, or a rate cycle will look like a de-rating."},
"organic_revenue_growth_pct": {"label": "Organic revenue growth (%)", "category": "growth", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 1, "average": 4, "good": 7, "excellent": 10},
"note": "The single most important number in the sector, and the one most often defined loosely. Insist on the company's stated definition: it should exclude acquisitions, disposals and FX, but many issuers leave contingent commissions and rate-driven premium inflation inside it, which turns a hard insurance market into apparent share gain. In a hard market, decompose into rate, exposure and new business won."},
"ebitdac_margin_pct": {"label": "EBITDAC margin (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 18, "average": 25, "good": 31, "excellent": 38},
"note": "EBITDA before the change in estimated acquisition earn-out consideration -- the sector's standard measure, because earn-out revaluations swing reported profit without any cash moving. Check that restructuring and 'integration' costs are not also permanently excluded: a roll-up that restructures every year has an operating cost, not an exceptional item."},
"client_retention_pct": {"label": "Client retention (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 85, "average": 90, "good": 94, "excellent": 97},
"note": "The moat, stated as a number. Renewal economics mean a 95% retainer keeps a client for twenty years at near-zero incremental cost. Distinguish client (logo) retention from revenue retention -- retaining the account while losing half the placement is not retention."},
"contingent_commission_share_pct": {"label": "Contingent / profit commissions as % of revenue", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 15, "average": 9, "good": 5, "excellent": 2},
"note": "Contingents are paid by carriers out of the loss ratio on the business placed -- they are a share of the underwriter's good year, not a fee for the broker's work, and they evaporate in a catastrophe year. They are also the source of the sector's recurring conflict-of-interest litigation, since the broker is advising a client while being paid by the counterparty."},
"fiduciary_income_share_pct": {"label": "Fiduciary / float investment income as % of revenue", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 20, "average": 12, "good": 6, "excellent": 2.5},
"note": "Interest earned on premium held between the insured and the insurer. It is a rate bet sitting inside an advisory business: it inflated broker earnings materially in the 2023-25 rate cycle and reverses with policy rates. Strip it out before computing organic growth or a P/E."},
"revenue_per_employee_kusd": {"label": "Revenue per employee (USD k)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 130, "average": 180, "good": 240, "excellent": 320},
"note": "The productivity test for a business whose only real cost is people (55-65% of revenue). Rising revenue per employee alongside stable retention is genuine operating leverage; rising it while retention falls is under-servicing the book, and it shows up two renewal cycles later."},
"acquired_vs_organic_growth_pct": {"label": "Acquired share of total revenue growth (%)", "category": "growth", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 70, "average": 45, "good": 25, "excellent": 10},
"note": "Serial acquirers can be excellent -- the sector's best compounders are roll-ups -- but the test is different: multiple paid versus multiple received, retention of the acquired book after year three, and whether the acquired agencies' organic growth converges to the parent's. A high figure is a signal to run those tests, not an automatic negative."},
"goodwill_to_equity_pct": {"label": "Goodwill + intangibles / tangible equity (%)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 250, "average": 150, "good": 90, "excellent": 50},
"note": "Tangible equity is routinely negative for the large brokers, which makes the ratio meaningless at the extreme -- report it as not meaningful and lean on net debt/EBITDA and interest coverage instead. What the number is really testing is how much of the balance sheet is a record of prices paid, and therefore how much impairment risk sits under a growth stumble."},
"producer_retention_score": {"label": "Producer retention and succession", "category": "risk", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Key producers hold the client relationships personally, no enforceable non-solicits, an ageing book with no succession", "5": "Normal producer turnover, standard restrictive covenants, some team-based servicing", "8": "Institutionalised client relationships, team servicing, demonstrated ability to lose a producer without losing the book"},
"note": "The characteristic failure mode of the sector: the asset walks out with its clients. Producer team lift-outs are the standard competitive weapon, so this is a risk metric, not a soft one."},
"eando_litigation_exposure_score": {"label": "Errors & omissions / advice liability exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.0,
"note": "A broker's product is advice, and the tail liability for a wrong placement or a missed exclusion sits with the broker. Check the E&O programme retention, open claim count and any regulator review of remuneration disclosure."}
}
},
"biotech-clinical": {
"label": "Clinical-stage biotech and pre-revenue drug developers",
"notes": "Standalone set -- does NOT extend generic, because there is no revenue. Every generic metric that divides by sales (operating margin, gross margin, FCF margin, accruals, cash conversion cycle) or by profit (P/E, ROCE, ROE, ROIIC) is undefined, not merely different, and scoring a company against a band it cannot mathematically occupy produces a confident-looking number with no content. What this is instead is a portfolio of options on scientific outcomes funded by a depleting cash balance, so the whole scorecard reduces to four questions: how long does the cash last, what is in the clinic and how far advanced, what does a success pay, and how much of it will still belong to today's shareholders. Cash runway is weighted heaviest because it sets the terms of every future financing -- a company with three quarters of cash does not negotiate. RANGES BELOW ARE INDICATIVE STARTING POINTS ONLY and vary enormously by modality and therapeutic area (a cell-therapy Phase 3 in oncology and a small-molecule Phase 2 in dermatology share almost no cost structure). Where a genuine peer set exists (same phase, same indication, same modality), PEER-PERCENTILE COMPARISON OVERRIDES THESE BANDS -- pass peer_values or peer_percentile.",
"category_weights": {"business_quality": 0.20, "profitability": 0.06, "earnings_quality": 0.12, "balance_sheet": 0.20, "growth": 0.12, "governance": 0.12, "valuation": 0.10, "risk": 0.08},
"metrics": {
"lead_asset_phase": {"label": "Lead asset development phase (1=preclinical, 2=Ph1, 3=Ph2, 4=Ph3, 5=filed/approved)", "category": "business_quality", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 1, "average": 2, "good": 3, "excellent": 4},
"note": "Encode the lead asset's stage on the 1-5 scale in the label. Phase is the best single proxy for de-risking because industry-wide probability of eventual approval rises from roughly 6-10% at preclinical to 10-15% at Phase 1, 20-30% at Phase 2 and 50-60% at Phase 3, with wide variation by area (oncology far lower, rare disease and vaccines higher). Use area-specific probabilities in the NPV rather than these averages."},
"pipeline_assets_count": {"label": "Active clinical-stage programmes (count)", "category": "business_quality", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0, 14], "average": [1, 10], "good": [2, 8], "excellent": [3, 6]},
"note": "Band, deliberately. One asset is an option, not a company -- a single failed readout is terminal. But a dozen programmes on a two-year cash balance means none of them is properly funded, and the company will be forced to triage in public. Count only assets actually dosing patients; 'pipeline' slides count preclinical concepts."},
"platform_vs_single_asset_score": {"label": "Platform reusability", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "One molecule, no reusable technology; a failure ends the company", "5": "A technology that has produced two or three candidates, none yet validated in the clinic", "8": "Platform has produced multiple clinically validated assets across targets, and a partner has paid for access to it"},
"note": "The distinction that decides whether a failed readout is a setback or an ending. Be sceptical: 'platform' is the most over-claimed word in the sector, and the test is whether an independent party has paid cash for it."},
"unmet_need_position_score": {"label": "Unmet need and competitive position of the lead indication", "category": "business_quality", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Crowded indication, several approved therapies, no differentiation hypothesis beyond convenience", "5": "Meaningful need with two or three competitors in similar phases", "8": "Serious unmet need, no approved therapy, and a mechanism no competitor is within two years of"},
"note": "Count the competing programmes in the same phase and indication, not the approved drugs. The relevant question at readout is who else arrives in the same window."},
"historic_phase_transition_score": {"label": "Track record of phase transitions on plan", "category": "profitability", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Every programme to date stalled at or before Phase 2; timelines repeatedly missed and restated", "5": "One asset advanced through Phase 2 broadly on the guided timeline", "8": "Repeated on-schedule phase transitions across several assets, with at least one partnered or approved"},
"note": "This is the closest thing to a return-on-capital measure for a research organisation: it asks what the R&D spend has actually produced. Judge against guidance given at the time, not against the timeline as later restated."},
"rd_cost_per_program_musd": {"label": "Annual R&D spend per active clinical programme (USD m)", "category": "profitability", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 90, "average": 55, "good": 32, "excellent": 18},
"note": "A crude capital-efficiency test, and only interpretable against phase mix -- a Phase 3 cardiovascular outcomes trial legitimately costs many multiples of a Phase 1 in a rare disease. State the phase mix alongside it or drop the metric."},
"quarterly_net_burn_musd": {"label": "Quarterly net operating cash burn (USD m)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 120, "average": 60, "good": 30, "excellent": 12},
"note": "Absolute burn means nothing on its own -- a low burn can mean discipline or a company that has stopped doing science. Score cash_runway_quarters first and read this as its denominator. Use net burn including milestone and partnership receipts, and state whether it includes a one-off trial start-up quarter."},
"rd_share_of_burn_pct": {"label": "R&D as % of total cash burn", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 55, "average": 68, "good": 78, "excellent": 85},
"note": "How much of the shareholders' money is going into the science rather than into G&A, investor relations and executive compensation. A pre-revenue company spending a third of its burn on overhead is funding a corporate structure, not a pipeline. Watch for R&D lines that include allocated facilities and headcount that is really administrative."},
"burn_vs_guidance_variance_pct": {"label": "Actual burn vs guided burn (%)", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 25, "average": 12, "good": 4, "excellent": -5},
"note": "Negative is favourable (came in under guidance). Management's ability to forecast its own cash consumption one year out is the only forecasting record available in a pre-revenue company, and it is a fair proxy for how seriously to take the trial timelines."},
"cash_runway_quarters": {"label": "Cash runway at current burn (quarters)", "category": "balance_sheet", "direction": "higher_better", "weight": 3.0,
"thresholds": {"poor": 3, "average": 6, "good": 10, "excellent": 14},
"note": "The governing variable. Below roughly four quarters the auditor's going-concern language usually appears (which trips the going_concern_doubt veto gate), financings are done from a position of no leverage, and the discount widens exactly when the science is unchanged. Compute it on guided burn including known trial start-ups, not on the trailing quarter, and state whether it runs past the next value-inflecting readout -- runway that ends before the catalyst is not runway."},
"cash_to_market_cap_pct": {"label": "Net cash as % of market capitalisation", "category": "balance_sheet", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 15, "average": 35, "good": 60, "excellent": 90},
"note": "Above 100% the market is assigning the pipeline a negative value. Treat that as a question, not an answer: it is sometimes a genuine mispricing and more often the market pricing in the burn that will consume the cash before any readout."},
"debt_and_royalty_obligations_to_cash_x": {"label": "Venture debt + royalty financing obligations / cash (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 0.8, "average": 0.4, "good": 0.15, "excellent": 0.0},
"note": "Venture debt in a pre-revenue company is senior to the equity and typically carries covenants tied to trial milestones or minimum cash -- a covenant breach after a failed readout converts a bad quarter into a wind-down. Royalty and revenue-interest financings are cheaper on paper and permanently reduce what a success is worth."},
"catalyst_within_12m": {"label": "Value-inflecting readouts expected within 12 months (count)", "category": "growth", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0, "average": 1, "good": 2, "excellent": 3},
"note": "Score as a count, so it works as a bool at 0 versus 1. Count only genuine inflections -- registrational or proof-of-concept readouts, regulatory decisions, partnership triggers -- not conference presentations of existing data or 'enrolment completion'. Zero catalysts inside the cash runway is the worst configuration in the sector: the company must finance on no news."},
"partnered_share_of_pipeline_pct": {"label": "Partnered / out-licensed share of pipeline value (%)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [0, 90], "average": [5, 75], "good": [15, 60], "excellent": [25, 50]},
"note": "Band. A partnership is third-party validation paid for in cash and it de-risks the balance sheet, but every partnered asset returns a fraction of its economics -- a company that has out-licensed most of its pipeline has sold the upside it exists to deliver. Score the economics retained, not the headline biodollar value, which is almost entirely contingent milestones that are rarely earned."},
"peak_sales_lead_asset_musd": {"label": "Estimated unadjusted peak sales, lead asset (USD m)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 300, "average": 700, "good": 1500, "excellent": 3000},
"note": "State the source (own model, consensus, or company slide) and the assumptions: eligible population, diagnosis and treatment rates, net price after gross-to-net, and share against the competitors expected to launch in the same window. Company-sourced peak sales estimates are marketing documents."},
"dilution_3y_pct": {"label": "Share count change, 3y (%)", "category": "governance", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 120, "average": 60, "good": 30, "excellent": 12},
"note": "The defining shareholder risk in the sector. A pre-revenue company funds itself by selling equity, so a thesis can be scientifically correct and still lose money for the owner: doubling the share count between the Phase 2 result and the approval halves what the approval is worth per share. Fully diluted, including warrants, pre-funded warrants and the option pool."},
"insider_specialist_ownership_pct": {"label": "Insider + specialist healthcare fund ownership (%)", "category": "governance", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 10, "average": 22, "good": 35, "excellent": 50},
"note": "Named crossover and specialist funds have access to the same data as management and far better scientific diligence than a generalist. Their presence -- and especially their participation in the last financing at the going price -- is the most useful outside opinion available on data a non-specialist cannot evaluate."},
"data_disclosure_quality_score": {"label": "Clinical data disclosure quality", "category": "governance", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Press-release topline only, no statistics, subgroups highlighted after the fact, failed arms not mentioned", "5": "Full primary endpoint results with p-values and confidence intervals disclosed on schedule", "8": "Complete datasets presented at peer-reviewed venues, protocols and statistical analysis plans pre-registered, negative and discontinued programmes disclosed promptly"},
"note": "The highest-information governance signal in biotech. Post-hoc subgroup rescues of a missed primary endpoint, and quietly dropped programmes, are the two patterns that reliably precede a much worse disclosure later."},
"warrant_and_atm_overhang_pct": {"label": "Warrants + remaining ATM capacity (% of shares outstanding)", "category": "governance", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 25, "good": 12, "excellent": 4},
"note": "The dilution that has already been agreed but not yet appeared in the share count. An open at-the-market programme means every positive data print is partly sold into by the issuer itself, which is a structural cap on the post-catalyst move."},
"risk_adjusted_npv_to_mcap_x": {"label": "Risk-adjusted NPV / market capitalisation (x)", "category": "valuation", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 0.7, "average": 1.2, "good": 1.8, "excellent": 2.8},
"note": "The sector's primary valuation test: sum each programme's peak-sales-driven cash flows, multiply by an area-and-phase-specific probability of success, discount at 10-14%, subtract remaining development cost and add net cash. Publish the probability and discount rate used -- the metric is only as defensible as those two inputs, and small changes in either move the answer by multiples. Cross-check against the dilution assumed to fund the programmes to launch."},
"ev_to_cash_x": {"label": "Enterprise value / net cash (x)", "category": "valuation", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 6, "average": 3.5, "good": 2, "excellent": 0.8},
"note": "How many times the cash balance the market is paying for the science. Below 1.0x the enterprise value is negative, which is either an opportunity or the market's judgement that the burn will consume the cash without producing a readout worth financing."},
"mcap_to_peak_sales_estimate_x": {"label": "Market cap / unadjusted peak sales estimate (x)", "category": "valuation", "direction": "lower_better", "weight": 1.0,
"thresholds": {"poor": 3.0, "average": 1.8, "good": 1.0, "excellent": 0.5},
"note": "A rough sanity check on the NPV, using an unadjusted peak sales number so the probability assumption is visible rather than buried. A ratio near or above 1.0x for a Phase 1 asset means the price already assumes approval."},
"binary_readout_concentration_pct": {"label": "Share of risk-adjusted NPV in the single lead asset (%)", "category": "risk", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 90, "average": 70, "good": 50, "excellent": 35},
"note": "Quantifies how binary the investment is. Above roughly 80% the position is a bet on one readout on one date, and position sizing -- not the scorecard -- is the decision that matters. Say so explicitly in the report rather than letting a composite imply a diversified thesis."},
"financing_market_dependence_score": {"label": "Dependence on open financing windows (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Must raise within four quarters, no partner, no committed facility, XBI-correlated window is shut", "5": "Raise needed within eight quarters with several routes available", "8": "Funded past the next two inflection points, or a partner covering development costs"},
"note": "The sector's systematic risk: the biotech financing window opens and closes for reasons entirely unrelated to any individual company's science, and a closed window converts a funding need into a distressed structure or a sale."},
"ip_exclusivity_years": {"label": "Exclusivity remaining at expected launch (years)", "category": "risk", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 6, "average": 9, "good": 12, "excellent": 15},
"note": "Composition-of-matter patent life remaining at the expected launch date, plus any regulatory exclusivity (US: 5 years NCE, 12 years biologic, 7 years orphan; EU: 8+2+1). Patent term is consumed by the years spent in the clinic, so a long-running Phase 3 quietly shortens the commercial life the NPV assumes. Check for method-of-use-only coverage, which is far weaker."},
"regulatory_pathway_risk_score": {"label": "Regulatory pathway risk (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Novel or surrogate endpoint with no precedent, accelerated-approval reliance, no agency alignment on the registrational design", "5": "Conventional endpoint, design discussed with the agency, some open questions", "8": "Written agency agreement on a precedented registrational endpoint and statistical plan"},
"note": "A programme can generate the data it promised and still fail on a design question settled years earlier. Ask specifically whether the agency has agreed the primary endpoint and the control arm in writing."}
}
},
"rail-freight": {
"label": "Railroads, rail freight and rolling stock operators",
"extends": "generic",
"notes": "A near-irreplaceable network asset with a regulated-monopoly flavour: rights of way cannot be rebuilt, most shippers are served by one or two carriers, and the competitive reference point is trucking rather than another railroad. The consequences for scoring run in two directions. Margins and pricing power are structurally high, so the generic operating-margin band is lifted; but capital intensity is enormous and permanent, so the generic ROCE and ROIC-WACC bands are LOWERED -- a railroad earning a 5pp spread over WACC on that asset base is doing very well, and scoring it against a software company's band would rate the whole industry poor. The industry's defining tension is that operating ratio can always be improved for a year by running longer trains with fewer crews and less maintenance, and the service metrics (velocity, dwell) are where the bill for that appears first, followed by the shipper losses that follow bad service. Score them together, never OR alone. RANGES BELOW ARE INDICATIVE STARTING POINTS ONLY, calibrated to North American Class I operations; short lines, European open-access operators and Indian private freight operators occupy different levels. Where a genuine peer set exists, PEER-PERCENTILE COMPARISON OVERRIDES THESE BANDS -- pass peer_values or peer_percentile.",
"category_weights": {"business_quality": 0.18, "profitability": 0.18, "earnings_quality": 0.12, "balance_sheet": 0.10, "growth": 0.10, "governance": 0.10, "valuation": 0.14, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 22, "average": 30, "good": 38, "excellent": 45},
"note": "Lifted band -- simply the arithmetic complement of the operating ratio, and Class I operators run 35-42%. Score operating_ratio_pct as the primary measure and treat this as its cross-check."},
"roce_pct": {"thresholds": {"poor": 6, "average": 9, "good": 13, "excellent": 17},
"note": "Lowered band. The capital employed includes a century of accumulated right-of-way, track structure and rolling stock, so a 14% ROCE here represents far better economics than the same number in an asset-light business. Note also that historic-cost track assets understate replacement cost, which flatters the ratio for the oldest networks."},
"net_debt_to_ebitda": {"thresholds": {"poor": 4.5, "average": 3.2, "good": 2.3, "excellent": 1.5},
"note": "Loosened band. Contracted, recession-resilient volumes on an irreplaceable asset support investment-grade leverage at 2.5-3.0x, and the industry has run there deliberately to fund buybacks. Watch for leverage rising while capex falls -- that is the balance sheet funding the share count rather than the network."},
"ev_ebitda_x": {"thresholds": {"poor": 20, "average": 15, "good": 11, "excellent": 8},
"note": "Lifted band: an irreplaceable network with contracted, GDP-resilient volumes trades at 11-16x, not at an industrial's multiple. Because capex is both enormous and non-discretionary, EV/EBITDA systematically flatters this sector -- cross-check on EV/(EBITDA - maintenance capex) or on free cash flow yield before concluding anything is cheap."},
"pe_x": {"thresholds": {"poor": 32, "average": 24, "good": 18, "excellent": 13},
"note": "Lifted band. Reported EPS is heavily buyback-assisted across the industry, so decompose EPS growth into operating improvement, share count reduction and tax before paying for it."},
"operating_ratio_pct": {"label": "Operating ratio (operating expenses / revenue, %)", "category": "profitability", "direction": "lower_better", "weight": 2.5,
"thresholds": {"poor": 78, "average": 70, "good": 63, "excellent": 57},
"note": "LOWER IS BETTER -- the sector's headline efficiency measure, and the number management is compensated on. Precision scheduled railroading pushed the best North American operators from the mid-70s into the high-50s, but OR also improves mechanically when volumes fall and the mix shifts to high-revenue-per-car freight, and it improves temporarily whenever maintenance is deferred. Always read it against train_velocity_mph, terminal_dwell_hours and capex_to_revenue_pct in the same period: an OR falling while service degrades is borrowed, not earned."},
"core_pricing_growth_pct": {"label": "Core pricing growth, ex fuel surcharge and mix (%)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 0, "average": 2, "good": 3.5, "excellent": 5},
"note": "Pricing power stated as a number, and the clearest evidence of the network's monopoly character where it exists. Insist on the ex-fuel-surcharge, ex-mix definition: fuel surcharge revenue inflates yield in a high-diesel year while adding nothing, and a shift toward intermodal changes revenue per car without any price being raised. Compare against rail cost inflation -- pricing below cost inflation is real margin erosion regardless of the positive sign."},
"train_velocity_mph": {"label": "Average train velocity (mph)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 17, "average": 20, "good": 23, "excellent": 26},
"note": "The primary service metric, published weekly to the regulator in North America (STB performance data), so it is one of the few genuinely comparable and unmanipulable numbers in the sector. Velocity is also an asset-productivity metric: a faster network needs fewer locomotives and cars to move the same freight. Falling velocity precedes shipper defection to truck by roughly two to four quarters."},
"terminal_dwell_hours": {"label": "Average terminal dwell (hours)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 28, "average": 24, "good": 21, "excellent": 18},
"note": "Time a car sits in a yard between movements -- the second half of the service picture and the one that shippers actually experience as unreliability. Read the trend with velocity: both deteriorating alongside a falling operating ratio is the signature of cost-cutting being booked as efficiency."},
"fuel_efficiency_index": {"label": "Fuel efficiency, revenue ton-miles per gallon (index, 100 = peer median)", "category": "profitability", "direction": "higher_better", "weight": 1.0,
"thresholds": {"poor": 92, "average": 100, "good": 106, "excellent": 112},
"note": "Index the company's gross or revenue ton-miles per gallon to the peer median for the period, so terrain, haul length and commodity mix are partly controlled for. Fuel is 10-15% of operating cost, so a sustained few points of advantage is worth roughly a point of operating ratio -- and it is one of the few OR improvements that does not come out of service."},
"roic_wacc_spread_pp": {"thresholds": {"poor": -1, "average": 1.5, "good": 4, "excellent": 7}, "weight": 2.5,
"note": "Lowered band, deliberately. On an asset base of this size a sustained 4-7pp spread is excellent and a double-digit spread is essentially unattainable -- the generic band would score the entire industry as value-destroying. This remains the metric that decides whether the network's capex is worth making."},
"revenue_ton_miles_growth_pct": {"label": "Revenue ton-miles growth (%)", "category": "growth", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": -3, "average": 0, "good": 2.5, "excellent": 5},
"note": "The volume truth-test, independent of price and fuel surcharge. Rail freight grows roughly with industrial production, so low single digits is a good outcome and the real question is share against trucking and against the other carrier in each lane. Decompose by commodity: coal decline and intermodal growth are separate stories that net to a misleading total."},
"capex_to_revenue_pct": {"label": "Capex / revenue (%)", "category": "growth", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [8, 26], "average": [12, 22], "good": [14, 20], "excellent": [15, 18]},
"note": "Band, not lower-better. Class I railroads reinvest 15-19% of revenue, most of it non-discretionary track and structures maintenance. Sustained spending below the band is liquidation by deferred maintenance -- it lifts free cash flow and the operating ratio for two or three years and then arrives as derailments, slow orders and lost shippers. Well above the band without a growth project attached is capital destruction on an asset that is already built."},
"free_cash_flow_conversion_pct": {"label": "Free cash flow / net income (%)", "category": "earnings_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 40, "average": 60, "good": 78, "excellent": 92},
"note": "The cash test appropriate to a business with almost no working capital cycle and very heavy capex: the entire gap between profit and cash is reinvestment. Conversion far above the band is usually under-investment rather than excellence -- check it against capex_to_revenue_pct before treating a high number as a strength."},
"network_franchise_score": {"label": "Franchise density and single-served share", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Mostly dual-served lanes, short hauls competing directly with truck, no port or gateway access", "5": "Mixed franchise, some captive shippers, adequate interchange", "8": "High share of captive single-served facilities, long hauls where truck cannot compete, exclusive access to ports or key gateways"},
"note": "A railroad's pricing power is geographic, not corporate. The share of tonnage originating or terminating at a facility served by only one railroad is the moat, and it is what sets the ceiling on core pricing growth."},
"regulatory_reregulation_score": {"label": "Re-regulation and common-carrier obligation exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "[US] Surface Transportation Board reciprocal-switching and rate-reasonableness proceedings, plus the common-carrier obligation that prevents refusing unprofitable traffic. [India] the freight-subsidises-passenger cross-subsidy inside Indian Railways economics. Pricing power that comes from a monopoly is pricing power a regulator can take back."},
"safety_and_catastrophe_score": {"label": "Safety record and derailment / hazmat tail exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"note": "A single hazardous-materials derailment can produce liabilities, regulatory intervention and reputational cost exceeding several years of operating improvement -- and it is precisely the tail that deferred maintenance fattens. Track the regulator-reported accident rate per million train-miles, not the company's own definition of a reportable incident."}
},
"disable": ["gross_margin_pct"]
},
"people-businesses": {
"label": "Staffing, recruitment, consulting and professional services",
"extends": "generic",
"notes": "Businesses whose entire productive asset walks out of the building every evening. That single fact drives the whole scorecard: there is almost no capital employed (so ROCE is structurally enormous and nearly uninformative), the cost base is 55-75% people, and the binding constraints are attrition, utilisation and the ability to pass wage inflation to clients. Cyclicality is severe and asymmetric -- permanent placement and discretionary consulting fall first and hardest in a downturn while the cost base takes two or three quarters to follow, so a peak-cycle margin is not a normalised margin. A NOTE ON DENOMINATORS THAT MATTERS MORE THAN ANY BAND HERE: staffing companies report gross revenue including the pass-through wages of temporary workers, so an 'operating margin' of 4% on gross revenue and 25% on net revenue (gross profit) describe the same company. State which basis you used before scoring anything, and prefer net-revenue/gross-profit denominators throughout. RANGES BELOW ARE INDICATIVE STARTING POINTS ONLY and differ sharply between temp staffing, perm recruitment, IT staffing and strategy consulting. Where a genuine peer set exists on the same revenue basis, PEER-PERCENTILE COMPARISON OVERRIDES THESE BANDS -- pass peer_values or peer_percentile.",
"category_weights": {"business_quality": 0.18, "profitability": 0.18, "earnings_quality": 0.14, "balance_sheet": 0.08, "growth": 0.12, "governance": 0.10, "valuation": 0.12, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 3, "average": 6, "good": 10, "excellent": 15},
"note": "Band set on GROSS revenue, which is how staffing companies report. On a net-revenue (gross profit) basis the equivalent band is roughly 10 / 18 / 26 / 35 -- override the thresholds rather than mixing bases. Consulting firms reporting only fee income are already on the net basis and should use the higher band."},
"roce_pct": {"thresholds": {"poor": 15, "average": 25, "good": 40, "excellent": 60},
"note": "Lifted band. Capital employed is receivables and a little goodwill, so returns are structurally high and discriminate poorly. Where the business has been built by acquisition, judge it on ROIIC against multiples paid instead."},
"cash_conversion_cycle_days": {"thresholds": {"poor": 65, "average": 50, "good": 38, "excellent": 25},
"note": "Almost entirely receivables: contractors are paid weekly or fortnightly while clients pay monthly or worse, so the cycle is structurally positive and growth consumes cash. A fast-growing staffing company can be profitable and cash-hungry at the same time -- this is why the sector's failures cluster at the top of the cycle, not the bottom."},
"pe_x": {"thresholds": {"poor": 28, "average": 20, "good": 14, "excellent": 10},
"note": "Cyclical: a trailing P/E at the peak of a hiring cycle is the classic trap here, exactly as in an industrial cyclical. Use mid-cycle earnings, and remember the trough P/E often looks expensive precisely when the stock is cheap."},
"ev_ebitda_x": {"thresholds": {"poor": 16, "average": 12, "good": 9, "excellent": 6.5},
"note": "Tightened band for cyclicality. EBITDA here is a peak-to-trough number, not a stable one, so apply the multiple to mid-cycle EBITDA and state the mid-cycle assumption. Note also that EV/EBITDA on a gross-revenue-reporting staffing company is not comparable to the same ratio on a net-revenue-reporting consultancy."},
"key_person_dependence_score": {"weight": 2.0,
"note": "Weighted up: in a people business, key-person risk is not a governance footnote, it is the asset register. Ask who owns the client relationships and what happens to the book if a team leaves."},
"revenue_per_employee_kusd": {"label": "Net revenue per employee (USD k)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 110, "average": 160, "good": 220, "excellent": 300},
"note": "Use NET revenue (gross profit) per internal employee -- gross revenue per employee in a temp staffing business measures pass-through wages, not productivity. Rising productivity with stable attrition and retention is genuine leverage; rising it while attrition climbs is simply working people harder, and it reverses."},
"utilisation_pct": {"label": "Billable utilisation (%)", "category": "profitability", "direction": "band", "weight": 2.0,
"thresholds": {"poor": [55, 92], "average": [64, 88], "good": [70, 85], "excellent": [74, 82]},
"note": "Band, deliberately. Below the band the bench is unpaid-for capacity and margin collapses through operating leverage; above roughly 85% sustained there is no bench to staff the next win, no time for training or business development, and attrition rises with a two-quarter lag. State the denominator (available hours versus contracted hours) -- the two conventions differ by several points."},
"gross_profit_margin_pct": {"label": "Gross profit margin / spread (%)", "category": "profitability", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 14, "average": 20, "good": 28, "excellent": 36},
"note": "For staffing this is the bill-rate/pay-rate spread and it is the truest measure of pricing power in the sector, because it is unaffected by the gross-versus-net revenue reporting choice. Typical levels: commercial/light-industrial temp 14-20%, professional and IT staffing 22-32%, perm recruitment near 100% by construction, consulting 30-40%. Set the band to the mix before scoring."},
"attrition_pct": {"label": "Voluntary attrition of billable staff (%)", "category": "business_quality", "direction": "lower_better", "weight": 2.0,
"thresholds": {"poor": 28, "average": 21, "good": 15, "excellent": 11},
"note": "LOWER IS BETTER. Attrition is the depreciation charge of a people business, and it is paid in recruitment cost, lost utilisation during ramp, and occasionally the client. Distinguish voluntary from involuntary and junior from senior -- losing a partner or a delivery lead is a different event from losing a first-year analyst, and the blended number hides it."},
"client_concentration_top5_pct": {"label": "Top-5 client share of net revenue (%)", "category": "business_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 30, "good": 20, "excellent": 12},
"note": "Concentration on net revenue, not gross. In this sector concentration is unusually dangerous because contracts are short, switching costs are low and procurement re-tenders master service agreements on a fixed cycle -- a single MSA loss can remove a fifth of gross profit with one quarter's notice."},
"wage_passthrough_score": {"label": "Wage inflation pass-through", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Multi-year fixed-price or fixed-rate-card contracts; wage inflation absorbed in full until renewal", "5": "Passes through at renewal with a two-to-three quarter lag; spread compresses in a wage spike then recovers", "8": "Cost-plus, indexed or annually repriced contracts; gross spread held or widened through the last wage spike"},
"note": "The decisive question in any tight labour market, and the one that separates the sector's compounders from its price-takers. Test it empirically: look at what the gross spread actually did in the last wage-inflation episode rather than at what management says the contracts allow."},
"perm_share_of_gross_profit_pct": {"label": "Permanent placement fees as % of gross profit", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 45, "average": 30, "good": 18, "excellent": 8},
"note": "Perm fees are one-off, near-100% margin and violently cyclical -- they can fall 40-60% peak to trough while temp and contract volumes fall single digits, because a hiring freeze stops permanent hiring outright and often increases contractor demand. A high perm share flatters margin at the top of the cycle and is the single biggest reason peak earnings in this sector are not normalised earnings."},
"dso_days": {"label": "Days sales outstanding", "category": "earnings_quality", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 75, "average": 60, "good": 48, "excellent": 38},
"note": "The working-capital pressure point, since payroll is met weekly regardless of when the client pays. Watch DSO rising alongside revenue growth: it is usually a sign of winning large-enterprise clients with 60-90 day terms, which is real growth bought with real cash, and it should be planned for rather than discovered."},
"organic_net_revenue_growth_pct": {"label": "Organic net revenue growth, constant currency (%)", "category": "growth", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": -3, "average": 3, "good": 8, "excellent": 14},
"note": "On net revenue (gross profit), organic and constant-currency -- the only growth number in the sector that is not distorted by pass-through wage inflation, acquisitions or FX. In an inflationary year, gross revenue can grow while headcount on assignment falls; net revenue growth catches that and gross revenue growth does not."}
},
"disable": ["gross_margin_pct", "customer_concentration_top5_pct"]
},
"waste-environmental": {
"label": "Waste collection, landfill, recycling and environmental services",
"extends": "generic",
"notes": "A local-monopoly infrastructure business wearing the clothes of an industrial: the moat is a permitted landfill that essentially cannot be replicated (few greenfield permits are granted in developed markets) plus route density that makes the incumbent's marginal collection cost the lowest in the postcode. Vertical integration is the whole model -- collect the waste, then dispose of it in your own hole rather than paying a competitor's tipping fee -- which is why internalisation rate carries the heaviest weight in business quality. Demand is close to GDP-inelastic and pricing is contractual and often CPI-linked, so the sector prices like a utility while earning industrial returns. The two things to be sceptical about are the closure and post-closure liability, which is a 30-year obligation discounted on management's chosen rate, and recycled-commodity resale, which is a commodity bet embedded in an otherwise contracted revenue stream. RANGES BELOW ARE INDICATIVE STARTING POINTS ONLY, calibrated to North American integrated operators; a pure collection business without landfills, a hazardous-waste specialist and an Indian municipal-contract operator occupy quite different levels. Where a genuine peer set exists, PEER-PERCENTILE COMPARISON OVERRIDES THESE BANDS -- pass peer_values or peer_percentile.",
"category_weights": {"business_quality": 0.20, "profitability": 0.16, "earnings_quality": 0.14, "balance_sheet": 0.12, "growth": 0.10, "governance": 0.08, "valuation": 0.12, "risk": 0.08},
"metrics": {
"opm_pct": {"thresholds": {"poor": 8, "average": 13, "good": 18, "excellent": 23},
"note": "Integrated North American operators run 16-19%. A collection-only business without disposal assets sits several points lower for structural reasons, not because it is worse run -- check internalisation_rate_pct before judging the margin."},
"roce_pct": {"thresholds": {"poor": 6, "average": 9, "good": 13, "excellent": 17},
"note": "Lowered band for capital intensity: trucks, containers, transfer stations and landfill cell development are continuous. Note that landfill airspace is carried at historic cost and amortised per tonne, so a mature, fully-developed landfill flatters ROCE relative to a competitor still building cells."},
"net_debt_to_ebitda": {"thresholds": {"poor": 4.2, "average": 3.2, "good": 2.4, "excellent": 1.6},
"note": "Loosened band. Contracted, recession-resilient revenue on permitted assets supports investment-grade leverage at 2.5-3.0x, which is where the large operators deliberately sit. Add the closure and post-closure liability to debt when testing solvency -- it is a funded obligation that outlives the revenue stream, and it does not appear in the headline ratio."},
"ev_ebitda_x": {"thresholds": {"poor": 20, "average": 15, "good": 12, "excellent": 9},
"note": "Lifted band: the sector trades at utility-like multiples of 13-16x on the strength of pricing power and contracted volume. Compare against the local municipal-contract operators before assuming the multiple is portable across markets."},
"pe_x": {"thresholds": {"poor": 42, "average": 32, "good": 24, "excellent": 17},
"note": "Lifted band: the market pays a utility-like multiple for contracted, inelastic demand with CPI-linked pricing, and the sector has traded at 25-35x through most of the last decade. Landfill amortisation and closure accretion sit in reported earnings and vary with asset age, so cross-check on free cash flow yield, which is the number the sector's own capital-return policy is set against."},
"regulatory_risk_score": {"weight": 2.0,
"note": "Weighted up: the permit IS the asset. A landfill expansion permit refused, a host-community agreement renegotiated, or a state waste-import restriction can remove more value than a decade of operating improvement."},
"esg_controversy_score": {"weight": 1.5,
"note": "Weighted up: leachate and groundwater contamination, landfill gas and odour complaints, and PFAS in leachate are live, quantifiable liabilities in this sector rather than reputational abstractions."},
"internalisation_rate_pct": {"label": "Internalisation rate (own-landfill disposal as % of collected volume)", "category": "business_quality", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 40, "average": 58, "good": 70, "excellent": 82},
"note": "The core of the vertically integrated model and the best single predictor of margin in the sector. Every tonne routed to an owned landfill converts a third-party tipping fee from a cost into internal revenue, capturing the disposal margin as well as the collection margin. Read it with the average haul distance -- a landfill 150km away is only nominally internal."},
"route_density_score": {"label": "Route density and local market position", "category": "business_quality", "direction": "judgement", "weight": 2.0,
"anchors": {"2": "Scattered routes, sub-scale in most markets, long unproductive drive time between stops", "5": "Top-three position in the core markets, adequate density, disposal within economic haul", "8": "Number one or two density in nearly every market served, with owned transfer stations and landfill inside the haul radius"},
"note": "The moat is measured in lifts per hour on a single street, not in national market share. Density is why the incumbent's marginal cost to serve the next customer on an existing route is close to zero and a new entrant's is not -- which is also why this industry consolidates market by market rather than nationally."},
"landfill_remaining_life_years": {"label": "Permitted landfill airspace remaining (years at current intake)", "category": "business_quality", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 12, "average": 22, "good": 32, "excellent": 45},
"note": "The irreplaceable asset, expressed as a duration. New greenfield landfill permits are close to unobtainable in most developed markets, so remaining airspace is effectively the terminal value of the disposal business. State permitted airspace separately from 'expansion airspace' that is probable but not yet approved -- the second is a forecast about a regulator, not an asset."},
"contracted_volume_share_pct": {"label": "Revenue under multi-year or exclusive contract (%)", "category": "business_quality", "direction": "higher_better", "weight": 1.5,
"thresholds": {"poor": 35, "average": 55, "good": 70, "excellent": 85},
"note": "Municipal franchises, exclusive residential contracts and multi-year commercial agreements, most with CPI or index-linked escalators. This is what converts a truck fleet into an annuity. Check the weighted average remaining term and the rebid schedule -- a high contracted share with a third of it rebidding next year is not the same asset."},
"ebitda_margin_pct": {"label": "EBITDA margin (%)", "category": "profitability", "direction": "higher_better", "weight": 2.0,
"thresholds": {"poor": 20, "average": 26, "good": 30, "excellent": 35},
"note": "The sector's preferred profitability measure because depreciation and landfill amortisation vary enormously with asset age and acquisition history. Integrated North American operators run 28-31%. Decompose any improvement into price, volume, internalisation and recycled-commodity prices before crediting it to management."},
"maintenance_capex_to_revenue_pct": {"label": "Maintenance capex / revenue (%)", "category": "earnings_quality", "direction": "band", "weight": 1.5,
"thresholds": {"poor": [4, 14], "average": [6, 12], "good": [7, 11], "excellent": [8, 10]},
"note": "Band, not lower-better. The sector reinvests 9-11% of revenue continuously in fleet replacement and landfill cell construction. Sustained spending below the band is deferred fleet replacement and unbuilt cells -- it lifts free cash flow for two or three years and then arrives as a step-change in capex plus a maintenance backlog. Cell development capex is genuinely growth-like in accounting but maintenance-like in economics; state how you have classified it."},
"closure_postclosure_liability_to_ebitda_x": {"label": "Closure + post-closure liability / EBITDA (x)", "category": "balance_sheet", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 1.6, "average": 1.0, "good": 0.6, "excellent": 0.3},
"note": "The obligation to cap the landfill and then monitor groundwater and gas for at least 30 years after it stops earning revenue. It is recorded at a discounted present value using management's chosen credit-adjusted rate and inflation assumption, so a modest change in either moves the liability materially -- check both, check whether the discount rate has drifted upward alongside the liability, and check what is held in trust or bonded against it. This is the sector's equivalent of a pension deficit."},
"core_price_growth_pct": {"label": "Core price growth, ex fuel surcharge and recycled commodity (%)", "category": "growth", "direction": "higher_better", "weight": 2.5,
"thresholds": {"poor": 1.5, "average": 3.5, "good": 5.5, "excellent": 7.5},
"note": "Pricing power stated as a number, and the primary growth engine given volumes track GDP at best. Insist on the ex-fuel-surcharge, ex-recycled-commodity definition -- both inflate reported yield without any price being raised. The best operators have sustained core price above cost inflation for years by shedding unprofitable volume, so read this alongside volume: price up 6% with volume down 3% by design is a better outcome than price up 3% with volume flat."},
"recycling_commodity_exposure_pct": {"label": "Recycled commodity resale as % of revenue", "category": "risk", "direction": "lower_better", "weight": 1.5,
"thresholds": {"poor": 12, "average": 7, "good": 4, "excellent": 1.5},
"note": "Revenue from selling old corrugated cardboard, mixed paper, metals and plastics at market prices -- a pure commodity exposure sitting inside an otherwise contracted business, and one that swung from a profit centre to a loss centre when China's National Sword policy closed the export market in 2018. Check how much of the book has been converted to fee-for-service or floor-price processing contracts, which is the structural fix the sector adopted afterwards."},
"superfund_remediation_exposure_score": {"label": "Legacy remediation and environmental liability exposure (10 = low risk)", "category": "risk", "direction": "judgement", "weight": 1.5,
"anchors": {"2": "Named potentially responsible party at several major sites with unquantified shares, active PFAS litigation, thin reserves", "5": "A normal tail of legacy sites, reserved and disclosed, no single dominant exposure", "8": "Minimal legacy footprint, sites resolved or de minimis, remediation reserves independently reviewed"},
"note": "Liability for historic contamination is joint and several under US CERCLA and attaches to sites acquired decades ago, so it travels with acquisitions. PFAS in landfill leachate is the live open-ended version of this risk and is not fully reserved anywhere in the sector -- ask what the company has quantified and what it has explicitly declined to quantify."}
},
"disable": ["gross_margin_pct"]
}
}