Skip to content

Find your next idea

Base-rate statistics

Base-rate methodology: how every figure here is produced

Every figure on this hub is produced the same way. A pattern is defined and registered in a public log before any data is computed. Every instance is found across the full point-in-time universe, including securities that were later delisted. Each instance is matched against comparable securities on the same date. The difference is then reported with an uncertainty interval. That interval accounts for the fact that events on the same day are not independent. Patterns that show nothing are published alongside those that do. The registration log is public and dated.

Every figure starts from the NSE daily bhavcopy, as the exchange published it that day. A security later delisted therefore stays in the sample for every day it traded. Each event is matched to comparable securities on the same date. The difference is taken per event, before anything is averaged. The interval comes from a bootstrap that resamples whole dates in blocks. The limits of this data are listed further down.

1. The universe, as it looked on the day

Every figure is computed on the NSE daily bhavcopy. That is the file the exchange published at the close of each session, going back to 2011-04-01. That choice does one thing nothing else can. A security that was later delisted, merged or suspended is in the file for every day it traded. It is in no file afterwards. A universe built from securities that exist today is the single most common way an amateur study manufactures an edge. It is not fixable after the fact.

  • Eligibility is decided on the event date only, from data available at that date’s close. A security needs at least 126 sessions of trading history. Its close must be at least ₹20. Its 20-day median traded value must be at least ₹2 crore.
  • Series BE, BZ, SM, ST are excluded: the trade-to-trade, SME and surveillance segments. The non-equity series that share the same file are excluded too — sovereign gold bonds, government securities and debt. Exchange-traded fund units are excluded by ISIN where one is available.
  • A security that fails a filter three months after the event is still in the sample. Eligibility is not re-judged with hindsight.
  • Prices are adjusted for splits, bonuses and consolidations. The adjustment is inferred from the price series, not read from an exchange feed. A split is visible as an overnight gap that lands on a clean ratio, on an otherwise ordinary day. That clean ratio is what gets applied. Across 2011–2026 this identifies 573 events, 11 to 69 a year. They fall in the shapes you would expect: 1:2 is much the most common, then 1:5 and 1:10. It is stated as inference because that is what it is. The limits below say what it cannot see.

2. The look-ahead firewall

RuleWhy
The condition is evaluated on the close of day t, from bars dated on or before tNo peeking. Every window in the feature table ends at t by construction.
The outcome is measured from the open of t+1You cannot transact at a close you needed in order to compute the condition.
Eligibility and matching buckets are as-of tCross-sectional bands are formed on the date itself. Volatility terciles in March 2020 are not volatility terciles in July 2024, and that is the point.
Every bar used is dated on or before today minus 30 daysThis covers the event bar and every outcome bar. It is stricter than the rule requires, because no stock is named here at all.

Source for the lag: SEBI Circular HO/47/17/12(11)2025-MRD-POD3/I/11107/2026, 8 May 2026, effective 1 July 2026. It replaces both the one-day framework of May 2024 and the three-month framework of January 2025. The rule has changed twice in twenty-four months, so it is worth checking the current circular.

3. The matched control — the part that makes this worth reading

A medical trial without a placebo arm proves nothing. If 70% of patients recover on your drug, that is meaningless. It stays meaningless until you know that 68% recovered on sugar pills. A 60% rate in a rising market is a sugar pill. Every number here is published next to its placebo.

For every event, up to 25 comparable securities are drawn from the same date. They sit in the same price band, the same realised-volatility band and the same traded-value band. They also did not themselves meet the condition that day. The control’s outcome is measured with the identical convention: open of t+1 to close of t+h. The difference is then taken per event, before anything is averaged.

The pairing is not cosmetic. It removes the common market move from every observation, which is where nearly all the variance lives. That is the reason a crossover drug trial needs fewer patients than a parallel one.

Where an exact band has too few peers, the bands are widened in a fixed order. That order is turnover first, then price, then volatility, then turnover dropped entirely. The rung used is recorded for every event, and published on the page. If more than 20% of events needed the two loosest rungs, the matching is called broken. No rate is shown.

The draw is repeatable. Anyone who applies this method to the same data gets the same controls and the same numbers, to the last decimal.

4. Why the sample is smaller than it looks

