The index table and the market dashboard
What the front page’s market blocks and the /indices/ table show, and how each number is computed. Built by pipeline/tipsheet/compute/density_indices.py and published as markets/density/index_snapshot and markets/density/sector_rotation.
Source and licence
- NSE Indices total-return series (dividends reinvested) for every equity index in NSE’s broad, sectoral, thematic and strategy groups, read from the Data bank (
nifty_index_total_returns, repaired against the price index as described inindices.md). - Only returns, ratios and 52-week curves rebased to 1 are published. Index levels are not, under NSE Indices’ terms.
- Indices that have stopped publishing (no print within 10 days of the latest date) are left out rather than shown with stale numbers. On 1 Oct 2026 that removed 5 of 125.
Each column
- Returns. 1D is the last close against the previous one. 1W, 1M, 3M, 6M and 1Y run from the last close on or before that many weeks, months or years ago. YTD runs from the previous year’s last close. 3Y, 5Y and 10Y are annualised (compounded) and are left blank when the index is younger than the window.
- Off high. The last close against the highest close of the last 252 sessions.
- vs 200-day, 50-day. The last close against the simple average of the last 200 (or 50) closes of the total-return series. Price-index averages would differ slightly because of dividends.
- Trend. The pre-registered
sma10mrule fromdocs/research/trend_momentum_spec.md: in when the last completed month-end close is above the average of the last 10 month-end closes. It changes only at month-ends, so it does not flicker within a month. The month shown is when the current state began. - Momentum. The total return from 12 month-ends ago to the previous month-end, skipping the latest month (the spec’s
mom12_1), ranked within the index’s family among indices with the full 13 months of history. This is a description. The pre-registered test of a sector-momentum rule did not beat holding all sectors equally (seemodels.md). - Volatility. Annualised standard deviation of daily log returns over the last 252 sessions.
- Worst fall 5Y. The largest peak-to-trough fall over the last five years.
- Sparkline. Weekly closes over 52 weeks, rebased so the first is 1. The dashed line marks 1; the end dot is blue when the index is up on the year and red when down.
Sector rotation
Each sector index’s return minus the Nifty 500’s, over six months and over one month, in percentage points. Leading means ahead on both; weakening, ahead over six months but behind over the last month; improving, behind over six months but ahead over the month; lagging, behind on both. It is a description of where leadership sits, not a signal. The groups overlap (Bank, Private Bank and PSU Bank share stocks), so the lists are not independent.
Calendar years and the falls within them
From markets/indices/calendar_years_* (see indices.md): the calendar-year total return and the largest fall from a running peak within the year, counting the previous year’s close as the first peak. The year-against-fall chart is the “Guide to the Markets” chart for Indian indices. The front page’s sentence counts full years only; the current year is shown but marked YTD.
Checks
- YTD returns in the snapshot match the separately computed calendar-year bundle (Nifty 500 2026 YTD −7.7% in both on 1 Oct 2026).
- Unit tests (
pipeline/tests/test_density_indices.py): annualisation, month-end handling, the momentum skip month, stale-index removal and the rotation quadrants.
No look-ahead
Every value uses closes up to the as-of date. Trend and momentum use the last completed month. The table lists indices that exist today, which is right for a description of today; it is not used to rank or backtest anything.
Flows: who bought and who sold (flows/density/*)
- Source: NSE and BSE investor-category net purchases in the cash market, via IndiaDataHub (
CMEQ{FPI,MFS,INS,BNK,AIF,PMS,RET,OTH}{N,B}NP11D), summed across the two exchanges bycompute/flows.py. Rupees crore. - Start: 4 Dec 2023, the first day both exchanges publish every category. NSE alone starts in Jan 2023, but mixing one-exchange and two-exchange totals would create a break, so the cumulative lines and the financial-year table start in Dec 2023 (FY24 is therefore a partial year).
- “Retail” is the exchanges’ category for individuals trading on their own account. Individuals’ money that goes through mutual funds, PMS or insurers is counted in those categories.
- “Others” is the exchanges’ remainder: corporates, trusts, promoters and other non-individual clients.
- The categories do not sum to zero. Proprietary trades are left out, and BSE publishes separate client, NRI and proprietary series that are not part of the eight shared categories.
- The 12-month table puts NSDL’s FPI figure (primary and secondary, dated a day after the exchanges) beside the exchange categories, as
/flows/does elsewhere. Compare months, not days. - CDSL individuals’ share: the value of equity held by individuals in CDSL accounts over all equity value in CDSL (
CMDACDEVIN11M/CMDACDEVTT11M). CDSL only, because NSDL reports residents rather than individuals. The share moves with relative prices as well as with buying. - Check on 1 Oct 2026: cumulative since 4 Dec 2023 equals the sum of the financial-year rows for every category (computed from the same daily table).
Mutual funds: the industry (funds/density/*)
- Category flows and assets: AMFI’s monthly report (Data bank
amfi_monthly_report), May 2019 onward: gross inflows, redemptions, net flow, assets and folios for every category. - The August 2026 layout change. AMFI moved ETFs, index funds, life-cycle funds and overseas fund-of-funds into groups of their own, split sectoral from thematic and value from contra funds, and renamed the debt categories.
compute/density_funds.pymaps every category, old and new, to one canonical list: equity categories by name (sectoral and thematic combined; value and contra combined; ELSS under either name); hybrid categories by name; index funds; ETFs as gold ETFs and other ETFs; overseas fund-of-funds; solution-oriented and life-cycle funds; close-ended and interval schemes; and debt funds as one group, because the renamed debt categories cannot all be matched one to one. An unmapped category fails the run instead of being dropped. - Check: the canonical categories sum to AMFI’s own grand total of assets in every month (largest gap 0.0%).
- Passive share: index funds plus ETFs (including gold and silver ETFs) over total industry assets.
- “12-month flow, % of AUM a year ago” is the year’s net inflow over the category’s assets twelve months earlier. It separates new money from market gains.
- Fund houses: AMFI’s average AUM by fund house excluding domestic fund-of-funds (
amfi_aum_fundwise), monthly to the 2010s and quarterly since. Two quarters (Apr–Jun and Jul–Sep 2025) list several fund houses twice under different spellings; names are normalised and one value kept per house. A period whose total is under half the previous period’s is still being reported (Jul–Sep 2026 had 2 of 57 houses on 2 Oct) and is left out. Shares a year and five years ago are taken from the period within 45 days of that date. Concentration starts once 25 or more houses report. - Who owns fund assets: AMFI’s AUM by investor class (
amfi_investor_aum), summed over investor-class detail for all schemes excluding domestic FoFs, and separately for equity-oriented schemes. Domestic FoFs are shown separately to avoid double counting. - Funds’ net buying of shares is the exchanges’ “mutual funds” category (see the flows section above), not an AMFI series.
India against its peers (macro/global/density/country_comparison)
- Annual columns (GDP growth, its five-year average, consumer inflation, current account, reserves as % of GDP, unemployment, GDP per person): World Bank World Development Indicators via the Data bank’s
worldbank_indicators. Licence CC BY 4.0, credited on the page. Each value is the latest year available for that country; the five-year average needs five consecutive years; reserves and GDP must be from the same year. - Latest columns (policy rate, credit to government, the credit-to-GDP gap, the private debt service ratio and the one-year change in the trade-weighted exchange rate): BIS bundles already published under
macro/global/bis/*, joined by country at build time. Vietnam, the Philippines and Thailand are not in BIS’s set, so those cells are blank. - The World Bank’s central-government debt series is not used: its latest year is 2018 for India and 2009 for Indonesia. BIS credit to government is current and comparable.
- The IMF WEO table remains held back (licence), so there are no forecasts here.
Validating the daily investor-category data (added 2026-10-02)
Two problems in IndiaDataHub’s exchange series, both handled in compute/density_flows.py:
- Gaps. On some sessions IDH has BSE figures but no NSE figures, or only some NSE categories.
compute/flows.pyadds the two exchanges treating a missing one as zero, so such a session looks like a small, complete day. A session counts only if every NSE category reported. - Broken prints. On 10 Sep 2026, NSE retail gross sales were printed as Rs 40,860 instead of about Rs 41,000 crore, so the “net” equalled the whole gross purchase (+Rs 41,647 crore in one day). A session is dropped if any category’s gross purchase or gross sale falls below 5% of its own 60-session median (for sides that normally exceed Rs 500 crore a day). Short special sessions (Muhurat trading, Saturday test sessions) also trip this check; their flows are negligible.
- Effect on 1 Oct 2026: 34 sessions since 4 Dec 2023 are left out (12 fail the gross check). Over the validated sessions individuals were net sellers of Rs 27,549 crore; with the raw sum they appeared to be net buyers of Rs 2,727 crore, and September 2026 showed +Rs 39,639 crore of individual buying that was the broken print.
- Monthly figures for the exchange categories on the site come from
flows/density/monthly(validated sessions), not fromflows/investors_monthly.
The front page’s “today” board and index chart (markets/density/{today,movers,index_curves_daily})
- Index tiles: the 1-day and year-to-date total returns from the index snapshot.
- Gold: domestic gold in rupees (the lab’s series). That series carries the last price forward on days without a new one, so the move shown is from the last day the price changed, and the tile shows that date when it is not the market date.
- Rupee: rupees per dollar from ECB euro reference rates (rupees per euro over dollars per euro), shown as the rupee’s own change: positive means the rupee strengthened.
- Breadth today: advances, declines and 52-week highs and lows among the liquid NSE universe (see
breadth.md), with the change in the share above the 50- and 200-day averages from the previous session. - Flows today: the exchanges’ DII total and NSDL’s FPI figure for their latest dates, and the latest validated session of the investor categories (see the validation note above). Each carries its own date.
- Biggest moves: 1-day returns, on prices adjusted for corporate actions, of the 100 most-traded NSE main-board stocks (median traded value over the previous 60 sessions; ETFs and SME excluded); the five best and five worst. Only stocks that traded today are eligible.
- Index chart: total-return series of eight indices for the last five years, published rebased to 1 at the start; the page rebases each window (1M to 5Y) to 0% at its own start. No index levels are published.
- End of day only. Everything is from closing data; nothing on the site is intraday.
India macro detail (macro/india/density/*)
- Source: MoSPI releases in the Data bank (
mospi_cpi,mospi_iip,mospi_wpi), the same data the official MoSPI MCP serves. Checked against the MCP on 2 Oct 2026: CPI (combined) for Aug 2026 is 4.82%, rural 5.23%, urban 4.31%, food and beverages 5.66% in both. - CPI by division and item: 2024 base, all India, combined. The 2024 series begins in January 2025, so year-on-year rates start in January 2026. Item lists show the largest and smallest year-on-year changes among 358 items; weights differ widely, so they show where prices move, not what drives the headline.
- IIP by industry: 2022-23 base, growth on a year earlier.
- WPI by group: 2011-12 base. The warehouse holds indices, so the year-on-year change is computed from them.
- Not available: PMI is S&P Global’s (licensed) and is not in MoSPI data. State-level CPI is in the MCP but not yet in the warehouse (request to lane 1).
Coming up (markets/density/calendar)
- Results and corporate actions: board meetings whose stated purpose includes financial results, and dividend, bonus, split, demerger and rights ex-dates, from stocks.events via the Data bank (
stocks_events_corporate_actions), for the 200 most-traded NSE main-board stocks (median traded value over the last 60 sessions). Dates are as announced; companies move them. - IPOs: mainboard and SME issues opening in the next 14 days, or open now and closing, from NSE’s issue lists.
- Data releases: MoSPI’s usual release dates (the rules in the macro snapshot), marked “expected”; holidays shift them.
- Left out: RBI policy meeting dates (the warehouse holds only past meetings; dates are not typed by hand).
Market value and concentration (markets/density/mcap_*, size_breadth)
- Source: NSE’s daily PR archive, whose
mcapfile gives the market value of every listed and permitted company, via mtf.trading (a colleague’s static mirror of exchange files; owner approved, 2 Oct 2026). Main-board equity only: category “Listed”, series EQ, BE and BZ. - History is short. NSE added
mcapto the archive in February 2024, and it is missing for some months since (none at all for January to July 2026). Each month uses its last session with the file. - Check: our main-board total is 0.979–0.991 of NSE’s own monthly market value (business growth) across 25 months; the gap is SME and permitted companies, which we leave out.
- Market value to GDP uses NSE’s month-end market value of listed companies (business growth, from 1994) over the nominal GDP of the latest complete financial year (MoSPI, latest estimate): 2022-23 base from FY2022-23, 2011-12 base for FY2011-12 to FY2021-22, the 2011-12 back series before. Base changes move the denominator by a few per cent.
- The largest companies: rank, share of main-board market value and rank a year earlier (the session nearest a year back that has the file). The change in market value includes new shares.
- Breadth by size groups companies by today’s market-value rank (1–100, 101–250, 251–500, the rest) and shows only today’s and one-month measures, because grouping long-run returns by today’s size favours the winners.
Commodities, daily (markets/density/commodities)
- MCX (rupees): the daily bhavcopy via mtf.trading, from 2022; captured by hand from a browser, so the latest date can lag and is printed. Each day uses the contract with the most open interest. 1D is that contract’s close against its own close on the last captured day (MCX’s own “previous close” refers to days the capture may lack). Longer periods compare the most-active contract’s price now and then, as MCX prices are usually quoted; this tracks spot within the near-month premium. A rolled futures position earns less than spot by the cost of carry, about 15% a year for gold in 2026, so it is not used. Check: MCX gold +10.0% year to date and +27.1% over a year against domestic spot gold’s +10.3% and +26.2%.
- Contracts that did not trade are skipped; commodities with fewer than 150 traded days in 15 months (cotton, kapas, steel rebar) are left out.
- Brent, WTI, Henry Hub: EIA daily spot prices via FRED (public domain).
- Only returns and 52-week curves rebased to 1 are published.
Fund category ownership and current source detail (5 October 2026)
compute/fund_ownership.py reads AMFI’s investor-classification report. Only
investor-class rows enter sums; group, scheme and grand-total rows are not added.
Domestic fund-of-funds are excluded from the industry denominator, as in AMFI’s
grand total, while their ownership is retained as a separate group. The previous
industry chart included these assets and folios; this correction also updates
the legacy funds/density/investor_mix bundle.
Detail must reconcile to each acquired grand total: AUM within ₹0.5 crore for source rounding, and folios exactly. Unknown categories/classes, negative or non-finite amounts, missing total dates and incomplete investor classes fail the step. AUM and folio shares use separate within-group/category denominators. Folios are accounts, not unique people, and ownership AUM is not monthly AAUM.
Before September 2024, blank group names are classified from the report’s broad scheme labels. Thus earlier equity ownership is retained rather than lost to a group-name-only filter. Historical broad groups reflect changing classifications and membership. The ownership report provides substantially more category detail from September 2024; no detailed history is inferred before it. Identical source category labels within a group are combined across scheme sections because the promoted ownership source does not retain a separate section identifier.
The full current monthly-report table is separate: source categories and open-ended/close-ended/interval sections are preserved, with gross inflows, redemptions, net flows, AUM, average AUM, folios and scheme counts. It exposes detailed debt categories without splicing their historical renamings. This table and quarterly ownership are independently dated and never joined to fabricate current-month ownership. The canonical 24-row category history remains alongside.
Bundles: funds/density/ownership/*, ownership_groups_latest,
ownership_categories_latest, reported_categories_latest (under the same
funds/density/ prefix). Raw investor amounts stay derived locally; the page
publishes shares, group/category totals and source-level monthly industry fields.
Industry-first funds page and flow ratios (5 October 2026)
The funds page opens with industry AUM, year-on-year growth, monthly and trailing 12-month net flows, folios, subscription growth relative to opening AUM, redemptions relative to gross inflows, and passive share. SIPs, broad groups and comparable category flows follow. Ownership and fund-house concentration precede the specialist balanced-advantage and liquidity-stress cuts.
The monthly industry panel is reindexed to a calendar-month grid, without filling missing observations. Twelve-month net flows require all 12 monthly observations. AUM growth uses the actual calendar-year starting AUM; a missing month must not turn twelve observations into a thirteen-month comparison. The comparable category table uses the same calendar-window rule. Current source categories retain their original scheme sections and do not inherit a fabricated year of history after a rename. All comparable categories now appear in the flow heatmaps, including overseas FoFs, solution/life-cycle and close-ended/interval schemes.
Definitions:
- AUM growth: 100 × (ending AUM / AUM twelve months earlier − 1).
- Subscription growth relative to opening AUM: cumulative twelve-month net flows / AUM twelve months earlier × 100. Monthly net-flow intensity uses the previous month’s AUM instead.
- Redemption / gross-inflow ratio: monthly redemptions / monthly gross subscriptions × 100. Above 100% means net withdrawals. It is not a redemption probability or the share of investors leaving; zero gross inflows leaves it blank.
- Other AUM change: change in AUM over twelve months minus net flows over those same months. This reconciles exactly with the AUM change. It can include valuation, currency, reporting and classification effects. It is neither pure market performance nor a money/time-weighted portfolio return.
- Folios: accounts, not unique investors. Gross SIP contributions are not net industry flows and remain separately dated.
Growth and flow ratios with missing or non-positive opening denominators are blank. Source tables use ₹ crore; displayed units may scale to lakh crore.
Specialised investment funds (SIFs)
SIF flows and assets are published separately at /funds/sif/ and linked from
the Mutual Funds page. Source: AMFI SIF Monthly archive,
via Data bank dataset amfi_sif_monthly. Eleven source-listed Excel reports
cover October 2025 through August 2026 at initial release. Seven investment
strategy categories sit within equity, debt and hybrid. Each category has its
own published monthly history, selected on the SIF page; absent months remain
gaps and categories are not merged by similar names. The count of schemes
within a category is distinct from the count of strategy categories. Category
and group subtotals reconcile to each workbook’s printed grand total; counts
must match exactly and money within ₹0.03 crore. All raw workbooks, including
new-scheme-report sheets, remain in the Data bank with fetch lineage.
The first workbook describes a full October period in its title; the parser also checks the dated scheme/AUM headers against the discovered report month. Source numeric dashes mean zero. Absent columns, including SIP fields before they were introduced, remain null; missing reporting months are never filled. Unknown headers, inconsistent dates, duplicate rows, invalid counts, nonfinite values and broken flow/total identities fail parsing rather than publishing partial data. Retrieval revisions use the latest fetched observation per key.
Monthly net flow = gross subscriptions − redemptions. Month-end AUM differs from average AUM during the month. Monthly growth = 100 × (AUM at month end / AUM at the end of the preceding calendar month − 1); flow intensity uses that same opening AUM. A zero or absent denominator leaves the ratio blank. Redemptions/gross inflows = 100 × withdrawals/subscriptions, with a positive gross-inflow denominator. Category share uses total SIF month-end AUM.
AUM change − net flows is labelled valuation and other changes. It is an accounting residual, not a time-weighted strategy return, an investor return, or a causal explanation. The first reporting month has no opening observation and therefore no growth/residual reading. Missing months interrupt these comparisons. No twelve-month growth is inferred from the initial eleven-month history. SIP contributions are gross flows already included in subscriptions; folios count accounts rather than unique investors.
The independent Total industry AUM API
(dataset amfi_total_industry_aum) supplies conventional MF, SIF and combined
totals. Every overlapping SIF month is cross-checked against the workbook for
schemes, folios, subscriptions, redemptions, net flows, AUM and AAUM. The MF/SIF
perimeters remain separate. August matches within the API’s printed precision.
Individual scheme flows, category ownership, strategy return comparisons and NFO contributions are not inferred from these industry-category data. The NSR sheet can support a subsequent launch-versus-existing-subscription breakdown.
SIF collections in newly allotted schemes
The amfi_sif_launches Data bank dataset parses the NSR sheet already present
in SIF monthly workbooks. Its two layouts put numeric category totals and names
either together or in separate sections. Grouped names remain grouped; no
issuer mapping or individual scheme amount is inferred. Rows identify category,
source group, schemes launched and collections for schemes completing allotment
in the report month. Missing reports remain blank rather than zero launches.
Counts reconcile exactly. Some workbooks print whole-crore subtotals alongside
more precise category rows. The ₹1.01-crore monetary allowance covers this
reported rounding; the printed totals and detail are retained without repair.
A legacy single-group report has only a group subtotal: it is also exposed as
the whole disclosed launch universe with total_basis=sole_group_subtotal.
Other industry totals have total_basis=reported_industry_total.
Launch collections divided by same-month gross subscriptions is an indicative scale comparison. Allotment and subscription timing can differ, so neither this ratio nor gross subscriptions less launch collections identifies exact flows into existing schemes. Do not compare launch collections with net flows as a share decomposition: net flows also deduct redemptions. The SIF page dates launch tables separately and uses the latest common month for the ratio.
Age of currently held fund assets
Source: amfi_aum_holding_period, AMFI’s age-wise AUM report. Initial coverage
is 58 half-yearly/quarterly dates from September 2009 to June 2026. Six buckets
are 0–1, 1–3, 3–6, 6–12, 12–24 and over 24 months. Each bucket’s AUM is divided
by its own asset/investor row’s reported total. Shares are blank for zero totals.
Bucket sums, investor-class sums and equity/non-equity sums must reconcile to
the printed totals within ₹1 crore; duplicate rows, incomplete buckets/classes
and invalid values fail the compute step.
Equity and non-equity follow the source’s broad asset classes. Non-equity is not renamed debt. Retail, HNI, corporate, bank/FI and FII labels remain as reported; no fixed historical investor threshold or category bridge is assumed. Totals are separate from investor rows and are never added to them. Charts use only disclosed dates, with no interpolation or substituted quarterly values.
This is the age distribution of assets still held, weighted by their current value. Price movements, subscriptions and redemptions all change it. It cannot establish the typical investor’s holding duration, a cohort survival curve, redemption likelihood or an investor return. The over-24-month bucket is open ended, so no mean holding duration is computed. Quarterly age data is kept separate from monthly flows and separately dated on the Funds page.