About PatternsRadar

Why this exists

I built PatternsRadar because of a question I could never get answered. Chartink will tell you which stocks matched your scan on a Tuesday in 2019. It will not tell you what those stocks did over the following week. Neither will most screeners. You come away with a list of names and a feeling, and the feeling is doing all the work.

So I built the thing that produces the number. Every scan here replays across the last 250 sessions and reports how often it worked and what the average match did next. You get to look at that before you risk money on the setup.

Bitmask is the company name on the invoice, a small Indian software company. For this product it is mostly me and a database.

Where the data comes from

Price, volume and delivery come from eod2, an open-source NSE dataset. Its daily bars arrive already adjusted for splits and bonuses. That adjustment is the part of an Indian market dataset almost everybody gets wrong, and taking it from a project that has maintained it in public for years beats taking it from a scraper I wrote on a weekend.

The database holds 3,700+ instruments and about 8.3 million daily bars, with the oldest listings reaching back to 1995. It rebuilds every trading evening after the close. If a build fails any verification gate, the previous day’s data keeps serving. I would rather show you yesterday than half of today.

Those figures start life in the end-of-day files published by the National Stock Exchange of India. PatternsRadar is not affiliated with NSE, not endorsed by it and not licensed by it. Exchange and index names appear here to describe what the data covers and for no other reason.

How the numbers are checked

All 42 indicator columns are verified against pandas-ta-classic, the standard Python implementations, to within one millionth. That runs on every build. The query language’s 70 reference scans are compiled and run in CI, and each of the shorthand operators is proven to return exactly the same stocks as the same condition written out longhand. A documentation example that stops compiling fails the build.

I check this hard because I have been burned by a screener whose RSI disagreed with everyone else’s RSI, and I had no way to tell which of us was wrong.

What it deliberately does not do

No intraday data. No live feed. The dataset updates once per session, after the close, which is why alerts are end-of-day by design. If you trade intraday, this is the wrong tool and you should keep using the one you have.

There is no BSE coverage.

Fundamentals are point-in-time and screenable: P/E, market cap, growth, shareholding. The filings backfill is still running, so a stock without parsed results shows nothing rather than a guess. Sector classification is today’s snapshot with no history behind it. F&O data is per-stock aggregates (open interest, basis and put-call ratios) and does not reach into option chains.

The replay models the window, the forward horizons, your entry, a stop and a target. Brokerage, slippage and position sizing are not in it. Neither is point-in-time index membership, so it measures the universe as of today and leans survivorship-positive by an amount I cannot put a number on, which is the one caveat I would most like to remove and have not found an honest way to. Every screen that shows those numbers says so. The full chain from exchange file to page is on the methodology page.

PatternsRadar is a research tool. Nothing on it is investment advice or a recommendation to buy or sell anything.

Contact

Questions, corrections and bug reports are all welcome. Reach me through bitmask.in. If a number here looks wrong, I want to know more than you want to tell me.

Open the screener →