Data to 23 October 2026
About

Methods

Economy models: methods

The cross-dimension measures behind the economy portal’s front door, which asks “How is India’s economy doing?”

Code: pipeline/tipsheet/compute/economy_common.py (shared conventions), economy_registry.py (the indicator registry and scorecard), economy_breadth.py (M4), economy_composites.py (M5a), economy_liquidity.py (M9), economy_fci.py (M8); bundles in publish/economy_models.py; steps in steps/economy_models.py. Tests: pipeline/tests/test_economy_registry.py, test_economy_breadth.py, test_economy_composites.py, test_economy_liquidity.py, test_economy_fci.py. Bundles: economy/models/scorecard, economy/models/readings/<dimension>, economy/models/breadth, economy/models/breadth_facts, economy/models/activity, economy/models/inflation, economy/models/composites_facts, economy/models/liquidity_daily, economy/models/liquidity_monthly, economy/models/liquidity_facts, economy/models/fci, economy/models/fci_facts. Build record: docs/plans/economy_portal/status/econ-models.md.

One convention: a reading against its own history

Every measure here compares an indicator with its own past, in the same units:

z36 is the headline. Several Indian series are maturing fast (UPI, card payments, EPF membership), and an expanding window would read their natural slowing as weakness. The cost: after three weak years, an ordinary reading looks strong. zlong is published beside it, so a reader can see when the two disagree.

The indicator registry

INDICATORS in economy_registry.py holds 60 indicators across the ten dimensions of the portal plan (§10). For each it records:

FieldMeaning
dimensionGrowth, Prices, Jobs and incomes, Households, Business and investment, Money and credit, Government, External, Rural and agriculture, States
sourcethe publisher; everything comes through the Data bank
freqmonthly, bimonthly (RBI’s household surveys) or quarterly
readingwhat the number is: growth on a year earlier for amounts and indices; the level for rates, survey indices and spreads
polarity, sign“stronger” (activity), “hotter” (prices) or none; sign −1 where a lower reading is stronger (unemployment)
lag_daysthe publisher’s usual delay after the period ends, from release calendars (MoSPI, RBI, GSTN) and checked against what was held on 2026-10-24
compositethe activity or inflation theme the indicator feeds (M5a), if any
rbi_levelthe reading is RBI’s own published level (survey indices, survey medians): the page charts it but offers no table, CSV or JSON

Indicators with no good or bad side carry no polarity: broad money, the real repo rate, the call rate against repo, lending spreads, the rupee’s real effective rate, RBI’s dollar purchases, government borrowing, and what states pay over the centre. They appear in the scorecard and are left out of breadth and of the composites.

Sources and licences

The readings come from tables other steps already build (Pulse, /macro/, /rbi/, /macro/credit/, /economy/bonds/), from Data bank datasets (GST state collections, Vahan), and from India Data Hub series. An IDH series is read only when IDH names a public publisher (RBI, MoSPI, EPFO, GSTN, Grid-India, PPAC, NPCI, NSDL). economy_common.idh raises an error if a caller asks for an FBIL, FIMMDA or CCIL series, or for one IDH builds itself (its rupee index, its CP and CD curves), so a withheld figure cannot slip in through a new registry line.

Notes on particular readings

Stale readings, and why

A reading is stale when its period ended more than its usual lag plus a grace period ago (45 days for monthly series, 75 for bimonthly, 100 for quarterly). Each stale row carries stale_reason:

Checked on 2026-10-24: EPF contributing members (weekly) run to October 2026, but the weeks a year earlier are missing at source after May, so growth stops in May 2026 (base_gap). EPFO’s monthly payroll release has not appeared since July 2025 (source). Sectoral credit, stale while it read India Data Hub’s copy (to April 2026), now reads RBI’s workbooks and is current to August 2026.

Checked against the publisher

The scorecard (economy/models/scorecard)

