Everything so far is mechanism, which is necessary and never sufficient. A moat claim is a falsifiable prediction: "this company will sustain returns above its cost of capital for many years despite competition." The past can't prove the future. But a claim that isn't even visible in ten years of history is a story you're being sold. So the numbers test is a fixed five-row interrogation, run over 10 years, long enough to include at least one downturn.
A moat never tested by a bad year is unrated.
What does the five-row numbers test check?
- ROIC/ROCE vs the hurdle, every year.
ROIC = NOPAT / Invested Capital, where NOPAT = EBIT × (1 − tax rate). Invested capital = equity + net debt, or operating assets net of non-interest-bearing liabilities, using the conventions from your returns-on-capital work. ROCE = EBIT / (Equity + Net Debt) for the pre-tax Indian convention. Compare against ~12% INR and ~8 to 9% USD hurdles (illustrative, mid-2026; check against your own WACC numbers). You're reading three things. Level is how far above the hurdle the return runs. Stability asks whether it stays above in bad years. Trend tells you which way it's moving. One great year is weather. Ten is climate. - Gross-margin stability through cycles. This row is the pricing-power polygraph. Say input costs surged (crude for paints, steel for autos, wages for IT) and gross margin held inside a few points. Then the company re-priced its customers, and that's power. If gross margin tracks input costs or the demand cycle point for point, the company is a price taker, whatever its share.
- Market-share stability. Moats freeze markets, so leaders stay leaders. Share churning hands, more than ~2 points/yr moving between players, means customers face low switching costs and entry works. That's Greenwald's threshold, which you'll meet properly soon, and it holds no matter how high today's ROIC is.
- Cash conversion (the Phase 2 veto). You want CFO/EBITDA ~>70 to 80% and FCF/PAT reasonable for the model. A "moat" whose profits pile up as receivables, unbilled revenue, or capitalized costs is an accounting claim, not an economic one. Manpasand and Vakrangee printed lovely ROCEs right up until the cash-flow statement testified.
- Incremental ROIC (the direction row).
Incremental ROIC = ΔNOPAT / ΔInvested Capitalover windows of 3 to 5 years. Step M6.2 of the deep-dive playbook uses the same math. Average ROIC tells you what the old capital earns. Incremental ROIC tells you what the new rupee earns, and it's the first place erosion or widening shows up.
You get three verdicts, and only three. Confirmed means mechanism named + spread persistent through a downturn + share stable + cash real. Unproven means the mechanism is plausible but the history is too short, or hasn't been tested by entry or a downturn, as with most young companies. Contradicted means the numbers refute the story: fade underway, share churning, or returns never cleared the hurdle. The rule that follows is strict. You may underwrite only confirmed moats. Unproven ones you may watch. Contradicted ones you must re-price as no-moat businesses, whatever the narrative.
Advertisement
Worked example: the evidence table on Asian Paints
The evidence table (build one for every moat call you ever make). Its rows are the five tests and its columns are 10 fiscal years. Each row gets one line of verdict, with the overall verdict at the bottom. Here it is run on one claimed moat and one false one.
Table A, claimed moat: Asian Paints (intangible brand + distribution). All figures are illustrative, modeled on ~FY16 to FY25 scale and rounded for teaching. Pull the actual annual reports, which screener.in makes a 10-minute job:
| FY (≈) | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue (₹ cr) | 14,300 | 15,900 | 16,800 | 19,300 | 20,200 | 21,700 | 29,100 | 34,500 | 35,500 | 33,900 |
| Gross margin % | ~44 | ~44 | ~43 | ~40 | ~42 | ~44 | ~38 | ~40 | ~43 | ~43 |
| EBITDA margin % | ~20 | ~20 | ~19 | ~18 | ~20 | ~23 | ~17 | ~18 | ~22 | ~18 |
| ROCE % (pre-tax) | ~33 | ~30 | ~30 | ~29 | ~28 | ~30 | ~24 | ~27 | ~31 | ~22 |
| CFO/EBITDA % | ~75 | ~80 | ~70 | ~65 | ~85 | ~90 | ~55 | ~85 | ~80 | ~75 |
| Organized share % | ~53 | ~53 | ~54 | ~55 | ~55 | ~55 | ~55 | ~54 | ~53 | ~51 |
Read it row by row. ROCE runs ten straight years far above the ~12% hurdle, including the COVID year and the FY22 crude-inflation year. Persistence confirmed. Crude and TiO2 costs swung wildly across this decade, yet gross margin stayed in a ~38 to 44% band and recovered within 4 to 6 quarters each time, through price hikes that stuck. Pricing power confirmed.
Share was glacial for nine years, so the moat looks confirmed... until the last column.
In FY25 revenue declines, ROCE prints its lowest value in decades, and share slips ~2 points. You can see the cause, and it has a name. Grasim's Birla Opus entered decorative paints in 2024 with ~₹10,000 crore committed, buying dealers and share with launch pricing. Verdict: moat confirmed historically, direction contested, actively being tested by the best-capitalized entrant in the industry's history. That's the current, evenhanded reading. Ten years of green doesn't immunize the eleventh. The direction question comes next. The capital-cycle lens explains why the entry itself was predictable: two decades of 30% ROCEs eventually summon a Birla.
Worked example: a false moat, Tata Steel
Table B, false moat: Tata Steel ("scale and brand" claimed, the cycle delivered). Same drill, at illustrative ~FY16 to FY25 scale, rounded. Pull the filings:
| FY (≈) | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue (₹ '000 cr) | 106 | 112 | 124 | 158 | 149 | 156 | 244 | 243 | 229 | 219 |
| EBITDA margin % | ~7 | ~15 | ~18 | ~19 | ~12 | ~20 | ~26 | ~13 | ~10 | ~12 |
| ROCE % (pre-tax) | ~1 | ~9 | ~11 | ~14 | ~5 | ~13 | ~28 | ~9 | ~4 | ~7 |
| Net debt/EBITDA | high | ~4× | ~3× | ~3× | ~5× | ~2.5× | ~0.8× | ~2.5× | ~3× | ~3× |
| Share of India mkt | stable-ish |
Start with ROCE. It clears the ~12% hurdle in roughly two or three years of ten. It averages near or below the hurdle and swings from ~1% to ~28% and back. A moat doesn't breathe like that. A commodity cycle does. The margin row agrees. EBITDA tracks the China-set steel spread almost point for point, which makes Tata Steel a price taker with zero pricing power, as the brand test predicts. Everyone knows Tata Steel, and nobody pays ₹2,000/tonne extra for the name on rebar of identical grade.
This table exists to kill one trap. If you'd met Tata Steel only in FY22, you'd have seen a 28% ROCE, a deleveraged balance sheet, and a 120-year brand. Every point-in-time box was ticked. The 10-year row exposes FY22 as the peak of the cycle. It was never the width of a moat. Rule: a single year's ROIC can only ever suggest. Persistence is the evidence. None of this makes Tata Steel a bad company. Cyclicals are analyzable and investable with mid-cycle tools from your valuation work. It makes Tata Steel a no-moat company, which changes which tools you're allowed to use.
What adjustments should you make to ROIC first?
Adjustments before you trust any ROIC row (Phase 2/3 imports). Compute ROIC both with and without goodwill. With goodwill, it judges management's acquisition prices. Without it, you're judging the business's organic moat. A serial acquirer can show mediocre ROIC-with-goodwill on top of a moaty operating business, and vice versa. Exclude surplus cash from invested capital, because otherwise TCS and CDSL distort. Capitalize leases consistently across peers to avoid the Ind AS 116/ASC 842 trap from your accounting work. And normalize one-offs. Impairment years crater EBIT without saying anything about the moat. But recurring "exceptional" charges are a Phase 2 red flag, and you shouldn't adjust them away.