All screens

Quality & Compounders

Hidden Gems (Piotroski + ROCE + Growth)

Hidden Gems (Piotroski + ROCE + Growth) is a Quality & Compounders screen. It checks every NSE-listed stock against 3 conditions computed from nightly data, after excluding heavily pledged promoters and very small market caps. This page explains the rule, each figure and its source. It lists no stocks and is not advice.

What it does and why

The Piotroski F-Score was designed to separate financially improving companies from deteriorating ones — but a high F-Score alone captures businesses that are healthy yet stagnant, including mature low-growth franchises and turnarounds that have stabilised without re-accelerating. Adding ROCE above 15% filters the universe to companies that are not just healthy but actively efficient with capital. Layering a 5-year CAGR requirement on both revenue and PAT confirms that the efficiency and health are operating in the context of genuine compounding growth. The combination identifies hidden compounders — businesses that are disciplined (Piotroski), efficient (ROCE), and growing (CAGR) but may not yet be widely recognised by the market.

The rule, step by step

A stock must satisfy every condition below. Conditions are grouped under the pillar they test.

Financial Health (Piotroski F-Score)

  • Piotroski F-Score ≥ 7

Capital Returns (ROCE)

  • ROCE ≥ 15

Sustained Growth (5-Year CAGR)

  • Revenue CAGR (5Y) ≥ 20

Hard excludes

  • Promoter pledge above 30% of the promoter's holding
  • Market cap below ₹500 crore
Passes the screen

Ranked by Piotroski F-Score, highest first.

The figures it uses

Piotroski F-Score

Used in a condition
Formula
Number of the nine Piotroski tests passed, 0 to 9
Input fields
pat, total assets, cfo, long-term debt, current ratio, paidUpEquityShares, gross profit, revenue
Source of record
FinEdge · /api/v1/financials/{symbol}?statement_code=pl&period=annualFinEdge · /api/v1/financials/{symbol}?statement_code=bs&period=annualFinEdge · /api/v1/financials/{symbol}?statement_code=cf&period=annualFinEdge · /api/v1/shareholdings/summary/{symbol}?period=quarterly
Refresh
Recomputed nightly (06:30 IST job); rows older than 3 days are excluded from screens

ROCE

Used in a condition
Formula
Latest annual EBIT ÷ (total assets − current liabilities) × 100, only when that capital employed is positive
Input fields
ebit, total assets, current liabilities
Source of record
FinEdge · /api/v1/financials/{symbol}?statement_code=pl&period=annualFinEdge · /api/v1/financials/{symbol}?statement_code=bs&period=annual
Refresh
Recomputed nightly (06:30 IST job); rows older than 3 days are excluded from screens

Revenue CAGR (5Y)

Used in a condition
Formula
Revenue ((Latest ÷ value 5 years earlier)^(1/5) − 1) × 100, both values positive
Input fields
revenue
Source of record
FinEdge · /api/v1/financials/{symbol}?statement_code=pl&period=annual
Refresh
Recomputed nightly (06:30 IST job); rows older than 3 days are excluded from screens

Promoter Pledge

Hard exclude input
Formula
Pledged shares as a share of the promoter's own holding: pledgedSharesPct ÷ promoter holding × 100; blank when the quarter is not listed
Input fields
pledgedSharesPct, promoter holding
Source of record
FinEdge · /api/v1/shareholdings/summary/{symbol}?period=quarterlyFinEdge · /api/v1/shareholdings/pattern/{symbol}?period=quarterly
Refresh
Recomputed nightly (06:30 IST job); rows older than 3 days are excluded from screens

Market Cap

Hard exclude input
Formula
Close × paid-up equity shares ÷ 10,000,000 (₹ crore)
Input fields
close, paidUpEquityShares
Source of record
Upstox · public historical candles, NSE_EQ|{ISIN} (no auth)FinEdge · /api/v1/daily-quotes/{symbol} (fallback)FinEdge · /api/v1/shareholdings/summary/{symbol}?period=quarterly
Corporate actions
Adjusted for corporate actions before use
Refresh
Recomputed nightly (06:30 IST job); rows older than 3 days are excluded from screens

What each figure means

Piotroski F-Score

Sum of 9 binary (0/1) criteria across three domains: profitability (ROA positive, CFO positive, ROA improving, accruals low), leverage/liquidity (leverage declining, current ratio improving, no dilution), and operating efficiency (gross margin improving, asset turnover improving). Maximum score: 9. Screen threshold: above 7.

High is better

Return on Capital Employed (%)

EBIT divided by capital employed, expressed as a percentage. Capital employed = total assets minus current liabilities (sourced from FinEdge balance sheet). EBIT = profit before tax + finance costs (sourced from FinEdge income statement). Screen threshold: above 15%.

ROCE above 15% is the capital efficiency gate. It distinguishes businesses that generate high returns on the capital they deploy from businesses that may be financially healthy (high F-Score) but earn mediocre returns. A 15% ROCE threshold is a meaningful hurdle — it exceeds the typical weighted average cost of capital for Indian businesses, confirming genuine economic value creation rather than mere capital preservation.

High is better

5-Year Revenue CAGR (%)

Compound annual growth rate of net revenue over the 5 most recent fiscal years. Computed as (revenue_year5 / revenue_year1)^(1/4) - 1, expressed as a percentage. Sourced from FinEdge income statement (statement_code=pl, period=annual). Screen threshold: above 10%.

High is better

5-Year PAT CAGR (%)

Compound annual growth rate of profit after tax over the 5 most recent fiscal years. Computed as (pat_year5 / pat_year1)^(1/4) - 1, expressed as a percentage. Uses profitOrLossAttributableToOwners from FinEdge consolidated income statement. Requires positive PAT in both base and current year. Screen threshold: above 10%.

High is better

Try the rule

Type hypothetical values to see which conditions they satisfy. These are not real stocks and nothing here is stored.

  • Piotroski F-Score ≥ 7—
  • ROCE ≥ 15—
  • Revenue CAGR (5Y) ≥ 20—

Enter values to begin

How sensitive is it?

How many stocks pass if this threshold were set differently. Counts only; no stocks are named.

A worked example

Loading the worked example…

Sign in with a completed risk profile to check any stock against this rule.

Evidence

What the harness measured

no_verified_figureNot yet tested

We have not measured this screen yet, so there is no record to explain.

Live monitoring

Not yet testable — 0 of 6 points needed to chart a rolling information coefficient.

  • 5-day IC -0.015 · signal date 2026-10-14 · n 4447

This is a historical, statistical measurement produced by FINOME TECHNOLOGIES PVT LTD's research harness on past data. It is not a prediction, and past results do not indicate future results. The universe is today's Nifty 500 constituents, so the sample is affected by survivorship bias. It describes how a screen's selections behaved in the past and does not constitute investment advice or a recommendation.

Run this screen

Run this screen

Rule version 1.0.0

Questions

How is this screen calculated?
Each stock is tested against 3 conditions using figures computed from exchange prices and company filings, adjusted for corporate actions. The rule is versioned; this page shows version 1.0.0.
How often does the screen update?
The figures are recomputed once each trading day after the nightly compute. A stock whose figures are more than three days old is left out rather than shown stale.
Is this investment advice?
No. This is educational material describing a screening method. It does not recommend any security and does not consider your circumstances.
Educational use only — GoQuant is a research tool. This page explains a screening method and is not a recommendation. Investment advice is provided by FINOME TECHNOLOGIES PVT LTD (AltQube), SEBI-registered Investment Adviser, registration no. INA000018373, under a signed advisory agreement and after a risk profile. Past performance is not indicative of future results.