Data to 21 October 2026
About

Methods

NSE client accounts by state: methods

The participation page uses NSE’s public registered-client-account table at https://www.nseindia.com/registered-client-accounts. Its page script requests /api/registered-investors. Despite the endpoint’s name, the current table says All UCC: client codes/accounts, not unique PANs or people. An individual can register with several brokers. The series is neither active traders nor demat accounts. No population penetration or activation ratio is inferred.

Dates and definitions

The current account balance has an explicit source date. The other columns count registrations during the previous calendar day, completed month, completed quarter, calendar year and five-calendar-year window, each with its own label. The daily reference date may coincide with the account snapshot date. Labels are preserved from the source rather than inferred from retrieval time.

The first captured snapshot has accounts to 20 October 2026, registrations during September 2026, July–September 2026, calendar 2025 and calendar 2021–2025. These windows are not a monthly history. Registration counts must not be subtracted from today’s balance to reconstruct past account balances: revisions, closures and changes in state attribution are not identified by this table.

Calculations

Army personnel, Others and the generic Union Territory category stay in totals and the full table, but not named-state rankings. Known spelling aliases are normalised (including Keralam/Kerala, Orissa/Odisha, Pondicherry/Puducherry and Lakhswadeep/Lakshadweep); the original source labels are retained in downloads.

Acquisition, validation and storage

sources/nse_participation.py collects through the existing exchange HTTP adapter, with its proxy-first routing. A successful retrieval is cached for 20 hours. Each dated, distinct response is retained as compressed JSON under .cache/publishers/nse-participation/, which is included in the existing R2 publishers cache. A small checked-in seed allows a new checkout or unavailable source to retain an actual validated observation. No source error is replaced with zero.

The nse_audience collector runs before cloud input sealing. The participation plugin step reads that cache during the offline build, preserving acquisition failures in its visible status without opening a network connection. It has no warehouse backfill or dependency on large market tables. Network-using steps are not skipped by the runner’s unchanged-input optimisation; on a new IST day, the runner also invalidates same-day records.

The parser rejects duplicate canonical labels, missing totals, small/partial tables, invalid/non-integer/negative counts, unknown account-date definitions and invalid/future reference periods. All six count columns must reconcile exactly across source rows to their national totals. No mismatched partial snapshot is promoted, and source dates may not regress. Failed retrievals keep the previous validated response with an explicit refresh error in pipeline status and published metadata; the page shows a retained-data notice. Account snapshots more than seven days old are marked stale in metadata and on the page.

The source snapshot supplies recent historical registration windows, not a complete archived state time series. Repeated captures preserve what NSE reported on each retrieval, including revisions, without pretending that capture history existed before the collector started. There is no invented historical chart. JSON and CSV downloads include the account and registration dates.

Verification

Focused tests cover national reconciliation, duplicate and alias collisions, missing/invalid counts, future dates, stock-versus-flow arithmetic, zero-base ratios, failed-refresh retention and source-date regressions. A separate output audit reproduces shares and pace directly from the saved NSE response, checks the published table, and records its storage footprint. Desktop and phone QA checks every chart, CSV dates, sorting controls, console errors and overflow.

This note is the repository file docs/methods/participation.md, rendered as-is.