← India FS Pulse

Method

Sources, provenance, and what this analysis cannot know

Every figure on this site is computed by a script from a committed dataset. Nothing is typed in by hand. This page is generated from the provenance ledger the fetchers write, so it cannot drift from what the pipeline actually pulled.

Datasets

DatasetPublisherCoverageRowsTerms
amfi_fund_houses Association of Mutual Funds in India (AMFI) 20-Aug-2026 52 AMFI terms; publicly published daily NAV file
amfi_schemes Association of Mutual Funds in India (AMFI) 20-Aug-2026 14,288 AMFI terms; publicly published daily NAV file
bank_fundamentals Yahoo Finance 11 NSE tickers 47 Yahoo Finance terms; personal/research use
bank_prices Yahoo Finance 11 NSE tickers 13,580 Yahoo Finance terms; personal/research use
india_rates FRED (Federal Reserve Bank of St. Louis), series sourced from OECD / RBI 1968-01 to 2026-06 702 FRED terms of use; underlying series (c) OECD. Free to redistribute with attribution.
pulse_base_national PhonePe Pulse 2018Q1 to 2026Q2 34 CDLA-Permissive-2.0 (see PhonePe/pulse repository LICENSE)
pulse_txn_national PhonePe Pulse 2018Q1 to 2026Q2 102 CDLA-Permissive-2.0 (see PhonePe/pulse repository LICENSE)
pulse_txn_state PhonePe Pulse 2018Q1 to 2026Q2 1,224 CDLA-Permissive-2.0 (see PhonePe/pulse repository LICENSE)
pulse_txn_state_mix PhonePe Pulse 2026Q2 108 CDLA-Permissive-2.0 (see PhonePe/pulse repository LICENSE)
upi_apps NPCI (UPI Ecosystem Statistics) 2023-12 to 2026-07 132 NPCI terms apply to the underlying data
upi_apps_hhi NPCI (UPI Ecosystem Statistics) 2023-12 to 2026-07 12 NPCI terms apply to the underlying data
upi_monthly NPCI via India Data Portal (CKAN mirror) 2016-07 to 2026-07 116 NPCI terms apply to the underlying data
worldbank_india World Bank Open Data 1960 to 2025 66 CC BY 4.0

All accessed 2026-08-21. Code in this repository is Apache 2.0 licensed; each dataset retains its publisher's own terms.

Caveats carried into every exhibit

What was deliberately not used

RBI DBIE (data.rbi.org.in)
An Angular application with no documented public REST API. Net interest margin is derived from filed income statements instead, which is more defensible than screen-scraping a portal.
NPCI direct scraping
npci.org.in returns HTTP 403 to every scripted request. Recent months are transcribed from a browser session with per-row provenance instead. The overlap month matches the open mirror exactly, confirming no level shift at the seam.
data.gov.in
The public sandbox key authenticates, but filtered resource queries time out and many finance resources have no active API. It would add nothing the spine does not already cover.
Perspective, Superset, Panel, Redash, Vizro, glue
Each needs a live Python or Node backend, which a static free-hosted site cannot have, or ships several megabytes of WASM to pivot 36 rows. The workbench is built in code instead, which keeps the page fast.
D3
Dropped after the charts were specified. A four-point cohort chart is server-rendered SVG with no JavaScript at all, and ECharts covers the rest. Removing it took a dependency and a client bundle out of the project.
WebGPU
No dataset here is remotely large enough to justify it.

Three rules the pipeline enforces

  1. Never fabricate a number. If a value was not fetched or computed it stays a visible gap. Four months NPCI does not publish are left empty rather than interpolated.
  2. Fail loud on shape change. Each fetcher validates its schema and range. The bank fetcher refused to run when a NIM came back negative, correctly, because the company was a payments firm, not a bank.
  3. Synthetic data announces itself. The survey panel is generated. It says so in the filename, on the chart, and at the top of the memo.