You did not survey 6,000 people. You surveyed 300 dinner tables of twenty. Everyone at a table ordered what the host ordered.

Observations are dependent in two directions at once. The first is serial. A twenty-day window starting on Monday shares nineteen of its twenty days with one starting Tuesday. The second is cross-sectional, and it is much larger. When two hundred securities meet a condition on the same day, they share one market move.

design effect  =  1 + (mean events per date − 1) × ρ
effective n    =  raw n / design effect

ρ is measured on this data, never assumed. The method is one-way analysis of variance, with the date as the grouping factor. It is measured twice. The two answers measure different things. Quoting either alone is misleading:

  • On the raw frequency, ρ is large. Everything that met the condition on one day rose or fell with the market that day. A raw count in the tens of thousands is therefore worth a small fraction of itself. This is the figure the clustering lesson is about, and every page publishes it.
  • On the paired difference — the event’s outcome minus its controls’ — ρ is far smaller. The shared market move is exactly what the pairing subtracts away. This is the honest effective size of the design actually shown. Every interval, quality check and power calculation here uses it.
Measured on this site, not assumed. On Close crosses above 20dma the raw frequency carries a same-day correlation of 0.183 (design effect 5.08). The paired difference carries 0.018 (design effect 1.39). Both are on the page, side by side.

5. Intervals

The published interval is a cluster block bootstrap. It takes 10,000 resamples. The unit resampled is the date, with all of its events attached. Dates are drawn in contiguous blocks of at least 20 sessions. That is a stationary bootstrap, with a mean block length 1.5× the horizon. The interval itself is a bias-corrected and accelerated percentile interval. Resampling whole dates handles the cross-sectional dependence. Resampling blocks handles the serial dependence, and the fact that a bull market is not a sequence of independent Tuesdays.

The gap is bootstrapped directly, never as the difference of two separately bootstrapped rates. Differencing two independent intervals throws away the precision the pairing bought.

A Wilson score interval on the effective sample size is computed alongside it, and both widths are shown on every page. Wald intervals are not used. They fail near 0 and 1, and they can give a lower bound below zero.

Why these two intervals are not compared with each other. The Wilson interval describes the raw frequency. The bootstrap interval describes the gap against the control. They measure different quantities, so their widths can differ in either direction.

The check that is applied compares two estimates of the same quantity. The standard error of the gap is worked out twice. The first estimate resamples dates in blocks. The second divides the per-observation spread by the square root of the effective sample size. The two must land within 35% of each other. If they do not, the effective sample size is probably wrong. All three widths are in each page’s downloadable file.

6. Looking many times

Each pattern declares a grid of 25 variants before any of them is computed. The headline is taken from the pre-declared centre of that grid, not from whichever cell turned out strongest. A stronger cell appears in the robustness panel, described as what it is. The whole grid is shown as a map. A real pattern is a plateau across neighbouring settings. An artefact is one bright cell in a field of noise. A headline more than 30% away from the grid median is flagged as a knife edge and downgraded.

Across all registered patterns, at each horizon, a Benjamini–Hochberg false-discovery-rate adjustment is applied at q = 0.1. Every page prints how many variants and how many tests the adjustment covers.

7. What must be true before a number is shown

If a sample fails any one of these quality checks, no rate is shown for it.
CheckThresholdGuards against
Effective observations≥ 100Noise
Distinct event dates≥ 60A one-week wonder
Distinct securities≥ 25A one-security artefact
Calendar span≥ 5 yearsA single regime
Share in any one quarter≤ 20%“It works” meaning “March 2020 happened”
Share from any one security≤ 5%Single-name dominance
Censoring rate≤ 2%Delisting artefacts
Events on the loosest matching rungs≤ 20%A broken control

8. Sample grades

GradeEffective nInterval half-widthAlso requiresHow it is presented
Strong≥ 780≤ 3.5ppSame sign in both halves of the period, present in ≥ 60% of years, not a knife edge, and survives the false-discovery adjustmentHeadline figure
Moderate≥ 300≤ 6ppSame sign in both halves of the periodHeadline figure with a visible grade badge
Weak≥ 100≤ 10pp—No headline figure. Table only
InsufficientFails a check aboveSample details only. No rate shown

9. How small a gap can be measured

