Is inflation under control? Methods for the prices pages
Pages: /economy/prices/ (overview), /economy/prices/cpi/ (release note and archive), /economy/prices/underlying/, /economy/prices/food/, /economy/prices/expectations/, /economy/prices/states/ (switches on when state CPI is in the Data bank).
Code: pipeline/tipsheet/compute/economy_prices.py, publish/economy_prices.py, step economy_prices (needs macro; about 3 seconds). Shared scorecard helper: compute/economy_common.py.
Bundles: economy/prices/*.
Tests: pipeline/tests/test_economy_prices.py; pre-registered tests C70 and C71 in docs/research/site_calculations_spec.md.
Sources
| Data | Source | From |
|---|---|---|
| CPI item indices, base 2024 (358 items; rural, urban, combined) | MoSPI eSankhyiki API, Data bank mospi_cpi | Jan 2025 |
| CPI group and subgroup indices, base 2012 (23 components) | Same | Jan 2011 |
| CPI general index, both bases, and MoSPI’s base-2024 back series | Same | 2011 / 2013 |
| Item weights, base 2024 | MoSPI, CPI 2024 methodology, Annex 5.3d (all-India and state item weights by sector), https://www.mospi.gov.in/uploads/documents/documents/1769670019171-Annex_5.3.xlsx (sha256 cae0f770…be9b80d), summed over states into compute/economy_prices_item_weights.csv | |
| Component weights, base 2012 | MoSPI monthly CPI press release, Annex I (the weights column printed every month) | |
| Household inflation expectations (median: current, 3 months, 1 year) | RBI Inflation Expectations Survey of Households, via India Data Hub (HHIEINFMED11T, 03T, 12T) | Sep 2009 |
| Older CPI for the decade comparison | macro_cpi_monthly.cpi_combined_linked_yoy (India Data Hub’s spliced index before 2012; docs/methods/macro.md) | 1989 |
RBI’s survey levels are RBI’s own figures, so their charts hide table, CSV and JSON. MoSPI data is open (GODL-India).
The 2026 change of basket: what is joined and what is not
MoSPI moved CPI to base 2024 in February 2026 (new items, COICOP 2018 groupings, weights from HCES 2023-24) and published a linked back series for the general index only. Nothing else is linked.
- Headline (combined, rural, urban) runs through: year-on-year rates on base 2012 to December 2025 and base 2024 from January 2026 (MoSPI’s own convention;
macro.md). Its month-on-month changes chain the two bases. In 2025, when both were published, the two bases’ monthly changes matched closely (correlation 0.996, mean gap 0.05 points). - Food, core, fuel and every item or group measure change definition in January 2026. Prepared meals move from food to restaurants; vegetables and pulses share a class; core’s contents change with the regrouping. So:
- their chart lines break at January 2026 (the
breaksseries option in@tipsheet/charts); - their 3- and 6-month rates are blank for windows that would mix the two baskets (core’s first new-basket 3-month rate is March 2026, 6-month June 2026);
- their footing gap to headline (below) restarts on the new basket;
- the release note does not compare them with December 2025 in January 2026’s entry;
- base-2012 group measures (
groups_*) end in December 2025 and base-2024 item measures (items_*) start in January 2026, in separate columns.
- their chart lines break at January 2026 (the
- How different the baskets are. Over 2025 the two baskets’ monthly food changes tracked each other (correlation 0.975, mean gap 0.17 points), but their core changes did not (correlation −0.15, mean gap 0.16 points a month). This is computed on every run (
checksin the facts bundle) and quoted on the underlying page. - The scorecard’s history for food, core and the median of measures runs across both baskets, and its rows say so.
Measures
Year-on-year rates are computed from index levels by calendar month (a missing month leaves the comparison blank; it never shifts to the twelfth row), inside each base.
Effective weights. For a distribution measure, each item’s weight is its base weight times its price relative a year earlier, normalised. With these, the weighted mean of item rates equals the aggregate’s rate exactly (fixed-base Laspeyres). Checked each run: items rebuild MoSPI’s general index within 0.005% in every month and sector, and the weighted mean of item rates matches the general index’s rate within 0.007 points.
Exclusion measures, from items with official weights (base 2024) or from components (base 2012):
| Measure | Base 2024 | Base 2012 |
|---|---|---|
| Food and drink | Division 01 | Food and Beverages group |
| Fuel | Group 04.5, electricity, gas and other fuels | Fuel and Light group |
| Core: excluding food and fuel | Everything else | Everything else |
| Excluding food, fuel, gold and silver | Also drops items 13.2.1.1.1.01–02 (0.94% of the basket) | not available |
| Excluding food, fuel, petrol and diesel | Also drops items 07.2.2.1.1.01 and 07.2.2.2.1.01 | not available |
Core here uses official item weights, so it differs slightly from macro’s core_yoy, which used a fuel weight recovered before the item weights were found.
Weighted median and trimmed means of item (base 2024) or component (base 2012) year-on-year rates, with effective weights. Trims: 10% and 25% of weight from each tail, with partial weights at the boundaries. Why these: RBI’s own studies report symmetric trims from 5% to 25% a side, and the 10% and 25% bracket them; they were fixed before any result was seen. The base-2012 versions use 23 components (twelve food subgroups, clothing, footwear, six miscellaneous subgroups, and pan, housing, fuel as groups), the finest level the API serves for that base; housing’s combined index is filled from urban where blank (as in macro.md).
Breadth: the share of the basket, by effective weight, whose year-on-year rate is above 4% (RBI target), above 6% (ceiling) and below 2% (floor). 23 components to 2025, 358 items from 2026; not comparable, and charted as separate lines.
Contributions (percentage points): w_i (I_i,t − I_i,t−12) / Σ_j w_j I_j,t−12, summed to food, fuel and the rest (components to 2025, items from 2026). They add to the rebuilt rate; the residual against the published headline is at most 0.12 points (base 2012, rounding of published indices).
Seasonal adjustment (MoSPI publishes none). For each series, monthly log changes; for year Y, each calendar month’s factor is the mean, over the eight calendar years before Y (at least five with nine or more months), of that month’s change less its year’s mean; April 2020 to March 2021 excluded; factors centred to sum to zero. Concurrent: no factor uses data from Y or later. Factors for 2026 come from the old basket; for headline that is safe (above), for core it is not, so new-basket core 3- and 6-month rates are labelled rough. 3- and 6-month rates: the sum of seasonally adjusted log changes over the window, annualised (exp(12/h × sum) − 1).
The median of measures (in econvitals’ “ecumenical” spirit). Each month, the median of every reading available: headline and core at 3 months, 6 months and 12 months; and at 12 months either the three base-2012 group measures (to December 2025) or the five base-2024 item measures (median, two trims, the two extra exclusions; from January 2026). Each non-headline reading is put on headline’s footing by subtracting its mean gap to headline (same horizon) over the earlier months of the same basket; a reading enters unadjusted until 36 such months exist. Published from January 2017 (the first month with both seasonal factors and footing). The band on the charts is the middle half of the readings; the full range is quoted in words. The readings change in January 2026, so its line breaks there.
Expectations. The survey month is the observation date’s month. Realised inflation is headline twelve (or three) months after the survey month. The latest print a respondent could have seen is two months before the survey month: fieldwork runs early in the month, before that month’s CPI release around the 12th. Rounds were quarterly to 2016 and two-monthly from 2017.
States (when available): state general and food-and-beverages division indices, base 2024, year-on-year by calendar month; nothing is spliced to base 2012.
Pre-registered tests and results
- C70 (written before computing): each measure’s value as a forecast of headline twelve months later, origins January 2017 to September 2025, Diebold-Mariano against core. Core (RMSE 1.61 points) beat the headline random walk (2.34, p = 0.004); no underlying measure beat core; the median of measures was 20% worse (predicted: within 10%, graded a miss). Base-2012 measures only; the item measures are untestable until targets exist.
- C71: households’ one-year expectation was 5.4 points too high on average (t 11.6) and a worse forecast than the latest print (RMSE 5.8 against 2.3).
Full tables in site_calculations_spec.md. The overview leads with core as the single guide because of C70.
Checks run each time
- Items rebuild the general index (each sector) within 0.02%, else the step fails.
- Weighted mean of item rates against the general index’s rate (reported).
- Base-2012 components rebuild the general index (reported, about 0.08% at most, from rounding).
- My headline against MoSPI’s published rates: within 0.01 points since 2014.
- 2025 overlap of the two bases’ monthly changes: headline, food, core (reported).
Known limits
- No state CPI yet;
econ-datais ingesting it. The states page and its sitemap entry are hidden untileconomy/prices/statesexists. - Item history is short: year-on-year item rates exist only from January 2026. Base-2012 item indices (2014-2025, about 299 items) are an
econ-datatask; when they land, the base-2012 measures should move from 23 components to items, kept separate from base 2024. - Next release date comes from a constant (
CPI_RELEASES, MoSPI’s ARC, September 2026 revision) until the Data bank’s release-calendar capture is in place. - Professional forecasters (RBI SPF) are not yet held; the expectations page says so.
- First prints are provisional; every number is the current vintage.