Foreign portfolio investors
Code: pipeline/tipsheet/compute/fpi.py, publish/fpi.py. Data bank datasets nsdl_fpi_fortnightly_sector and nsdl_fpi_debt_utilisation (connectors and parsers nsdl_fpi_sector, nsdl_fpi_debt).
Bundles: fpi/*, evidence/fpi_sector_chase. Page: /flows/foreign/.
Sources
- NSDL fortnightly sector-wise FPI report, one page per fortnight since January 2012 (353 reports on 6 October 2026), linked from NSDL’s FPI Monitor.
- Contents: for each sector and asset class, the opening holdings (assets under custody, AUC, at market value), the net investment of the fortnight, and the closing holdings, in rupees crore and US dollars million.
- Dollar conversion: NSDL converts to dollars at the RBI reference rate at the end of each period.
- Dates come from the report’s own headers. NSDL’s file names carry typos (
Oct15302014,Dec302012), so they are never used for dating.
- NSDL Debt Utilisation Status, captured daily from 6 October 2026. Its contents:
- the corporate-bond limit and its use (general route and VRR);
- the general limit for central and state government securities;
- FPI holdings of every bond under the fully accessible route (FAR), with the amount the government has outstanding;
- FPI holdings of each security under the general limit.
- Why the debt page has no history here: NSDL’s archive of this page needs an ASP.NET postback, and it re-renders only the limit tables for past dates. The bond-level tables therefore start on the first capture.
- Company-level holdings come from NSE shareholding-pattern filings (XBRL), as in
compute/shareholding.py. Foreign institutions there are FPIs plus other foreign institutional holders.
Definitions
- Net investment: purchases minus sales by FPIs, primary and secondary market, as custodians report them to NSDL. NSDL dates a trade a day after the exchanges do.
- A fortnight is the 1st to the 15th, and the 16th to the month end.
- Each report covers the fortnight ending on its date, and restates the one before it.
- A sector’s fortnight (opening holdings, flow, closing holdings) always comes from one report: the one dated at the fortnight’s end.
- How often restatements differ is logged in
fpi/checks.
- Debt columns by period:
- one column until 2020;
- from 2020, the general limit and the voluntary retention route (VRR);
- from the September 2024 layout, the general limit, VRR and FAR separately.
- “Debt” on the page adds whichever columns exist.
- Mutual fund units and AIFs are counted from August 2024 (holdings) and September 2024 (flows).
- FAR is the route for government bonds open to foreign investors without limits, the bonds in JP Morgan’s GBI-EM index. India’s inclusion in that index was phased in from 28 June 2024. FAR holdings and flows are reported separately from the September 2024 layout, and were part of the other debt columns before that.
- Sectors:
- NSDL used its own list of about 33 sectors until 15 April 2022, and the BSE/NSE common industry classification (22 sectors, plus Sovereign and Others) from 30 April 2022.
- Sector tables and the sector heat map use the new list only.
- Sub-sectors (2012 to April 2022): “Total Financial Services” (Banks, Other Financial Services) and “Transportation” (airlines, ports, roads…) are printed with their sub-sectors.
- The sub-sectors are the rows that add up to the total. The parent row can be incomplete: Total Financial Services printed debt as 0 while its sub-sectors held ₹38,684 crore.
- So parents are kept in the Data bank (
level = parent) but never summed.
- March 2018 reclassification:
- Until 28 February 2018, about a fifth of FPI equity (₹5.9 lakh crore) sat in “Others”.
- The 15 March 2018 report moved most of it into sectors: Banks went from ₹3.0 to ₹5.3 lakh crore and Others fell to ₹0.45 lakh crore. Insurance appeared as a sector.
- Sector shares before that date are not comparable with later ones.
- The long view maps both lists into 13 broad groups (
GROUPSin the code) from 15 March 2018. - Nothing is spliced at the sector level.
- Implied return on holdings: (closing − opening − net investment) ÷ (opening + half the net investment), the modified Dietz return.
- It is the return on what FPIs actually hold, so it needs no sector index.
- It includes corporate actions and companies moving between sectors.
- Stock-level change:
- A company’s foreign-institution holding at the latest complete quarter (one most companies have filed for), minus the previous quarter, in percentage points.
- “Value” multiplies that change by the quarter-end market cap. It approximates buying or selling at that price. Share issues and buybacks also move the percentage.
Checks (in fpi/checks)
- Within each report, the sectors add up to NSDL’s Grand Total for every period, asset class and currency, within rounding. This is a Data bank audit; the run fails otherwise.
- The fortnightly equity Grand Total is checked against NSDL’s daily flows (via IndiaDataHub) summed over the same dates, from 2021.
- The implied fortnightly return on FPIs’ equity holdings is checked against the Nifty 500 total return over the same dates.
- FPI equity value implied by the shareholding filings (holding % × market cap, summed) is checked against NSDL’s equity AUC at the same quarter end.
- CDSL publishes the same market-wide FPI figures, to two decimals.
- Over 293 months (2002 to 2026) its monthly series matches NSDL’s to within ₹1 crore, except two months. Equity differs by ₹2,159 crore in October 2024. In January 2025 equity differs by ₹6,181 crore and debt by ₹13,504 crore.
- Those two months are open; NSDL’s figures are used.
- Debt utilisation: total investment equals general route plus VRR (plus unutilised blocks), available equals limit minus total, and each FAR bond’s share equals holding ÷ outstanding. These are Data bank audits.
The chasing test (C9)
Pre-registered in docs/research/site_calculations_spec.md before the data was loaded. The method:
- In each fortnight, take the Spearman rank correlation across sectors between flow intensity (flow ÷ opening holding) and the implied return in the previous, same, next and following fortnight.
- Average those correlations over fortnights. The t-statistic uses Newey-West errors with 4 lags.
- A placebo shuffles sectors within each fortnight 1,000 times.
- Sectors holding under ₹5,000 crore of FPI equity that fortnight are left out.
- The two sector lists are tested separately and pooled.
Source corrections (by rule, in the Data bank parser and audit)
- Header typos in the fortnight labels:
- “May 1-31” beside “May 16-31” (April and May 2012) is read as the 1st to the 15th;
- “February 15-28, 2014” is read as starting on the 16th.
- Some 2017-18 pages are UTF-16.
- Footnote marks after sector names are stripped:
*,#,^, and digits such as “Utilities3”. - Three Grand Total cells printed as
######(15 April 2014) are left blank. - Reviewed NSDL typos where the sectors do not add up to the Grand Total, each listed in the audit with its gap:
- 15 March 2018, dollar equity holdings (a digit dropped; repeated on 31 March);
- 1-15 June 2018, dollar debt (the ‘Others’ row left out of the total);
- 1-15 December 2022, the rupee total column (Financial Services printed 9 for 99; restated on 31 December).
- Shareholding filings:
- About one filing in five gives percentages on a 0-100 scale; they are normalised.
- A company’s change is left out of the rankings when the earlier filing is out of line with the quarters on both sides (more than 3 points, in opposite directions), or when its depository-receipt line moves by more than 3 points.
Known limits
- Sector names are NSDL’s. “Others” includes unlisted companies and those outside the exchanges’ classification.
- Holdings are at market value, so their change is mostly price. Use net investment for flows.
- Bond holdings on the daily debt page are at face value; the fortnightly report’s holdings are at market value.
- The stock-level view is quarterly and lags each quarter end by up to three weeks while companies file.