Methodology
How every number on thestock.space is calculated, what it leaves out, and where it can mislead. If a figure on a page looks off, this is the page to check it against.
Principles
- Reported figures, calculated the same way for every company. We take each company’s published statements and quotes (see Data sources) and apply one formula to all of them.
- A blank is better than a guess. When an input is missing, or a ratio would be meaningless (a P/E on a loss, a CAGR from a negative number), we show a dash. We never fill a gap with zero or an estimate.
- Descriptions, not recommendations. Words like “best”, “cheaper” or “strong” describe where a reported number sits against other numbers. They are not advice to buy, sell or hold anything. See the Disclaimer.
- No black box. The formulas below are what the code does. If you find a case where it does something else, tell us, or use the “Report a data issue” button at the bottom of any stock page.
Conventions that apply everywhere
- Money is in Indian rupees. “₹ Cr” means ₹ crore, which is 10 million rupees. Share prices are in rupees per share.
- Statements are the yearly and quarterly income statement, balance sheet and cash flow as published through Yahoo Finance, consolidated where the company reports consolidated figures. “Last year” means the most recent annual statement. “TTM” (trailing twelve months) means the latest four consecutive quarters, or the quote provider’s trailing figure where noted.
- Balance-sheet ratios use year-end balances, not averages, unless the formula says otherwise. A company that grew a lot during the year will show a different ROCE here than one calculated on average capital.
- History is short. Yahoo typically gives four to five years of annual statements for Indian companies. “Average of all years” and “lowest year” metrics use only the years available, and say so through the “Years of data” metric. A few small companies have no financials at all.
- Splits and bonus issues. Prices are adjusted by the data provider. For EPS growth we additionally restate earlier years that the provider left un-restated after a split or bonus, by dividing them by the split factor. Dilution from newly issued shares is not adjusted.
- Gaps in the series. Year-on-year and quarter-on-quarter comparisons require consecutive periods. If a quarter or year is missing, the affected metric is blank rather than comparing the wrong periods.
ROCE (return on capital employed)
How much operating profit the company earned for each rupee of capital tied up in the business.
ROCE = EBIT ÷ (total assets − current liabilities) × 100
- EBIT is the earnings before interest and tax from the last annual income statement, as reported. It includes other income.
- Total assets and current liabilities are from the balance sheet at the same year end. The result is blank if capital employed is zero or negative.
- Variants. “ROCE 3Y avg” is the mean of the last three yearly ROCE values. “ROCE avg” is the mean of every year with both statements (needs at least three). “Min ROCE” is the lowest single year and needs at least four years, with no year missing.
- Lenders: not shown for banks, NBFCs and insurers, because their liabilities are mostly deposits and borrowings that are their raw material, not “capital employed”. See Banks, NBFCs and insurers.
ROCE ignores how the capital is funded. It can look high for a company with very little capital and low for one carrying a lot of cash.
ROIC (return on invested capital)
Like ROCE, but after tax, and measured against the money investors and lenders put in.
ROIC = EBIT × (1 − tax rate) ÷ invested capital × 100
- Tax rate is the last year’s tax provision ÷ pre-tax income, held between 0% and 40%. When pre-tax income is not positive or the tax figure is missing, we use 25%.
- Invested capital is the figure the data provider reports for the last year end. When it is missing we use shareholders’ equity + total debt.
- Blank for lenders, and when invested capital is not positive.
P/E (price to earnings)
P/E = share price ÷ earnings per share over the last twelve months
- The trailing P/E comes from the quote provider and is based on trailing-twelve-month EPS. The Price and EPS columns show the inputs.
- Not meaningful on a loss. When EPS is negative the P/E is blank (or shown as negative and never ranked). On Compare, a loss-maker’s P/E is never marked “Best”.
- One-off gains. If net margin is more than 5 percentage points above operating margin, a one-off gain (an asset sale, a tax write-back) is probably lifting profit. We flag the P/E as distorted and do not rank it.
- Forward P/E uses analysts’ estimated EPS for the next year. It is the provider’s consensus and not our estimate.
- Price to average earnings divides market cap by the average yearly net profit over every year on record (usually four to five), which smooths cycles.
- Industry P/E is the median of positive P/Es in the company’s group. See Industry medians.
EV/EBITDA
EV = market cap + total debt − cash and short-term investments
EV/EBITDA = EV ÷ EBITDA
- Market cap is the live quote. Debt and cash are from the last annual balance sheet, in rupees.
- EBITDA is operating income plus depreciation and amortisation for the last financial year. Where the provider leaves a large cost out of “operating” expenses, so that this would be far above its own reported EBITDA, we use the reported EBITDA instead.
- Blank when EV or EBITDA is zero or negative, and for lenders.
- We compute EV from our own rupee figures rather than taking the provider’s ready-made number, because that one can mix currencies for companies that report in dollars.
- Earnings yield uses the same EV: operating EBIT (EBITDA minus depreciation, excluding other income) ÷ EV. It is the measure from Joel Greenblatt’s “Magic Formula”.
Piotroski score
A 0 to 9 count of how many of nine yes/no tests a company passes, comparing the last year with the one before. Each pass is one point. It was designed by accounting professor Joseph Piotroski as a quick screen of financial condition.
Profitability
- Return on assets is positive.
- Operating cash flow is positive.
- Return on assets is higher than the year before.
- Operating cash flow is greater than net profit.
Leverage, liquidity and share count
- Long-term debt as a share of assets is no higher than the year before.
- The current ratio is higher than the year before.
- The share count has not risen by more than 0.1%.
Efficiency
- Gross margin is higher than the year before.
- Asset turnover (sales ÷ total assets) is higher than the year before.
- It needs two consecutive years of statements. If fewer than seven of the nine tests can be calculated from the data we have, the score is blank. A test that cannot be calculated scores zero.
- Compare does not rank it for lenders, whose statements do not fit tests like gross margin and asset turnover.
CAGR and growth rates
CAGR = (latest ÷ earlier)^(1 ÷ years) − 1
- 3-year metrics (sales, profit, EPS) compare the latest annual figure with the one closest to three years earlier, by date (between 2.8 and 3.2 years). If no year falls in that window, the metric is blank.
- Both ends must be positive. A CAGR is blank if either the start or end is a loss, because a compound rate through zero has no meaning.
- 1-year growth compares the last financial year with the one before. Profit growth needs last year’s profit to be positive.
- Quarterly YoY compares the latest quarter with the same quarter a year earlier, matched by date. The earlier quarter must be positive.
- Weakest sales year is the lowest year-on-year growth across the available years. It needs at least three growth figures with no missing or irregular year.
- CFO to PAT adds up operating cash flow and net profit over the last three years and divides one by the other. It needs at least two years and positive profit.
1-year return
1Y return = latest close ÷ close on or before the same date a year ago − 1
- It is calculated from our own series of daily closing prices, the same series the price chart draws, so the number matches the chart’s 1Y range.
- It is a price return. Dividends are not added back, and prices are adjusted for splits and bonuses as the provider reports them.
- 1-week, 1-month and 3-month returns use the last 5, 21 and 63 trading sessions.
- For a company with less than a year of history, we fall back to the quote provider’s 52-week change where it has one.
Companies that report in US dollars
A few listed companies, mostly IT exporters, publish their statements in US dollars. We convert them to rupees so every company is on one scale, using each period’s own rate, not today’s.
- Income statement and cash-flow figures use the average USD/INR rate over that period (twelve months for a year, three months for a quarter).
- Balance-sheet figures use the rate on the statement date.
- Share counts and tax rates are not converted.
- Why it matters: converting every year at today’s rate turns rupee growth into dollar growth. A company growing 10% in rupees can look 16% higher or lower depending on how the currency moved. Using each period’s own rate keeps the growth rates honest.
- The provider’s currency label is not always right about its own statement series (some report headline figures in dollars but statements in rupees). We compare the two and only convert when the series really is in dollars.
- If the rate history cannot be fetched, we fall back to a single current rate and the figures are less precise.
Banks, NBFCs and insurers
A company is treated as a lender when its industry is banking, credit services, mortgage finance, insurance or a financial conglomerate (and, when the detailed industry is unknown, when the exchange classes it as Financial Services). Asset managers, exchanges, depositories and brokers are not treated as lenders: their balance sheets are ordinary.
For lenders, borrowing and deposits are inventory, not financing. So we hide the measures that would mislead, and the Compare page shows “n/a” for them:
EV/EBITDA · P/FCF · Earn. yield · ROCE · ROCE 3Y avg · Min ROCE · OPM · Qtr sales YoY · Sales 1Y · Sales 3Y · Min sales growth · D/E · Debt ₹Cr · Curr. ratio · Int. cover · FCF ₹Cr · CFO/PAT · Invest./Mcap · ROIC · ROCE avg · Net block 3Y · Block+CWIP 1Y · Gross block 1Y · Debt 3Y ago
- The Health check swaps in P/B against the peer median, return on equity and return on assets.
- What we do not cover: gross and net NPAs, capital adequacy, net interest margin, claims ratios. None of them is in the statements we have. Read those from the company’s filings.
Industry medians
- The group. A company is compared with its detailed industry (sub-industry) when that has at least five companies; otherwise with its NSE industry. NSE publishes industries for the NIFTY 500 only; every other company takes the NSE industry that most NIFTY 500 companies in its detailed industry belong to.
- The statistic is the median, so one very large or very small company does not move it.
- Industry P/E is the median of positive P/Es in the group (needs five companies in a sub-industry, or three in an NSE industry).
- Compare’s median row shows medians for ratios in % and × (not for absolute ₹ amounts). A median needs at least three values; multiples exclude zero and negative values; lenders are left out of medians for metrics that do not apply to them. The number of companies behind each median is shown.
- Companies without a usable industry get no median.
How Compare picks “Best”, and what “leads” means
The dot and “Best” marker on the Compare page describe the reported numbers of the companies you picked. They say nothing about which company to own.
- Only measures with a plain direction are ranked. Lower is better for multiples such as P/E and debt to equity; higher is better for returns, margins, growth and interest cover. Measures with no plain direction (price, market cap, absolute ₹ amounts, ownership, current ratio, analyst targets, RSI) are never marked.
- At least two rankable values. Loss-makers are left out of earnings-based rows, companies with a one-off gain are left out of earnings-based rows, and companies with negative equity are left out of equity-based rows. They are shown, with the reason, but not ranked. Multiples at or below zero are never best.
- A clear gap. The leader must beat the runner-up by more than 3% of the larger value, and by at least a minimum amount in the row’s own unit: 0.5 percentage points for % rows, 0.05 for × rows, with tighter or wider limits where it makes sense (1 point for the Piotroski score, 0.5× for interest cover, 0.1 percentage points for dividend yield). The figures must also differ after rounding. Otherwise there is no leader.
- Families count once. The four ROCE variants count as one measure, and P/E with earnings yield counts as one, so one idea cannot win the same group several times.
- Group leads. The scorecard counts the measures each company leads, per group (valuation, profitability, growth, balance sheet, price trend, ownership, dividends). A company leads a group when it has the most, strictly, and the headline names a group only when that company leads at least two of its measures.
- The headline sentence is built from those counts, for example “INFY has the lowest valuation multiples”. It summarises the table; it is not a verdict.
“Differences only” keeps the rows where the highest and lowest values are more than 3% apart.
Health check and risk notes
The six-line Health check on each stock page compares reported numbers with thresholds and with peers. It is a description of the numbers, written to be skimmed, and is not a recommendation.
- Returns: the 1-year return against the share of industry peers it beats (with at least four peers); otherwise against fixed bands.
- Price tag: P/E ÷ industry P/E (P/B ÷ peer median for lenders). At or below 0.85 reads “Cheaper”, at or above 1.15 “Pricier”, in between “In line”. Loss-makers, negative equity and one-off gains are labelled instead of scored.
- Growth: 3-year sales and profit CAGR, against peers when there are enough.
- Profitability: ROCE (ROE for lenders) against 20% and the peer median.
- Balance sheet: debt to equity, interest cover and the Piotroski score (return on assets for lenders).
- Red flags: negative net worth, losses, falling profit, high debt, thin interest cover, a falling promoter stake and similar rules on the headline numbers.
The thresholds are rules of thumb. A company outside them is not necessarily in trouble, and one inside them is not necessarily safe.
All 85 metrics
Every metric the screener can filter and sort on, grouped as in the app. Each has its own link, for example /methodology#roce-avg3y. Where a metric has a longer explanation above, the entry points to it.
Price & returns (20)
Last traded price on NSE. Delayed by up to 15 minutes.
Value of all shares, in ₹ crore. The quote provider’s market cap; where it is missing, price × shares outstanding.
Price change since the previous close.
Price change over the last 52 weeks. See the 1-year return section.
Percent above (+) or below (−) the 52-week high; always 0 or negative.
Distance above the 52-week low.
Highest price in the last 52 weeks.
Lowest price in the last 52 weeks.
50-day moving average price. Simple average of the last 50 daily closes, from the quote provider.
200-day moving average price. Simple average of the last 200 daily closes, from the quote provider.
Shares traded today.
Average daily shares traded, last 3 months.
Price change over the last 5 sessions.
Price change over the last 21 sessions.
Price change over the last 63 sessions.
14-day relative strength index (Wilder). Below 30 is usually called oversold, above 70 overbought. Wilder’s 14-day Relative Strength Index on daily closes. Below 30 is conventionally called oversold and above 70 overbought. It is a description of recent price moves.
Average daily shares traded, last 5 sessions.
Average daily shares traded, last 250 sessions.
Sessions since the 50-day average crossed above the 200-day average. Empty while the 50-day is below. Trading sessions since the 50-day average last crossed above the 200-day average. Needs about 210 sessions of history.
Sessions since the 50-day average crossed below the 200-day average. Empty while the 50-day is above. Trading sessions since the 50-day average last crossed below the 200-day average. Needs about 210 sessions of history.
Valuation (18)
P/E (price to earnings)
Price ÷ trailing 12-month EPS. Full explanation.
Median P/E of peers in the same sub-industry (or NSE industry when fewer than 5 peers).
Price ÷ next year’s estimated EPS. Provider’s analyst consensus.
P/E ÷ expected earnings growth. The provider’s figure, based on analysts’ expected earnings growth.
Price ÷ book value per share.
Market cap ÷ trailing sales.
EV/EBITDA
Enterprise value ÷ EBITDA. Full explanation.
Market cap ÷ last year’s free cash flow. Blank when free cash flow is not positive.
EBIT ÷ enterprise value (Greenblatt).
Annual dividend ÷ price. The provider’s dividend yield. Compare uses a separate trailing yield: dividends paid in the last year ÷ today’s price.
√(22.5 × EPS × book value per share). Blank unless both EPS and book value per share are positive. It is a rule of thumb from Benjamin Graham’s writing, not a valuation.
Mean analyst target vs today’s price. The mean of analysts’ price targets against today’s price. It is an opinion collected by the provider, and Compare never counts it as a lead.
Market cap divided by average yearly net profit across the years on record (usually 4 to 5). A cyclically adjusted P/E. Blank when average earnings are not positive.
Book value of financial investments as a share of market cap. Holding companies often score high. Blank for lenders, whose investments are their business.
Dividends paid as a share of net profit, last financial year. Cash dividends paid ÷ net profit for the year, from the cash-flow statement. Blank when profit is not positive.
Average dividend payout over the last 3 financial years. Mean of the last three years’ payouts that can be calculated.
Dividends per share paid in the last 12 months.
Average yearly dividend per share over the last 5 years.
Profitability (9)
Return on capital employed
EBIT ÷ (total assets − current liabilities), last year. Full explanation.
Average ROCE over the last 3 financial years. Needs at least three years with both statements.
Lowest yearly ROCE across the available years (usually 4–5). Needs at least four years, with every annual year calculable.
Net profit ÷ shareholders’ equity. The provider’s figure. Where it is missing we use net profit ÷ average shareholders’ equity, and failing that EPS ÷ book value per share.
Net profit ÷ total assets.
Operating profit (EBITDA) ÷ sales, trailing 12 months. Sum of the last four quarters’ operating profit ÷ sum of their sales.
Net profit ÷ sales.
Return on invested capital
EBIT after tax divided by (equity + debt), last year. Full explanation.
Average ROCE across every year on record (usually 4 to 5). Needs at least three years with both statements.
Growth (11)
Latest quarter sales vs the same quarter last year.
Latest quarter net profit vs the same quarter last year.
Last financial year sales vs the year before.
Last financial year net profit vs the year before.
Compounded yearly sales growth, last 3 years.
Compounded yearly net-profit growth, last 3 years.
Compounded yearly EPS growth, last 3 years.
Weakest year-on-year sales growth across the available years. Needs at least three yearly growth figures and no missing year.
Change in net fixed assets over 3 years. 100% means the asset base doubled.
Change in net fixed assets plus capital work in progress over the last year.
Change in gross fixed assets over the last year.
Quarterly results (11)
Net profit in the latest reported quarter, ₹ crore. Quarters must be consecutive; if the provider skips one, the trailing quarters are blank.
Net profit one quarter before the latest, ₹ crore.
Net profit two quarters before the latest, ₹ crore.
Net profit three quarters before the latest, ₹ crore.
Revenue in the latest reported quarter, ₹ crore.
Non-operating income in the latest quarter, ₹ crore.
Tax expense in the latest quarter, ₹ crore.
Net profit over the last four quarters, ₹ crore. Needs four consecutive quarters.
Revenue in the last financial year, ₹ crore.
Net profit in the last financial year, ₹ crore.
Days since the company last announced results. Only a past date counts; a future expected date does not.
Balance sheet (8)
Total debt ÷ shareholders’ equity. Total debt ÷ shareholders’ equity at the last year end.
Total borrowings at the last year end, ₹ crore.
Cash and short-term investments, ₹ crore.
Current assets ÷ current liabilities.
EBIT ÷ interest expense, last year. Blank when the company has no interest expense.
Book value per share.
Earnings per share, trailing 12 months.
Total borrowings three financial years ago, ₹ crore.
Cash flow (3)
Operating cash flow, last financial year.
Operating cash flow minus capex, last financial year.
Operating cash flow ÷ net profit, summed over 3 years. Needs at least two years of both figures and positive total profit.
Quality & ownership (5)
Piotroski score
F-score from 0 to 9 based on profitability, leverage and efficiency. Full explanation.
Financial years available for this company. The number of annual statements available. Many multi-year metrics need three to five.
Share held by insiders and promoters (Yahoo estimate, not NSE filings). A provider estimate, not taken from the exchange shareholding filings. For filed figures see the shareholding pattern on each stock page.
Share held by institutions (Yahoo estimate). A provider estimate, not taken from the exchange shareholding filings.