One row per indicator: the latest period and reading, the reading before it and a year earlier, z36 and zlong, z36_directed (signed so that positive means stronger or hotter), the state in words (within ±0.5: “about usual”; otherwise stronger, weaker, hotter, cooler, higher or lower than usual), the percentile of the latest reading in the indicator’s full history (lockdown months left out), the last two years of readings, and the stale flag and reason. dimensions[] counts, for each dimension, the directional readings that are current, how many are beyond +0.5 and −0.5, and lists the missing, stale and history-less indicators. Missing inputs are listed, never silently dropped.

The scorecard reads each indicator’s newest reading held now. It is not point-in-time; breadth is.

Economy breadth, M4 (economy/models/breadth)

Question: how much of the economy is improving, and is that broad or narrow?

At the end of every month from January 2008 (plus the current month so far), each directional indicator contributes its newest reading that its publisher had released by that day (period end plus the usual lag). A reading older than its lag plus the grace period is dropped, so a series that stopped (EPFO) does not keep voting.

Limits, stated on the page:

Validation (C63, pre-registered, run 2026-10-24): a null. Breadth at a quarter’s end barely correlates with that quarter’s GVA acceleration (+0.08, 95% interval −0.03 to +0.30) or the next quarter’s (−0.12). Present breadth as a description of the indicators, never as a read on GDP. Details in the Results log of docs/research/site_calculations_spec.md.

Activity and inflation composites, M5a (economy/models/activity, economy/models/inflation)

Question: is the economy running hot or cold against its own recent past, and what moved it?

econvitals’ method, adapted to India:

  1. each indicator’s z against its own history (z36 for the headline; zlong for the _long version), capped at ±4 so that one extreme series cannot carry a theme alone (WPI’s z of 6.9 in September 2026 enters as 4);
  2. an equal-weight mean of the indicators within each theme;
  3. an equal-weight mean of the themes present that month. A theme’s contribution is its mean divided by the number of themes present, so the contributions add up to the composite.
CompositeThemes and indicators
ActivityIndustry (IIP, core industries, cement, steel); Transport and energy (electricity, e-way bills, diesel, FASTag, major-port cargo); Spending (UPI payments to merchants, credit cards, car and two-wheeler registrations, air passengers); Taxes (GST); Trade (exports, imports); Credit (bank credit); Jobs (new ESIC subscribers)
InflationHeadline (CPI); Core (CPI excluding food and fuel); Food (CPI food); Producer prices (WPI, WPI manufactured); Expectations (households’ inflation expected a year ahead)

The composites differ from econvitals’ in three ways, each for an Indian reason:

The composites are built by reference month. August’s value uses August’s readings, whenever they were published. So the newest months rest on the fast indicators only: n_indicators, n_themes and partial (some theme has no reading yet) say so, and composites_facts.<kind>.complete_through is the last month every theme reports. Lead with that month; show later months as an early read. The bimonthly expectations survey stands for its own month and the next.

Coverage grows over time. Before 2012 the inflation composite is headline CPI alone (one theme), and the activity composite has 9 or 10 indicators in four themes until 2019. The page should start the inflation chart in July 2013, the first month four or more themes report. Lockdown months get values of their own (−2.0 for activity in July 2020); they are kept out only of the reference windows.

A reading of +1 means the indicators, on average, sit one robust standard deviation above their own last three years. It is not a growth rate or an inflation rate, and the scale is not comparable with the RBI’s or econvitals’ indices.

Validation (C62, run 2026-10-24): fails. The composite correlates with real GVA growth at 0.46 (Q1 FY14 to Q1 FY27, FY21–22 left out), but IIP alone gives 0.72, and the bootstrap interval of the difference (−0.48 to −0.06) says the composite is reliably worse. It is a measure of the indicators against their own past, not a GDP tracker, and must not be presented as one.

Liquidity tracker, M9 (economy/models/liquidity_*)

Question: is the banking system flush with cash or short of it, and is RBI adding or draining?

Source. RBI’s daily Money Market Operations release. From 31 March 2022 the tracker reads RBI’s own table (Data bank rbi_money_market_operations, each release reconciled by econ-data to its printed totals); before then, and on any day that table lacks, it reads India Data Hub’s mirror of the same release (RBI the publisher of every series used). When the dataset is absent from the warehouse (latest_snapshot returns None, as in a first cloud build), IDH is read throughout. Every day carries its source (rbi_mmo or idh); the daily bundle has official (1 or 0), the monthly official_share, and the facts list the stretches in sources, which the pages quote.