Effective observations needed to detect a gap of a given size at 80% power, α = 0.05 two-sided, for a paired design.
GapEffective n needed
3pp2,178
5pp784
8pp307
10pp196

No one can measure a 3pp gap with confidence on Indian equity history. Where a sample is too small for the gap it reports, the page says so.

10. The break-even column

Every horizon row carries the frequency a symmetric 2% target and stop would need, just to cover published charges. The arithmetic is (bracket + cost) ÷ (2 × bracket). The round-trip charge used is 0.2225% of position value for cash delivery. It comes from the same dated charge table the trade cost calculator uses, so it changes when a statutory rate changes. It excludes slippage, market impact and everything specific to you, all of which move it the wrong way. Work it out for your own bracket.

11. What this data cannot do

Four real limits apply to every page here.

  1. No sector classification. Point-in-time industry membership is not reconstructible from the public daily bhavcopy. So the sector-concentration check is not run, and there is no sector-matched version. A pattern that is really a sector rotation would not be caught. Every page notes this.
  2. No free-float market capitalisation. Shares outstanding are not in the bhavcopy. The size matching key is replaced by a price band. Price is a real cross-sectional attribute, but it is not size. It is labelled price everywhere it appears, never size.
  3. Only distinctive corporate actions are adjusted for. The daily bhavcopy carries no corporate-action field at all. Its previous-close column is the raw previous close. That was verified here rather than assumed. Across every session on which a price roughly halved, that column equalled the prior close exactly. Adjustment therefore has to be inferred from the price series, and inference only works where the ratio is distinctive. A 1:2 split leaves an unmistakable mark. A 1:10 bonus, a rights issue or a dividend leaves a gap indistinguishable from an ordinary day. Inventing an adjustment there would corrupt more than it fixed. Those go unadjusted. That understates long-side frequencies slightly. It also leaves a small number of undetected actions in the data as large single-day moves — about 0.02% of all sessions. Both effects are measured the same way for an event and for its control, so they very nearly cancel in the published gap. “Very nearly” is not “exactly”.
  4. No point-in-time surveillance history. ASM and GSM stage membership back to 2011-04-01 is not available, so that filter is not applied. The series exclusions above catch the segments that carry a permanent surveillance marker. A security temporarily moved into a surveillance stage is not excluded.

The market reference line shown on every distribution chart is the cross-sectional median of the eligible universe, compounded. It is not an index. There is no point-in-time index membership data here, so it is not described as one.

One label is not as-of the date. The volatility band in the regime table ranks each date against the whole sample period. It does not rank it against the history available on that day. It is used only to slice results that have already been computed. It is never used to select an event, draw a control or measure an outcome. A trailing version would be worse for the job. The earliest years would be ranked against a handful of prior dates. “High volatility” would then not mean the same thing in 2011 as in 2025, and the six cells would not be comparable. Everything that feeds a published rate is as-of the date, without exception.

12. The checks that try to refute this

Every page shows checks designed to break the result, not to confirm it:

  • A placebo. It uses the same securities and the same machinery. Each event is moved to an unrelated earlier date on which the condition was not met. It should sit near zero. A gap here would mean the method itself creates gaps.
  • A non-overlapping subsample. It takes one event per security per window, so no two observations share days. The sign must survive on far fewer observations.
  • A delayed entry. The outcome is measured again, entering one session later. A multi-session pattern survives it. An artefact of the entry bar does not.
  • A split by date, shown both ways. An effect present in only the first half is a regime, not a base rate. It is labelled as that.
  • A censoring worst case. Every censored observation is counted as a loss. If the sign flips, the page says so.

13. Checking it yourself

The main horizon is 5 trading days. The full set is 1, 3, 5, 10, 20 trading days. Every page links a downloadable file under the CC BY 4.0 licence. It holds every figure the page shows, with the sample, the quality checks, the settings grid and the robustness checks. The registration log can be downloaded too.

14. How to read the wording

Every result is written in the past tense, about the data: “was followed by”, never “is followed by”. A rate always comes with its control and its interval. No stock is named, and no page shows a running total of returns.

Definitions of every term used here

Next step

The patterns this method produced

Every registered pattern is here, computed under exactly the rules above. Each one carries its gap against a matched control, its 95% interval and its effective sample. That includes the ones that could not be distinguished from the market.

Open the base-rate tables

Last checked on 5 September 2026.