← 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) 04-Nov-2026 56 AMFI terms; publicly published daily NAV file
amfi_schemes Association of Mutual Funds in India (AMFI) 04-Nov-2026 14,430 AMFI terms; publicly published daily NAV file
bank_fundamentals Yahoo Finance 11 NSE tickers 46 Yahoo Finance terms; personal/research use
bank_prices Yahoo Finance 11 NSE tickers 13,588 Yahoo Finance terms; personal/research use
india_rates FRED (Federal Reserve Bank of St. Louis), series sourced from OECD / RBI 1968-01 to 2026-09 705 FRED terms of use; underlying series (c) OECD. Free to redistribute with attribution.
pix_fraud_monthly Banco Central do Brasil 2022-01 to 2026-09 57 Banco Central do Brasil open data terms
pix_p2b_initiation Banco Central do Brasil 2020-11 to 2026-10 436 Banco Central do Brasil open data terms
pix_txn_monthly Banco Central do Brasil 2020-11 to 2026-10 701 Banco Central do Brasil open data terms
psp_financials Yahoo Finance 4 NSE tickers, FY2023 to FY2026 16 Yahoo Finance terms; personal/research use
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)
rbi_acceptance Reserve Bank of India 2026-05 to 2026-07, national totals 15 Reserve Bank of India terms; data is provisional as published
rbi_card_payments Reserve Bank of India 2026-05 to 2026-07, national totals 18 Reserve Bank of India terms; data is provisional as published
survey_SYNTHETIC_nps Generated by this repository (SYNTHETIC) 2,000 respondents x 4 episodes, seed 20260820 8,000 Apache-2.0
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_incentive Press Information Bureau, Ministry of Finance FY2021-22 to FY2024-25, incentive payout and national UPI value split 4 Government of India, PIB terms
upi_monthly NPCI via India Data Portal (CKAN mirror) 2016-07 to 2026-07 116 NPCI terms apply to the underlying data
worldbank_brazil World Bank Open Data 1960 to 2025 66 CC BY 4.0
worldbank_india World Bank Open Data 1960 to 2025 66 CC BY 4.0

All accessed 2026-11-05. 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.