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
- Account share = a row’s accounts / NSE’s national account total × 100.
- Registration share = that row’s completed-month registrations / national registrations in the same month × 100.
- Share gap = registration share minus account share, in percentage points. This compares different stock and flow dates; it is not a measured historical change in account share.
- Registration pace = completed-month registrations / (previous calendar year’s registrations / 12). It is a comparison with an annual monthly average, not year-on-year growth or seasonally adjusted growth. Zero prior-year counts produce missing ratios.
- The pace chart includes named states and territories with at least one lakh current accounts. The full table keeps every row and positive-base ratio.
- Concentration compares the five largest named account bases with those same states’ share of monthly registrations. National denominators include every source category.
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.