Does the scoring actually work?
Every score on this board is a claim that a higher number should precede a higher return. This page is the measurement of that claim — each lens tested against what the stock actually did next, across 2019-01-01 → 2024-05-31 and 2024-09-09 → 2026-07-29.
It is deliberately unflattering. Where a lens shows nothing, the page says so; where a lens has pointed the wrong way, it says that too. Nothing here is hand-written — every figure is read live from the study journal.
How to read this page
On each date, rank every stock by its lens score and rank it again by the return it went on to deliver. Rank-IC is how closely those two orderings agree: +1 is perfect, 0 is a coin flip, negative means the score ordered them backwards.
+0.03 is a genuine equity factor — real money is managed on less. +0.10 is exceptional. Anything above +0.15 is more likely a bug or a look-ahead leak than an edge, and should be investigated before it is believed.
The share of tested dates on which the score pointed the right way at all. A high average IC carried by a handful of dates is fragile; a hit rate near 50% says exactly that.
A 126-session forward window measured on 1,343 consecutive dates re-uses almost all the same price history each time — roughly 11 independent observations, not 1,343. The usual t-statistic would read enormous and mean nothing, so it is not shown at all rather than shown with a caveat nobody reads.
In June 2024 the scored universe was cut from ~1,900 names to the NIFTY 500. That is a different population, not more of the same one, so blending the two periods into a single number would hide the most important thing this study found. They are reported side by side, always. A third era began on 2026-08-21 when a ₹2.5cr liquidity floor set the universe at 1,198 names — too few dates have passed to report it.
The verdict on each lens
Headline read: large-caps, 63 sessions (about three months) forward. The full grid below carries every horizon and cap band. A lens with no evidence is not removed — it is the most useful cell on the page.
policy
Sector tailwind — the read on where policy and the cycle are pushing an industry.Predicted returns in both periods — the ordering survived the universe change. The steadiest evidence on this page.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by +6.6% over the next 3 months on average, and the score ordered returns correctly on 67.4% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.5% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by +3.2% over the next 3 months on average, and the score ordered returns correctly on 52.9% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
Read this carefully. Read this as a SECTOR call, not stock selection. Policy is scored per sector and broadcast to every constituent — on 2024-05-31 it took just 9 distinct values across 2,093 stocks. It ranks industries well; it says nothing about which name inside an industry to own.
technical
Trend, momentum and relative strength against the Nifty 500 and the sector.Worked, then inverted. It predicted returns before June 2024; since the cut to NIFTY 500 a higher score has preceded a LOWER return.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by +2.0% over the next 3 months on average, and the score ordered returns correctly on 57.6% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.5% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by −3.8% over the next 3 months on average, and the score ordered returns correctly on 30.3% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
flow
Delivery, institutional buying and the shape of who is accumulating.Worked, then inverted. It predicted returns before June 2024; since the cut to NIFTY 500 a higher score has preceded a LOWER return.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by +2.6% over the next 3 months on average, and the score ordered returns correctly on 61.4% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.5% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by −1.4% over the next 3 months on average, and the score ordered returns correctly on 42.0% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
fundamental
Returns on capital, margins, growth and leverage from the filed financials.Pointed the wrong way before June 2024; nothing measurable since.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by −5.7% over the next 3 months on average, and the score ordered returns correctly on 38.5% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.7% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by +3.4% over the next 3 months on average, and the score ordered returns correctly on 48.3% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
valuation
What is being paid for those fundamentals, against the stock’s own history and peers.Points the wrong way in both periods — a higher score has preceded a lower return throughout. Not noise; a consistent inversion.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by −1.8% over the next 3 months on average, and the score ordered returns correctly on 53.5% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.5% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by +0.2% over the next 3 months on average, and the score ordered returns correctly on 42.3% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
catalyst
The signal read of recent exchange filings, insider deals and bulk deals.Pointed the wrong way before June 2024; nothing measurable since.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by −1.9% over the next 3 months on average, and the score ordered returns correctly on 45.4% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.4% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by −0.8% over the next 3 months on average, and the score ordered returns correctly on 41.6% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
composite
The blend — the 0–100 conviction score every other page is built on.Nothing measurable before June 2024; has pointed the wrong way since.
2019 → May 2024: the top decile of large-caps out-returned the bottom decile by −1.2% over the next 3 months on average, and the score ordered returns correctly on 54.6% of the 1,343 dates tested.
Large-caps, 63 sessions forward · cap coverage 59.5% · 1,360–1,431 names ranked per date · before the universe was cut
Jun 2024 → today: the top decile of large-caps out-returned the bottom decile by −0.1% over the next 3 months on average, and the score ordered returns correctly on 31.4% of the 433 dates tested.
Large-caps, 63 sessions forward · cap coverage 100.0% · 475–482 names ranked per date · cut to NIFTY 500
Read this carefully. The composite is the score the board leads with, so its row is the one that matters most. It is measured here exactly as it is served, with no re-weighting. On this evidence the blend does not improve on its parts: 3 of the 6 lenses it blends score a higher IC than the composite itself in the wide era, and 5 of 6 in the narrow era (large-caps, 63 sessions). That is the single most actionable finding on this page.
Every cell of the study
Rank-IC / hit rate / dates, for each lens across three forward horizons and five cap bands. Cap coverage is shown for every cap band because it qualifies the number beside it.
| Lens | Horizon | Cohort | Wide universe | Narrow universe | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| IC | Hit | Dates | Cap cov. | IC | Hit | Dates | Cap cov. | |||
| policy | 21d | all | +0.046 | 72.9% | 1,343 | — | +0.020 | 53.8% | 468 | — |
| policy | 21d | large | +0.036 | 58.4% | 1,343 | 59.5% | +0.033 | 55.6% | 468 | 100.0% |
| policy | 21d | mid | +0.022 | 58.7% | 1,343 | 59.5% | +0.026 | 57.9% | 468 | 100.0% |
| policy | 21d | small | +0.022 | 58.1% | 1,343 | 59.5% | +0.031 | 60.9% | 468 | 100.0% |
| policy | 21d | micro | +0.019 | 61.2% | 1,343 | 59.5% | −0.025 | 45.3% | 468 | 100.0% |
| technical | 21d | all | +0.016 | 60.4% | 1,343 | — | −0.006 | 56.2% | 468 | — |
| technical | 21d | large | +0.025 | 55.9% | 1,343 | 59.5% | −0.032 | 46.2% | 468 | 100.0% |
| technical | 21d | mid | +0.007 | 53.5% | 1,343 | 59.5% | −0.004 | 49.1% | 468 | 100.0% |
| technical | 21d | small | +0.039 | 62.9% | 1,343 | 59.5% | −0.030 | 45.1% | 468 | 100.0% |
| technical | 21d | micro | +0.024 | 65.1% | 1,343 | 59.5% | −0.096 | 27.1% | 468 | 100.0% |
| flow | 21d | all | +0.018 | 68.3% | 1,343 | — | −0.007 | 50.0% | 468 | — |
| flow | 21d | large | +0.006 | 52.0% | 1,343 | 59.5% | −0.028 | 44.9% | 468 | 100.0% |
| flow | 21d | mid | +0.001 | 49.7% | 1,343 | 59.5% | −0.029 | 34.2% | 468 | 100.0% |
| flow | 21d | small | +0.014 | 58.5% | 1,343 | 59.5% | −0.015 | 43.8% | 468 | 100.0% |
| flow | 21d | micro | +0.018 | 59.9% | 1,343 | 59.5% | +0.040 | 62.8% | 468 | 100.0% |
| fundamental | 21d | all | +0.028 | 59.2% | 1,343 | — | +0.007 | 53.4% | 468 | — |
| fundamental | 21d | large | −0.023 | 43.8% | 1,343 | 59.7% | −0.010 | 42.7% | 468 | 100.0% |
| fundamental | 21d | mid | −0.004 | 46.1% | 1,343 | 59.7% | −0.006 | 49.8% | 468 | 100.0% |
| fundamental | 21d | small | −0.003 | 48.5% | 1,343 | 59.7% | +0.006 | 54.9% | 468 | 100.0% |
| fundamental | 21d | micro | +0.009 | 52.0% | 1,343 | 59.7% | +0.015 | 52.3% | 468 | 100.0% |
| valuation | 21d | all | +0.004 | 53.8% | 1,343 | — | −0.006 | 43.8% | 468 | — |
| valuation | 21d | large | −0.020 | 48.9% | 1,343 | 59.5% | −0.028 | 42.1% | 468 | 100.0% |
| valuation | 21d | mid | +0.037 | 62.6% | 1,343 | 59.5% | +0.018 | 51.9% | 468 | 100.0% |
| valuation | 21d | small | −0.008 | 50.0% | 1,343 | 59.5% | +0.003 | 52.3% | 468 | 100.0% |
| valuation | 21d | micro | +0.010 | 51.4% | 1,343 | 59.5% | +0.071 | 74.6% | 468 | 100.0% |
| catalyst | 21d | all | +0.020 | 59.7% | 1,343 | — | +0.005 | 57.0% | 468 | — |
| catalyst | 21d | large | −0.003 | 49.5% | 1,343 | 59.4% | +0.000 | 50.2% | 468 | 100.0% |
| catalyst | 21d | mid | −0.008 | 47.5% | 1,343 | 59.4% | +0.026 | 58.6% | 468 | 100.0% |
| catalyst | 21d | small | −0.019 | 42.5% | 1,343 | 59.4% | −0.003 | 46.6% | 468 | 100.0% |
| catalyst | 21d | micro | −0.006 | 44.4% | 1,343 | 59.4% | −0.028 | 44.0% | 468 | 100.0% |
| composite | 21d | all | +0.025 | 68.1% | 1,343 | — | −0.008 | 45.5% | 468 | — |
| composite | 21d | large | −0.002 | 50.7% | 1,343 | 59.5% | −0.058 | 34.6% | 468 | 100.0% |
| composite | 21d | mid | +0.028 | 62.0% | 1,343 | 59.5% | +0.006 | 50.0% | 468 | 100.0% |
| composite | 21d | small | +0.005 | 50.6% | 1,343 | 59.5% | −0.004 | 50.6% | 468 | 100.0% |
| composite | 21d | micro | +0.015 | 61.7% | 1,343 | 59.5% | +0.016 | 57.7% | 468 | 100.0% |
| policy | 63d | all | +0.060 | 80.2% | 1,343 | — | +0.026 | 53.3% | 433 | — |
| policy | 63d | large | +0.064 | 67.4% | 1,343 | 59.5% | +0.029 | 52.9% | 433 | 100.0% |
| policy | 63d | mid | +0.033 | 59.2% | 1,343 | 59.5% | +0.044 | 63.0% | 433 | 100.0% |
| policy | 63d | small | +0.045 | 63.2% | 1,343 | 59.5% | +0.041 | 65.4% | 433 | 100.0% |
| policy | 63d | micro | +0.032 | 66.0% | 1,343 | 59.5% | −0.032 | 49.4% | 433 | 100.0% |
| technical | 63d | all | +0.041 | 69.8% | 1,343 | — | −0.016 | 44.3% | 433 | — |
| technical | 63d | large | +0.037 | 57.6% | 1,343 | 59.5% | −0.075 | 30.3% | 433 | 100.0% |
| technical | 63d | mid | +0.018 | 57.3% | 1,343 | 59.5% | −0.031 | 41.1% | 433 | 100.0% |
| technical | 63d | small | +0.076 | 73.3% | 1,343 | 59.5% | −0.032 | 42.5% | 433 | 100.0% |
| technical | 63d | micro | +0.046 | 68.6% | 1,343 | 59.5% | −0.143 | 19.6% | 433 | 100.0% |
| flow | 63d | all | +0.025 | 69.0% | 1,343 | — | −0.009 | 43.2% | 433 | — |
| flow | 63d | large | +0.025 | 61.4% | 1,343 | 59.5% | −0.026 | 42.0% | 433 | 100.0% |
| flow | 63d | mid | +0.019 | 57.9% | 1,343 | 59.5% | −0.035 | 29.1% | 433 | 100.0% |
| flow | 63d | small | +0.028 | 66.7% | 1,343 | 59.5% | −0.027 | 45.0% | 433 | 100.0% |
| flow | 63d | micro | +0.026 | 62.2% | 1,343 | 59.5% | +0.053 | 72.1% | 433 | 100.0% |
| fundamental | 63d | all | +0.013 | 55.9% | 1,343 | — | −0.005 | 43.9% | 433 | — |
| fundamental | 63d | large | −0.036 | 38.5% | 1,343 | 59.7% | −0.004 | 48.3% | 433 | 100.0% |
| fundamental | 63d | mid | −0.024 | 40.1% | 1,343 | 59.7% | −0.027 | 34.0% | 433 | 100.0% |
| fundamental | 63d | small | −0.019 | 42.1% | 1,343 | 59.7% | −0.016 | 37.4% | 433 | 100.0% |
| fundamental | 63d | micro | −0.015 | 44.0% | 1,343 | 59.7% | +0.001 | 51.3% | 433 | 100.0% |
| valuation | 63d | all | +0.003 | 53.6% | 1,343 | — | −0.005 | 49.6% | 433 | — |
| valuation | 63d | large | −0.024 | 53.5% | 1,343 | 59.5% | −0.021 | 42.3% | 433 | 100.0% |
| valuation | 63d | mid | +0.055 | 64.2% | 1,343 | 59.5% | +0.037 | 65.6% | 433 | 100.0% |
| valuation | 63d | small | −0.008 | 49.7% | 1,343 | 59.5% | −0.002 | 46.9% | 433 | 100.0% |
| valuation | 63d | micro | +0.014 | 56.7% | 1,343 | 59.5% | +0.091 | 80.6% | 433 | 100.0% |
| catalyst | 63d | all | +0.009 | 53.7% | 1,343 | — | −0.001 | 43.2% | 433 | — |
| catalyst | 63d | large | −0.018 | 45.4% | 1,343 | 59.4% | −0.008 | 41.6% | 433 | 100.0% |
| catalyst | 63d | mid | −0.017 | 39.6% | 1,343 | 59.4% | +0.039 | 61.4% | 433 | 100.0% |
| catalyst | 63d | small | −0.028 | 39.0% | 1,343 | 59.4% | −0.021 | 40.6% | 433 | 100.0% |
| catalyst | 63d | micro | −0.027 | 32.1% | 1,343 | 59.4% | −0.050 | 35.6% | 433 | 100.0% |
| composite | 63d | all | +0.030 | 67.5% | 1,343 | — | −0.021 | 39.7% | 433 | — |
| composite | 63d | large | +0.000 | 54.6% | 1,343 | 59.5% | −0.066 | 31.4% | 433 | 100.0% |
| composite | 63d | mid | +0.040 | 65.9% | 1,343 | 59.5% | +0.006 | 46.9% | 433 | 100.0% |
| composite | 63d | small | +0.026 | 57.0% | 1,343 | 59.5% | −0.015 | 44.3% | 433 | 100.0% |
| composite | 63d | micro | +0.014 | 61.7% | 1,343 | 59.5% | −0.027 | 43.9% | 433 | 100.0% |
| policy | 126d | all | +0.073 | 80.3% | 1,343 | — | +0.037 | 54.3% | 370 | — |
| policy | 126d | large | +0.099 | 72.8% | 1,343 | 59.5% | +0.052 | 55.1% | 370 | 100.0% |
| policy | 126d | mid | +0.061 | 64.0% | 1,343 | 59.5% | +0.067 | 72.4% | 370 | 100.0% |
| policy | 126d | small | +0.076 | 72.8% | 1,343 | 59.5% | +0.054 | 69.7% | 370 | 100.0% |
| policy | 126d | micro | +0.043 | 69.3% | 1,343 | 59.5% | −0.040 | 40.5% | 370 | 100.0% |
| technical | 126d | all | +0.054 | 70.9% | 1,343 | — | +0.023 | 57.3% | 370 | — |
| technical | 126d | large | +0.058 | 59.3% | 1,343 | 59.5% | −0.050 | 40.5% | 370 | 100.0% |
| technical | 126d | mid | +0.035 | 63.4% | 1,343 | 59.5% | −0.038 | 36.8% | 370 | 100.0% |
| technical | 126d | small | +0.095 | 77.4% | 1,343 | 59.5% | +0.007 | 53.8% | 370 | 100.0% |
| technical | 126d | micro | +0.063 | 78.9% | 1,343 | 59.5% | −0.094 | 26.5% | 370 | 100.0% |
| flow | 126d | all | +0.027 | 71.5% | 1,343 | — | +0.006 | 53.2% | 370 | — |
| flow | 126d | large | +0.033 | 64.3% | 1,343 | 59.5% | +0.005 | 57.3% | 370 | 100.0% |
| flow | 126d | mid | +0.026 | 53.8% | 1,343 | 59.5% | −0.034 | 32.2% | 370 | 100.0% |
| flow | 126d | small | +0.035 | 74.4% | 1,343 | 59.5% | −0.012 | 35.1% | 370 | 100.0% |
| flow | 126d | micro | +0.038 | 68.3% | 1,343 | 59.5% | +0.061 | 69.5% | 370 | 100.0% |
| fundamental | 126d | all | −0.008 | 43.1% | 1,343 | — | −0.030 | 35.7% | 370 | — |
| fundamental | 126d | large | −0.047 | 31.2% | 1,343 | 59.7% | +0.004 | 55.1% | 370 | 100.0% |
| fundamental | 126d | mid | −0.054 | 27.3% | 1,343 | 59.7% | −0.052 | 28.4% | 370 | 100.0% |
| fundamental | 126d | small | −0.036 | 42.2% | 1,343 | 59.7% | −0.061 | 17.6% | 370 | 100.0% |
| fundamental | 126d | micro | −0.048 | 24.0% | 1,343 | 59.7% | −0.015 | 49.2% | 370 | 100.0% |
| valuation | 126d | all | +0.003 | 55.9% | 1,343 | — | +0.001 | 50.5% | 370 | — |
| valuation | 126d | large | −0.033 | 51.8% | 1,343 | 59.5% | −0.007 | 54.6% | 370 | 100.0% |
| valuation | 126d | mid | +0.063 | 64.8% | 1,343 | 59.5% | +0.051 | 66.5% | 370 | 100.0% |
| valuation | 126d | small | −0.001 | 52.1% | 1,343 | 59.5% | +0.016 | 54.6% | 370 | 100.0% |
| valuation | 126d | micro | +0.015 | 59.1% | 1,343 | 59.5% | +0.085 | 75.9% | 370 | 100.0% |
| catalyst | 126d | all | −0.011 | 45.2% | 1,343 | — | −0.010 | 45.4% | 370 | — |
| catalyst | 126d | large | −0.035 | 41.1% | 1,343 | 59.4% | −0.001 | 48.4% | 370 | 100.0% |
| catalyst | 126d | mid | −0.031 | 34.0% | 1,343 | 59.4% | +0.041 | 58.1% | 370 | 100.0% |
| catalyst | 126d | small | −0.044 | 28.7% | 1,343 | 59.4% | −0.055 | 18.9% | 370 | 100.0% |
| catalyst | 126d | micro | −0.056 | 21.8% | 1,343 | 59.4% | −0.104 | 25.4% | 370 | 100.0% |
| composite | 126d | all | +0.022 | 62.7% | 1,343 | — | −0.008 | 51.6% | 370 | — |
| composite | 126d | large | +0.001 | 51.3% | 1,343 | 59.5% | −0.029 | 39.2% | 370 | 100.0% |
| composite | 126d | mid | +0.056 | 66.3% | 1,343 | 59.5% | +0.003 | 55.4% | 370 | 100.0% |
| composite | 126d | small | +0.041 | 70.1% | 1,343 | 59.5% | +0.001 | 51.6% | 370 | 100.0% |
| composite | 126d | micro | +0.004 | 56.1% | 1,343 | 59.5% | −0.046 | 27.8% | 370 | 100.0% |
What these numbers cannot tell you
Before June 2024, 86 instruments carry 28,507 sub-₹1 close_adj rows — PRIVISCL reads ₹0.05 on 2020-03-23 with an adjustment factor of 1.0, so the raw close is wrong rather than the adjustment. One such row inside a decile drags its arithmetic mean: the worst-affected cell reads +2811%. Rank-IC is immune, because ranks do not care how far wrong a price is. Any spread outside ±100% over a quarter is therefore shown as withheld, not printed.
The cap band comes from v_stock_cap, which has no date dimension — it is the universe as it stands now. In the wide era that leaves roughly 41% of the cross-section without a band, and those names are not missing at random: they are disproportionately the ones that later left the universe. Every cap-band figure on this page carries its coverage for exactly this reason. The “all” cohort has no such gap.
Consecutive test dates share almost all of their forward window, so the effective sample is far smaller than the date count suggests. That is what inflates any significance test. It also means a lens can look stable simply because one long market episode repeats across hundreds of overlapping windows.