Proof
Research tool · not investment advice. Full disclaimer →
Evidence behind the analysis.
Descriptive record only — past data and published method.
Data as of 2026-10-01 · generated 2026-10-03 04:10:41 · scope: NSE-listed Indian equities (EQ/BE/BZ; SME excluded)
Coverage & settlement
what is actually covered, and how wellSource: the public source registry.
| Step | Names | What it counts |
|---|---|---|
| Concall names touched | 2,225 | every name with a concall on file |
| Scored | 947 | carry a credibility read |
| At least 1 promise resolved | 475 | one graded promise |
| At least 3 resolved | 324 | three graded promises |
| Robust core, at least 10 resolved | 117 | the headline, not the breadth |
Coverage shrinks at every step, and each step is a stricter count than the one before it. The headline is the robust core, not the breadth. 947 names carry a credibility read; the distribution and tier table count the 943 with a settled point-in-time series, so the gap of 4 is names scored but not yet settled.
| Data class | Primary source | Covers | Grain | Timestamp basis | Latest | Freshness |
|---|---|---|---|---|---|---|
| As-traded equity OHLC | NSE bhav copy | 6,318 symbols · 2.1× today's active set | daily | AS_TRADED | 2026-10-01 | current |
| Exchange delivery qty/% | NSE sec_bhavdata_full | 6,318 symbols · 2.1× today's active set | daily | AS_TRADED | 2026-10-01 | current |
| Index OHLC + PE/PB/divyield | NSE ind_close_all | 5,749 days | daily | AS_TRADED | 2026-10-01 | current |
| Split/bonus/dividend/rights | NSE corp-action feed | 2,842 symbols · 95.9% of today's active set | event | EVENT | 2026-10-28 | current |
| Stock-futures OI / PCR / basis / max-pain | NSE F&O bhav (UDiFF) | 561 symbols · 18.9% of today's active set | daily | AS_TRADED | 2026-10-01 | current |
| FII/DII/Pro/Client long-short | NSE participant-wise OI | 3,653 days | market-level | AS_TRADED | 2026-10-01 | current |
| Market net FII/DII flows | NSE fiidii | 72 days | market-level | INGESTED | 2026-10-01 | current |
| Named bulk/block deals | NSE bulk/block feed | 958 symbols · 32.3% of today's active set | event | INGESTED | 2026-10-01 | current |
| Index constituents + weight | niftyindices | 826 symbols · 27.9% of today's active set | snapshot | INGESTED | 2026-10-02 | current |
| NSE EQUITY_L allowlist | NSE EQUITY_L.csv | 2,593 symbols · 87.5% of today's active set | snapshot | INGESTED | 2026-10-02 | current |
| Market news headline | RSS (MC/Mint/ET/BS) | — | event | INGESTED | 2026-10-02 11:35:10 | current |
| DVPT baselines / R-P / character / key-price | computed | 4,034 symbols · 1.4× today's active set | derived | DERIVED | 2026-10-01 | current |
| Signed accumulation/distribution tape | computed | 4,214 symbols · 1.4× today's active set | derived | DERIVED | 2026-10-01 | current |
| CPR structure (D/W/M) | computed | 2,635 symbols · 89.0% of today's active set | derived | DERIVED | 2026-10-01 | current |
| Stock RS vs broad & sector + rank | computed | 4,034 symbols · 1.4× today's active set | derived | DERIVED | 2026-10-01 | current |
| Index returns/MA/52w + RS phase | computed | 3,610 days | derived | DERIVED | 2026-10-01 | current |
| Strength/direction, RSI-of-RS, Mansfield | computed | 177 series | derived | DERIVED | 2026-10-01 | current |
| RS band % / regime / break state | computed | 131 series | derived | DERIVED | 2026-10-01 | current |
| Down/up capture, down-excess | computed | 190 series | derived | DERIVED | 2026-10-01 | current |
| Typed state-change events | computed | 3,045 symbols · 1.0× today's active set | event | DERIVED | 2026-10-02 | current |
| Current Screener snapshot ratios | Screener.in scrape | 112 symbols · 3.8% of today's active set | snapshot | INGESTED | 2026-07-16 03:35:00 | current |
| Historical financial time-series | Screener.in scrape (legacy, source IS NULL) + NSE XBRL results (source=NSE-XBRL-*, 2026-07→) | 2,318 symbols · 78.3% of today's active set | quarterly | MODELED | 2026-10-01 | current |
| Quarterly shareholding | Screener.in scrape | 2,114 symbols · 71.4% of today's active set | quarterly | MODELED | 2026-10-01 | current |
| Business description corpus | Screener.in | 596 symbols · 20.1% of today's active set | snapshot | INGESTED | 2026-07-16 03:35:00 | current |
| AI business dossier method-versioned | Gemini flash-lite (grounded) | 3,797 symbols · 1.3× today's active set | snapshot | INGESTED | 2026-06-25 | current |
| Multi-label theme tags | index-seed / AI / human | 384 symbols · 13.0% of today's active set | snapshot | INGESTED | 2026-09-27 | current |
| Per-symbol news tags method-versioned | rule gazetteer / classifier | 1,302 symbols · 44.0% of today's active set | event | INGESTED | 2026-10-02 11:35:10 | current |
| 14-pattern patearn score | computed | 279 symbols · 9.4% of today's active set | derived | DERIVED | 2026-10-02 15:34:08 | current |
| Transcript metadata + path | Screener → BSE PDF | 2,225 symbols · 75.1% of today's active set | event | EVENT | Sep 2026 | — |
| Reported quarterly numbers | Screener quarterly table | 117 symbols · 4.0% of today's active set | event | EVENT | Sep 2025 | — |
| LLM guidance/behavior/redflags method-versioned | Gemini Flash on transcript | 943 symbols · 31.8% of today's active set | event | INGESTED | Sep 2025 | — |
| Promise MET/MISSED/PARTIAL | deterministic vs results | 943 symbols · 31.8% of today's active set | event | EVENT | Sep 2025 | — |
| Credibility score + rank (snapshot) method-versioned | computed PIT | 947 symbols · 32.0% of today's active set | derived | DERIVED | Sep 2017 | — |
| PIT credibility level + momentum + tape method-versioned | computed PIT | 943 symbols · 31.8% of today's active set | derived | DERIVED | Sep 2026 | — |
| Capital-allocation (C) composite | computed | 2,146 symbols · 72.5% of today's active set | derived | DERIVED | 2026-10-02 | current |
Timestamp basis — AS_TRADED / INGESTED / EVENT: the date is the real one the exchange or filer stamped. DERIVED: computed from those. MODELED: we ESTIMATED when the market could have known it, because the source does not publish a timestamp — every modelled class is a place a look-ahead could hide, which is why it is labelled rather than blended in.
Coverage is a funnel, not a badge. Most names never reach the robust core — showing the drop-off is the point.
Concall credibility — settlement & robustness
how much of the credibility record has actually resolvedSource: the public source registry.
Status: Credibility runs on the analytics host and is currently PAUSED at a Gemini extraction spend cap; the universe sweep (~9.6k transcripts pending) is incomplete. Figures reflect the settled subset only.
| Resolved promises | Names | Share |
|---|---|---|
| 0 resolved | 468 | 49.6% |
| 1–2 resolved | 151 | 16.0% |
| 3–9 resolved | 207 | 22.0% |
| ≥10 resolved (robust core) | 117 | 12.4% |
| Unproven ceiling — no resolved guidance, level capped not earned | 468 |
|---|---|
| Momentum-ready (at least 2 periods) | 942 |
| Stable slope (at least 4 periods) | 883 |
| Tape — earning trust | 154 |
| Tape — deterioration | 81 |
| Credibility tier | 0 | 1–2 | 3–9 | ≥10 |
|---|---|---|---|---|
| A+ | 0 | 43 | 25 | 7 |
| A | 0 | 15 | 24 | 12 |
| B | 409 | 21 | 39 | 24 |
| C | 48 | 15 | 47 | 40 |
| D | 11 | 57 | 72 | 34 |
Tier by resolved-promise count. A high tier in a low column is a thin-sample read, shown here on purpose — a tier is only as strong as the count beside it.
Concall Credibility measures a management's stated guidance against the results that subsequently landed — a measurement of delivery-versus-guidance, not a judgment of management integrity. A company's credibility level becomes meaningful only once its guidance has resolved. Until then the level is held at a fixed ceiling and reflects only the quantification rate — how specific and falsifiable the guidance was — which is a disclosure metric, not evidence of delivery. Roughly one-third of scored names currently have no resolved promises, and many high bands rest on fewer than three. We therefore define a robust core of names with at least ten graded promises, and report credibility tiers for that core only. Momentum is undefined for the first period and stabilises after about four. Every figure carries its as-of call date and its resolved-promise count; verify each against the original transcript.
Data provenance registry
one row per declared class, not a countSource: the public source registry.PROVENANCE.
| Key | Dataset | SourceWhich archive the fundamentals on THIS row came from: Filings = NSE/BSE XBRL for every quarter used · Legacy = the frozen Screener.in archive, the one known non-primary source in the system · Mixed = both, across the quarters backing the row. Judged over the periods the row actually uses (the trailing eight quarters), never the symbol's whole history — a 2026 figure is not "legacy" because a 2003 filing behind it was scraped. Legacy and Mixed are provisional: that path is read, never extended, and is migrating to exchange filings. Measured 2026-08-17: filings cover 64% of symbols but only 7% of rows, because the legacy archive is deep in history while XBRL is broad and recent. | Cadence | Timestamp basis |
|---|---|---|---|---|
concall_extraction | LLM guidance/behavior/redflags | Gemini Flash on transcript | per transcript | INGESTED |
company_profile | AI business dossier | Gemini flash-lite (grounded) | periodic | INGESTED |
equity_universe | NSE EQUITY_L allowlist | NSE EQUITY_L.csv | periodic | INGESTED |
fno_oi | Stock-futures OI / PCR / basis / max-pain | NSE F&O bhav (UDiFF) | daily ~19:00 IST | AS_TRADED |
bhav_eq | As-traded equity OHLC | NSE bhav copy | daily ~19:00 IST | AS_TRADED |
bulk_block_deals | Named bulk/block deals | NSE bulk/block feed | daily (going-forward) | INGESTED |
corp_action | Split/bonus/dividend/rights | NSE corp-action feed | as announced | EVENT |
fii_dii_flows | Market net FII/DII flows | NSE fiidii | daily | INGESTED |
index_ohlc | Index OHLC + PE/PB/divyield | NSE ind_close_all | daily ~19:00 IST | AS_TRADED |
participant_oi | FII/DII/Pro/Client long-short | NSE participant-wise OI | daily ~19:00 IST | AS_TRADED |
bhav_delivery | Exchange delivery qty/% | NSE sec_bhavdata_full | daily ~19:00 IST | AS_TRADED |
news_headline | Market news headline | RSS (MC/Mint/ET/BS) | continuous | INGESTED |
concall_results | Reported quarterly numbers | Screener quarterly table | per results | EVENT |
concall_corpus | Transcript metadata + path | Screener → BSE PDF | per results | EVENT |
company_about | Business description corpus | Screener.in | periodic | INGESTED |
fundamentals_live | Current Screener snapshot ratios | Screener.in scrape | periodic | INGESTED |
shareholding_history | Quarterly shareholding | Screener.in scrape | quarterly (modelled) | MODELED |
fundamentals_history | Historical financial time-series | Screener.in scrape (legacy, source IS NULL) + NSE XBRL results (source=NSE-XBRL-*, 2026-07→) | quarterly (modelled legacy; XBRL rows carry the real broadcast) | MODELED |
capital_allocation | Capital-allocation (C) composite | computed | nightly | DERIVED |
capture | Down/up capture, down-excess | computed | nightly | DERIVED |
cpr_signals | CPR structure (D/W/M) | computed | nightly | DERIVED |
dvpt_signals | DVPT baselines / R-P / character / key-price | computed | nightly | DERIVED |
index_signals | Index returns/MA/52w + RS phase | computed | nightly | DERIVED |
mep_signals | Signed accumulation/distribution tape | computed | nightly | DERIVED |
pattern_scores | 14-pattern patearn score | computed | on run | DERIVED |
rs_extras | Strength/direction, RSI-of-RS, Mansfield | computed | nightly | DERIVED |
rsband | RS band % / regime / break state | computed | nightly | DERIVED |
signal_events | Typed state-change events | computed | nightly | DERIVED |
stock_rs | Stock RS vs broad & sector + rank | computed | nightly | DERIVED |
cci_credibility | Credibility score + rank (snapshot) | computed PIT | per settle | DERIVED |
cci_series | PIT credibility level + momentum + tape | computed PIT | per settle | DERIVED |
concall_settlement | Promise MET/MISSED/PARTIAL | deterministic vs results | per results | EVENT |
theme_tags | Multi-label theme tags | index-seed / AI / human | weekly reseed | INGESTED |
index_membership | Index constituents + weight | niftyindices | on reconstitution | INGESTED |
survivorship | Universe construction policy | raw bhav archive | nightly | DERIVED |
news_symbol_tags | Per-symbol news tags | rule gazetteer / classifier | continuous | INGESTED |
Every dataset this site reads, where it comes from, how often it lands, and what its timestamp means. 36 data classes declared, of which 2 are MODELED — we estimated when the market could have known them. Nothing reads from a source that is not on this list.
Universe & survivorship
what is in the universe, including what diedSource: NSE/BSE security master · NSE/BSE security events.
| Universe | Count |
|---|---|
| Total securities ever observed | 4,718 |
| Currently listed & active | 2,962 |
| Delisted / inactive, and RETAINED | 1,756 |
| Left-censored at the archive floor | 736 |
| Continuity-break events | 236 |
| Renames confirmed by ISIN handover | 1,076 |
| Rename candidates (unconfirmed) | 8 |
Archive span: 2004-04-17 → 2026-10-01. On a past date, a company is in the universe when the date falls between its first and last trading day.
- Survivorship is correct only from the archive floor 2004-04-17; delistings BEFORE the archive start are not captured (left-censoring).
- Asymmetric: the price/survivorship spine keeps delisted names, but the fundamentals universe is the ~listed-today set — the two universes differ.
- Universe = NSE mainboard EQ/BE/BZ series; SME (SM/ST) excluded.
- Renames auto-confirmed via shared-ISIN clean handover; ISIN is sparse in the historical bhav feed, so rename resolution is biased toward currently-listed names until the authoritative NSE symbol-change feed is loaded.
Our security universe is built from the raw daily bhav-copy archive, not a current-constituents list. Delisted, suspended and surveillance-series names are kept, so historical analysis can see companies that later disappeared rather than only today's survivors. A company is followed across a symbol rename as one continuous security where an ISIN handover confirms it; demergers, mergers and schemes of arrangement are recorded as continuity-break events so a structural gap is never mistaken for a price move. One asymmetry we state plainly: the price/survivorship spine retains delisted names, while the fundamental history covers the names listed today — the two universes are not identical.
Delisted and inactive names are KEPT, not dropped. A universe rebuilt from today's listed companies would quietly delete every failure, and every number measured over it would be flattered by exactly the companies that did worst.
Modeled vs filed
how good the estimated knowable-at dates areSource: the public source registry.
The rule: a financial period counts as known on its period end +90 days (annual results) or +50 days (quarterly), the same lag for every company. It can be wrong two ways: a late filer is treated as known before it was public — a leak — and an early filer is greyed out after it was already public.
Fundamental history is assigned an availability date using a uniform modelled lag — 90 days after period-end for annual results, 50 days for quarterly — applied identically to every company. This is a modelled approximation of when results became public, not an observed filing date. A company that filed late will appear knowable earlier than it was; one that filed early will appear unknown when it was already public. Accordingly these surfaces are labelled “modeled-availability” and must not be read as point-in-time. A true first-seen date is captured only going forward (it does not exist for historical periods).
| Measure | The +90/+50 rule | Learned lag |
|---|---|---|
| Periods compared | 53,672 | 53,673 |
| Median error, days | +0 | -26 |
| 10th percentile, days | -35 | -71 |
| 90th percentile, days | +0 | -4 |
| Would have leaked | 3,529 (6.6%) | 3,218 (6.0%) |
The learned lag (+119 days annual, +62 days quarterly) is a conservative lag fitted to real filing dates. 84.2% of archived periods now carry a real exchange filing date, which is used in place of any model. Across every period, the expected leak is 0.95%.
Error is the real filing date minus the modelled date. A positive error is a leak — the model said the market knew something before it could have, which is what would flatter a backtest.
Zero look-ahead
the real filing date against the modelled oneSource: the public source registry.
Effective look-ahead leak 0.95% (vs 6.6% on the naive +90/+50d model — a 6.9× cut), over 53,672 matched periods.
WHAT WE MODEL: a fundamental period's report_date is a SYNTHETIC +90d (annual) / +50d (quarterly) lag off period-end — applied identically to every company.
HOW WE DE-MODEL: where a real exchange (BSE) filing date exists we PREFER it (leak 0 by construction); 84.2% of archived periods now carry a real date, and a conservative p95 lag covers the rest. The blended expected leak is 0.95%.
THE PROOF: the effective PIT read uses the real date, so a backtest can never see a datum before it was public. The receipts below show the leak the naive model WOULD have injected — and that the real dates fix it.
| Case | Stock | Financial period | Modelled date | Real filing date | Error |
|---|---|---|---|---|---|
| Worst would-have-leaked | ATLASCYCLE | 2021-06-30 · quarterly | 2021-08-19 | 2023-06-09 | +659d |
| Representative conservative | SUMMITSEC | 2022-03-31 · annual | 2024-08-26 | 2022-05-25 | -824d |
Error is the real filing date minus the modelled date. Positive: the model was too early, and a backtest on it would have seen the figure before it was public. Negative: the model was conservative and greyed out a figure that was already public.
What an uncovered name shows
absence is reported as absenceSource: published boundary.
Ask about a company a dataset does not cover and the page says so, with the sample size — never a made-up value. Three states are kept apart: not covered (outside that dataset), zero (a real, measured zero) and not in source (the upstream feed has no such field).
Trust-design principles
the diligence checklist this record answersSource: published boundary.
- Survivorship addressed first. Universe built from the raw archive with delisted names retained; a survivorship-correct universe-as-of-date exists.
- Point-in-time honesty is graduated. Fundamentals are labelled modeled-availability with the exact lag disclosed; Credibility is genuinely PIT by construction. We never call modelled data point-in-time.
- Sample size travels with every score. No tier or credibility read appears without its resolved-promise count and as-of date; a robust core is defined and tiers reported only within it.
- No performance claim without a backtest. The product speaks in percentile rank-gaps; the lead-time study is openly marked not-built.
- Grain is never overstated. Market-level data (participant OI, FII/DII flow) is labelled market-level; we do not claim per-name participant flow.
- Absence is a first-class value. Coverage gaps return coverage + n, never a fabricated number; “not covered”, “zero” and “not in source” are distinct states.
- Every figure is sourced and reproducible. Each count maps to a named table/column; each company-level claim links to its origin.
- Characterisation is banned. Copy states stated-vs-actual facts, never judgments of people.
- Data provenance is declared. Scraped-today vs licensed-later is stated as a known item, not buried.
- The as-of clock is global and visible. The whole page renders from one stamped moment; freshness is shown per class.
Check it another way
the printable procurement packSource: Proof index.
Data-quality battery
every check, not only the ones that fire bannersSource: the site's own data-quality checks.
| Check | Status | Message |
|---|---|---|
census.sanity | WARN | tables still below their recorded maximum (a purge that has become the baseline — explain it or restore it): research.results_reactions 2970→2371 (still -20% vs its max) |
dark.tables | WARN | table(s) hold rows and NOTHING reads them (new since the declared set): dgca_carrier_month |
feed.completeness | WARN | 8 session gap(s): NSE FII/DII: 1 missing since 2026-06-19 (LOST — no dated archive); BSE bulk: 7 missing since 2026-04-06 |
index.name_variants | WARN | case-variant index keys splitting history (extend indexes._NAME_CANON + merge) |
killswitch.regime | WARN | Nifty 50 22422 < 200DMA 24351 by 7.92% — momentum regime OFF (as of 2026-10-01) |
prereg.seal_integrity | WARN | studies --verify exit 1: OK streamband 92fc5cac607e… registered 2026-07-13 17:33:22Z | OK streamband_managed f1da68989751… registered 2026-07-14 13:49:00Z | !! TAMPERED weekly_band_reclaim 9990a4356b27… registered 2026-07-23 17:32:42Z — current 633326f76fff… — re-register if the gate edit was legitimate, else investigate |
concalls.period_labels | INFO | upstream concalls period_label with an out-of-range year (source corruption) |
security_master.sanity | INFO | 0 bad status, 0 last_date<first_date; 1 listed-but-suspended (INACTIVE + in equity list — real state) |
action.tape_agreement | OK | 14 recent action-groups reconcile clean |
bhavcopy.spine | OK | spine reconciles — every dated day holds rows |
calibration.freshness | OK | 0/3 calibration rows older than 30d |
completeness.derived | OK | 180-day source/eligible-output reconciliation: complete. |
concall_scores.sanity | OK | guidance_accuracy_score out of 0–100 or n_promises_resolved < 0 |
corp_actions.forward | OK | corporate_actions reaches 2026-10-28: 9 forward row(s) of 28,196 (0.03%) |
credibility_series.level_range | OK | credibility level outside 0–100 |
credibility_series.period_sanity | OK | period_year/period_month out of valid range (the period_year=225 class of bug) |
credibility_series.recency | OK | credibility_series has not been rebuilt since the guidance ledger last changed — a public route serves this table as live |
delivery.t2t_excluded | OK | T2T/BE excluded from delivery signals BY DESIGN: 272 names on 2026-10-01; 51300 symbol-days / 774 names last 365d (X-02 honesty number) |
fund.leak | OK | ranked outputs fund-free (505 FUND instruments classified) |
fundamentals_history.dates | OK | ok |
index.completeness | OK | no index dropped mid-history across the last 180 ingested dates (bracket + 3-a-side stability, so runs of any length are covered) - BLIND to a truncation inside the newest 3 dates, which the 5-day force-refresh heals, and to one NSE itself never completes, which is upstream-genuine rather than our defect |
index.special_session | OK | every weekend session in index_rows is on the index_dates spine, and every index-spine weekend session has its equity twin |
killswitch.feed_freshness | OK | insider disclosures: 2026-10-02 ok; credit-rating events: 2026-10-02 ok; SAST reg-29 stakes: 2026-10-01 11:26 ok; SAST pledge flow: 2026-10-01 12:39:03 ok; bulk/block deals: 2026-10-01 ok; FII/DII flows: 2026-10-01 ok; NSDL confirmed FPI flows: 2026-10-01 ok; participant OI: 2026-10-01 ok; F&O OI: 2026-10-01 ok; news feed: 2026-10-02 11:35:10 ok; concall filings: 2026-06-30 ok |
killswitch.market_freshness | OK | bhavcopy 2026-10-01, scan 2026-10-01 |
killswitch.restatement_spike | OK | 1/1520 gate-passed symbols (0.1%) revised in 30d |
killswitch.universe_drift | OK | universe 736 -> 753 across 25 scans |
knowable.leak_drift | OK | leak=0.95% demodel=0.842 (ok) |
liveness.derived | OK | derived tables + corp-actions track bhav 2026-10-01 |
provenance_knowable.sanity | OK | ok |
shareholding_xbrl.freshness | OK | newest XBRL shareholding broadcast 2026-10-01 ok (2d ago) |
split_cliffs | OK | no orphan split-shaped cliffs in the ~120d window (3001 symbols scanned) |
xdb.credibility_orphans | OK | credibility_series symbols not in security_master |
Battery last ran 2026-10-03 06:35:04 · 32 checks · 6 at warn/critical.
The nightly battery checks the tape end-to-end. A handful of these gate pages inline as banners; this table is the complete record — including the checks that never fire a banner anywhere else.
What we do not claim
the honest boundarySource: published boundary.
- No alpha claim. No strategy here is a fundable net-of-cost edge versus the index. The one participation-fundable corner is stated with its capacity, and everything else is descriptive.
- No prediction. Every number describes past tape from primary exchange sources. Nothing forecasts.
- No paywall on evidence. Every number's source, method and failure record is free, and so is the reference that makes a number readable — the percentile, the typical value, the trend. Breadth and convenience may cost; the record never does.
- Failures are published. Approaches we killed stay on the site with their numbers — that is what the validation record is for.
Every number on this page names the table it came from — its source, its grain and the timestamp basis are printed beside it.
Take the record with you
a printable artifact, not a second copy of the dataSource: coverage memo.
The same coverage boundary, provenance registry, universe construction and modelled-vs-filed audit, laid out as one dated document you can print or save as a PDF and attach to a diligence pack.
It is the same live read, not a transcription — the memo is assembled when you open it, and it says so on its face.
Everything in the record
eight ways to audit usSource: Proof index.