Listed company results: methods
Page: /macro/companies/.
Code: pipeline/tipsheet/sources/listed_companies.py (reading and combining the sources), compute/companies.py, publish/companies.py, step steps/macro_zz_companies.py.
Tests: pipeline/tests/test_companies.py.
Bundles: companies/*.
Build record and audit trail: docs/status/companies.md (source facts, every rule with its evidence, verification and how to re-run it).
What the data is
The RBI’s study of the results of listed non-government non-financial companies: listed companies that are neither government-owned nor financial (no banks, NBFCs or insurers). Each quarter the RBI takes the results filed by about 3,000 such companies, adds them up and publishes:
- Amounts in rupees for sales, value of production, costs (raw materials, staff, power and fuel, other), operating profit, other income, EBITDA, depreciation, EBIT, interest, profit before tax, tax and net profit;
- Growth rates, year on year, computed on the companies that reported in both periods;
- Ratios: margins (EBITDA, operating, EBIT and net, each to sales), raw materials and staff costs to sales, interest to sales, interest burden (interest to EBIT), interest coverage (EBIT to interest), cash coverage ((EBIT + depreciation) to interest), tax to profit before tax, and other income to net profit.
Each table is published for all companies and split four ways: by industry class (manufacturing, IT services, other services), by industry group (51 groups in three levels), by size of paid-up capital, and by size of annual sales. Quarterly tables start in Q1 2014-15 (April–June 2014); annual ones in 2015-16.
The RBI calls the companies “non-government non-financial”; the page says “listed private companies outside finance”.
Sources
The same tables reach the site by two routes, both from the RBI’s Database on Indian Economy (DBIE):
- DBIE Data Query (the Data bank’s
rbi_dbie_cas_money, elementsPRF_LNGNFC_*andRATIO_LNGNFC_*): full history, coded, growth rounded to one decimal. It lags the reports by about two quarters (on 10 October 2026 it ran to Q3 2025-26 and 2024-25). - DBIE statistical reports 1067–1074, 1117 and 1118 (the Data bank’s
rbi_dbie_webi_prompted_rows): each asks for a quarter or year before it shows data. The Data bank answers them for the newest four quarters and two years each week. Values are unrounded.
Data Query is the base. A report fills only cells Data Query lacks: periods newer than Data Query holds for that table, and the cells Data Query zero-fills (below).
The two routes are checked against each other
Every cell both routes carry is compared. Growth must agree to Data Query’s rounding (0.05 points) and everything else to a millionth. On 10 October 2026, 11,378 cells were shared and 11,376 agreed. The two that did not are one small industry group’s net margin (Agriculture: others, about 20 companies): −3.5% against 5.6% for 2023-24, and 5.94% against 5.93% for 2024-25. The page keeps Data Query’s value for shared cells; the disagreements are written to .cache/derived/qa_companies_disagreements.csv. The step fails if more than 1% of shared cells disagree or if any disagreement is in the all-company table, because either would mean a report label was matched to the wrong item.
Rules applied to both routes
- Not meaningful. The RBI prints ”$” or ”#” where a growth rate or ratio means nothing: a negative or negligible numerator or base. Data Query leaves those cells out, and the reports print them anyway (sometimes as 1,000,000,000). On the 10,615 growth and ratio cells the two routes share, Data Query keeps exactly the values between −150 and 150, other than zero ratios, and omits the rest. The site applies that rule to both routes. It also removes 94 Data Query cells for IT services’ “other expenditure” growth that hold rupee amounts under a per-cent unit.
- Zero-filled amounts. Where every rupee amount for a split and period is exactly zero, Data Query has a gap, not data: on 10 October 2026, IT services and every industry group for 2023-24 and 2024-25. Those cells are treated as missing; the reports fill the IT services ones.
- Report rows repeat each value once per display unit (rupees, thousands, lakhs, crores and so on). Only the rupee rows are read, and every repeat must agree.
Accounting identities hold to rounding error in every split and period that carries full rupee accounts: EBIT − interest = profit before tax and non-operating items; EBIT + depreciation = EBITDA; EBITDA − other income = operating profit. The Data bank’s audit checks them on each refresh.
What is computed here
Growth, linked over time
Each year’s growth compares the same companies in both years, so it is not distorted by companies joining or leaving the sample. Linking those rates gives an index, 2014-15 = 100: index(t) = index(t−1) × (1 + growth(t)/100). A year without a meaningful growth rate ends that item’s chain; nothing is filled in. The index describes companies that report in consecutive years, so it leaves out the first and last years of companies that list, delist or stop reporting.
Where ₹100 of sales goes
From each year’s own rupee amounts, divided by that year’s sales:
- sales + change in stocks (value of production − sales) − raw materials − power and fuel − staff − other costs = operating profit;
- operating profit + other income = EBITDA; − depreciation − interest = profit before tax and non-operating items;
- − tax + non-operating items = net profit.
Other costs are expenditure less the three named costs. Non-operating items are net profit − (profit before tax − tax): one-off gains and losses such as asset sales and write-downs. The step fails unless the steps reproduce the RBI’s operating profit and net profit exactly. Each year uses its own sample, so the shares are comparable across years but the rupee totals are not.
Size classes
- Paid-up capital changes slowly, so growth by paid-up capital class follows the same kind of company over time.
- Annual-sales classes are reset every year on that year’s sales. A company whose sales fall can drop into a smaller class and one whose sales rise can climb out of it, so growth by sales class is biased by construction (the smallest class showed −55% sales growth in Q3 2025-26). The page shows only ratios and shares by sales class.
- Shares of sales by size class are the RBI’s own. The rise in the share of companies with sales of ₹1,000 crore or more is partly inflation lifting companies over a fixed rupee threshold.
Industry groups
The RBI’s groups have three levels (for example, Manufacturing > Chemicals > Paints and varnishes). Comparison charts use the second level, plus top-level groups with no subgroups (mining, electricity and gas, construction, IT services), so that no company is counted twice. The full table lists every level, indented. Short chart names are the page’s; tables keep the RBI’s names.
Caveats
- The sample changes. About 2,700 companies a quarter in 2014–2020, about 3,250 in 2026. Amounts and ratios describe each period’s own sample; only growth rates compare like with like.
- Revisions. In the data checked here, a quarter that reappears a year later as the year-ago column carries the same figures and company count as when it was first published. Growth in each period is RBI’s, on that period’s matched sample.
- Base effects. Growth in 2020-21 and 2021-22 compares with lockdown quarters and is large in both directions.
- Not the whole economy. Unlisted companies, government companies and financial firms are outside the study. The RBI’s separate annual studies of public and private limited companies cover more firms with a longer lag; they are not on this page yet.