How RBI’s headings map to the parts: SDF and MSF by the heading’s last item, today’s and outstanding added; variable-rate repo and reverse repo of every tenor (the 2024-25 long-term variable-rate repos included); long-term, targeted and special long-term repos (LTRO, TLTRO, SLTRO) as fixed-rate repo, as IDH counts them, so the series does not jump where the source changes; several auctions under one heading on a day add up; a reserve position printed twice in one release takes the first (the day’s own). Checked against IDH over the 1,603 days both hold (31 March 2022 to 22 October 2026): every part agrees to the rupee on 1,600. The exceptions: 16 May 2022 and 30 September 2026, where RBI’s printed net injection differs from IDH’s by ₹42,462 and ₹1,513 crore (RBI’s figure is used); and 23 December 2024, where RBI prints a ₹1.5 lakh crore fine-tuning operation without saying whether it was a repo or a reverse repo, which IDH counts as variable-rate repo and this reader leaves in other_net_cr (the net total is unaffected). RBI’s table also has four days IDH lacks.

Measures, daily:

Monthly: averages of the daily figures, the share of days in surplus, and the number of days held (the current month is partial).

Licences. The ₹ crore amounts and the policy and market rates are RBI’s own figures. The bundles carry rbi_level: true, so pages chart them with no table, CSV or JSON. The share of deposits, the spreads to repo and the corridor position are derived and may be downloaded. No FBIL, FIMMDA or CCIL rate is used; the call rate, TREPS and market repo rates are RBI’s.

Not yet built (models.md M9): the weekly decomposition into currency demand, government cash balances, RBI’s FX operations and OMOs, and the look-ahead calendar of tax dates. Both need RBI’s weekly statistical supplement tables, which econ-data plans to refresh weekly. IDH’s “government surplus cash balance reckoned for auction” is not the government’s cash balance (it is zero on most days), so it is not used as one.

India financial conditions index, M8 (economy/models/fci)

Question: are money, bond, credit, equity and currency markets helping or hurting growth? Positive means tighter than usual.

The design follows the RBI’s own index (Bandyopadhyay, Kumar, Kumar and Bhattacharyya, “Financial Conditions Index for India: A High-Frequency Approach”, RBI Bulletin, June 2025): indicators standardised against their history since 2012, positive for tight. It is built from inputs the site may publish. It is monthly, because several RBI inputs are monthly.

GroupInputs (signed so that up is tighter)PublisherFrom
Moneycall rate less repo; 91-day T-bill auction cut-off less repo; CD rates less repo (midpoint of the fortnight’s range); real repo rate (repo less CPI inflation)RBI; MoSPI2005; 2019; 2001; 2001
Bonds10-year G-sec yield at month-end; real 10-year yieldRBI (DBIE report 217); MoSPI1996; 2001
Creditlending rate on new rupee loansRBISep 2014
EquityNifty 50 three-month return (falling is tighter); realised volatilityNSE (returns only, never levels)1990
Currencyrupee’s 40-currency nominal effective rate, change on a year (appreciation is tighter); rupee-dollar realised volatilityRBI; ECB reference rates2005; 2000

Reading it. The level is measured against 2012 onwards, which includes the high-rate years 2012-14, so much of the last decade reads as loose. Changes are as informative as levels. Checked against episodes: the index tightened from +0.15 in September 2018 to +0.55 in December 2018 (IL&FS and the NBFC funding squeeze), was +0.36 in March 2020, and tightened by more than one unit from March 2022 (−1.27) to March 2023 (−0.12) as RBI raised rates.

Validation (C60, C61, run 2026-10-24): nulls. A tightening does not precede slower IIP growth (six-month slope −0.31, t −0.39; the sign is negative at every horizon but nothing is significant, and the term spread does as well) or slower bank credit growth (slope +0.09, t +0.09). The index describes conditions; it is not shown to forecast activity, and the page must not say it does.

This note is the repository file docs/methods/economy_models.md, rendered as-is.