Every number on Xcap comes from replaying the scans over five years of price history and measuring what happened next. This page explains that process and then spends most of its length on the limits of it — because a screener that publishes only its wins is indistinguishable from one that has none.
Daily open/high/low/close/volume for 1267 NSE stocks, five years back, from a single public source. No broker feed is used, so nothing here competes for the live trading API budget.
One feature set per stock from the last 260 sessions: moving averages, RSI, MACD, ATR, volume ratios, 52-week distances, candle anatomy, gaps. Every scan is a plain boolean over that one dictionary.
All 47 rules run against every stock. A stock can match many scans or none. Matches are appended to a signal store keyed by date, so the live firing record accumulates independently of the backtest.
The same rules are re-run at every past date, using only the bars available on that date, and the forward return is recorded at 5, 10 and 20 sessions. That is compared against the return of every stock on that same date — the baseline — so the number reported is the margin, not the raw return.
Each date is also labelled by market regime from an equal-weight index of the same universe. A scan is scored separately inside each regime, and the per-regime figure is suppressed unless that regime occurred in at least 3 separate episodes — one long crash produces thousands of observations and no independent evidence.
| Horizon | Observations | Finished higher | Average | Median |
|---|---|---|---|---|
| 5 sessions | 349,336 | 46.9% | +0.21% | -0.30% |
| 10 sessions | 349,336 | 47.1% | +0.44% | -0.41% |
| 20 sessions | 349,336 | 47.5% | +0.89% | -0.52% |
| Regime | Observations | Separate episodes | Finished higher | Average over 20d | Used on the site? |
|---|---|---|---|---|---|
| trending up | 152,686 | 14 | 50.1% | +1.58% | trusted |
| rangebound | 133,238 | 31 | 38.5% | -1.56% | trusted |
| falling | 63,412 | 17 | 60.2% | +4.36% | trusted |
| Stage | Companies | Lost | ||
|---|---|---|---|---|
| Listed on NSE or BSE | 5,323 | every active equity share on either exchange, deduplicated by ISIN so a dual-listed company counts once | ||
| With price data | 5,250 | −73 | appeared in at least one exchange bhavcopy — the rest are suspended, newly listed, or never traded | |
| With enough history | 4,534 | −716 | at least 210 sessions, which is what the 200-day average needs before any of these scans mean anything | |
| Trading over Rs 2.0 cr a day | 1,252 | −3,282 | median daily traded value. Below this a screener result is not actionable — you cannot get in, and more importantly you cannot get out |
| Scan | Share of the market it fires on | 20-session edge |
|---|---|---|
| Closed at the day's high | 0.7% | +3.19pt |
| Closed at the very top of its range | 1.6% | +0.43pt |
| Rising without the drama | 1.7% | -0.74pt |
| Made a new 52-week high today | 2.6% | +1.03pt |
| Death cross — 50 crossed below 200 | 2.6% | -1.05pt |
| Beating the market for 6 months | 16.0% | +0.14pt |
| Range is tightening | 16.3% | -0.15pt |
| Short averages stacked in order | 25.9% | -0.13pt |
| Tightest range in 4 days | 27.8% | -0.01pt |
| Above the 200-day EMA | 43.3% | +0.01pt |
The 1267 stocks scanned are today's large-cap NSE names, and the backtest ran them back five years. Companies that were large caps five years ago and are not now were never in the sample. That bias points one way: upward. Every return figure on this site is flattered by it, and there is no honest way to size the effect without a point-in-time constituent list, which this engine does not have yet.
The 20-session baseline reports 349,336 observations, but they are taken one day apart while measuring twenty days forward — consecutive rows share 19 of their 20 days. The number of genuinely independent 20-session windows is closer to 17,466. Treat the large n as a reason the averages are stable, not as evidence that small edges are real.
Forward returns are close-to-close on the raw price. No brokerage, no STT, no slippage, no impact cost, no taxes. A scan showing a +0.3pt edge over the market is very likely net negative after costs on a real account. The scans worth attention are the ones clearing a point or more, and even those shrink.
Every figure assumes you buy every single stock the scan produces, in equal size, hold for exactly the stated number of sessions, and sell. That is not a strategy, and it is not how anyone trades. It is a measurement of whether the scan selects better-than-average stocks — nothing more.
Prices are official closes. Nothing here is intraday, nothing is live, and nothing accounts for what happens between the close that produced the signal and the price you would actually get the next morning — which for a gap-driven scan is precisely where the return goes.
Every statistic on this site describes what a scan did across the whole universe over a fixed window. It says nothing about any individual stock, and a scan that worked for five years can stop working the day it is published. That is not a disclaimer added for compliance; it is the single most common way people lose money with screeners.