Valuation: P/E, CAPE, dividend yield and yield gaps
Code: pipeline/tipsheet/compute/valuation.py, publish/valuation.py.
Bundles: valuation/*.
Coverage: 22 indices, listed in CORE_INDICES.
Inputs
- NSE daily P/E, P/B and dividend yield (
nifty_index_valuations). Nifty 50, Nifty 500 and Nifty IT go back to 1999. Others start at their launch. - Index levels: price and total return, from NSE.
- CPI: India Data Hub
INCPBLCPIA12M, the spliced CPI with 2012 = 100.- We checked it against MoSPI’s 2024-base series. The level ratio is constant from 2013 to 2026, and 2026 year-on-year rates match within 0.01 pp.
- Of about 62 identical vintages, the latest is used.
- 10-year G-sec yield: monthly, from India Data Hub.
- Household inflation expectations: 12 months ahead, from RBI’s survey via India Data Hub.
CAPE
- Implied earnings per share: close ÷ P/E.
- Real earnings: each month’s EPS is restated in today’s rupees using CPI.
- CAPE: today’s real price ÷ the average real EPS over the 120 complete months before this one. It needs 10 years of P/E history, so Nifty 50’s CAPE starts in 2009.
NSE’s 2021 switch from standalone to consolidated earnings
- What happened: on 2021-03-31, NSE moved index P/E from standalone to consolidated earnings. Nifty 50’s P/E fell from 40.4 to 33.2 in a day while the index moved about 1%.
- The adjustment: the factor is measured per index on that date, as consolidated EPS ÷ standalone EPS. Earlier EPS is scaled by it.
- When the adjustment is withheld:
- The adjustment is trusted only if the factor lies between 0.85 and 1.35.
- Outside that band, scaling ten years of history by one day’s ratio isn’t credible. So the adjusted CAPE is withheld, and only the unadjusted CAPE is published.
- Examples: Auto 0.27, Metal 0.53, Realty 0.26, Midcap 100 2.17. Auto’s and Metal’s factors are below 1 because of real overseas-subsidiary losses.
- What we publish: both series,
cape(consolidated basis) andcape_unadjusted. - P/B shows no break at the switch, so its full history is used as is.
Check against IIMA
The comparison is with Jacob and Raju’s CAPE at IIM Ahmedabad, capeindia.iima.ac.in (cite: Jacob and Raju 2024, SSRN 4911989).
- Our unadjusted Nifty 500 CAPE matches theirs:
- correlation 0.995 over 212 months
- median ratio 1.007
- IIMA does not adjust for the 2021 switch.
- Where today sits: on a consistent consolidated basis, Nifty 500’s CAPE in August 2026 was at the 85th percentile since 2009. IIMA’s series puts it at the 78th.
- Our adjustment assumes the consolidated/standalone gap was constant. If the gap was smaller in the 2000s, the early years are over-adjusted.
- So the truth likely lies between the two. Both are published, with this explanation.
Dividend yield
- NSE changed its dividend-yield method on the same date (2021-03-31). Persistent jumps appear that differ by index: FMCG 1.32 → 2.74%, Auto 1.66 → 0.57%.
- The primary series is
dividend_yield_tri: the trailing 250-session yield implied by the gap between the total-return and price indices. It is computed one way throughout.- Over long periods it tracks NSE’s figure (median ratio 0.9–1.0).
- NSE’s own figure is kept alongside.
Yield gaps
| Measure | Definition |
|---|---|
| Earnings yield | 100 ÷ P/E on the consolidated basis (since 2026-10-03; NSE’s raw figure is kept as earnings_yield_nse_pct, which steps up about 20% on 2021-03-31) |
| Nominal yield gap | Earnings yield − 10-year G-sec yield |
| Real yield gap | CAPE earnings yield (100 ÷ CAPE) − real 10-year G-sec yield |
| Real G-sec yield (CPI) | 10-year G-sec yield − CPI inflation, year on year |
| Real G-sec yield (survey) | 10-year G-sec yield − households’ 12-month inflation expectation |
Percentiles
- The snapshot reports each measure’s percentile within its own history, with the date that history starts.
- P/E percentiles use the consolidated basis. Where the adjustment is withheld, they use only the history since the switch.
- CAPE percentiles need at least 60 months of CAPE.
Audit notes (2026-10-03)
- The earnings yield and the yield gaps now use the consolidated-basis P/E (register V3). Before this, they inherited NSE’s 2021 break, and so did C1, the lab’s yield-gap glide and the yield-gap dynamic SIP.
- The valuation step writes
valuation_nifty_50.parquetandvaluation_nifty_500.parquetat the top of the derived folder again (register V7). Other modules read those copies, and they had stopped updating on 2026-09-28. - CPI timing: the historical CAPE deflates each day’s price by that month’s CPI, which is published around the 12th of the next month. The look-ahead is at most one month’s inflation on the level, and today’s value uses the last published CPI.
- Valuation and later returns: see D1 in
docs/research/audit_deepening_spec.md. Starting valuation has gone with later returns, but no predictor passes once overlap, small-sample bias and out-of-sample testing are accounted for.
Index return decomposition (2026-10-04)
Code: compute/return_decomposition.py; published with the valuation step.
Bundles: valuation/returns/<index>_monthly, valuation/returns_snapshot.
For same-date positive price index P, published P/E M, and total-return index T, index-implied earnings E = P/M. Between two observations:
100 × Δln(T) = 100 × Δln(E) + 100 × Δln(M) + 100 × Δln(T/P).
These are cumulative log-return points, not ordinary percentage-point shares.
The ordinary return is 100 × (exp(total_log/100) − 1) and is shown separately.
The three components reconcile before rounding. No index levels are published.
- The chart samples trailing calendar-year windows monthly, retaining actual observation dates. The current month may be partial. The table also offers cumulative three- and five-year windows, without annualisation.
- The start is the last joint observation on or before the anniversary, no more than seven calendar days earlier. Missing, non-positive or non-finite endpoint values withhold the whole decomposition. Inputs never use independently selected dates.
- All windows crossing 31 March 2021 are withheld, even for indices whose CAPE splice is accepted. This decomposition uses raw published P/E within each earnings-method regime; it does not turn a one-day standalone/consolidated adjustment into observed profit growth.
- Index-implied earnings include changes in constituent membership, weights and NSE earnings definitions. They are not constant-company or organic earnings. T/P captures the dividend-reinvestment convention, not a cash dividend yield or a separately measured dividend contribution.
- This is a retrospective accounting identity, not causal attribution or a trading signal. It uses the current source vintage and does not claim point-in-time availability.
Company-level earnings attribution, constant-membership comparisons, and splits
between margin, revenue, dilution and buybacks remain dependent on missing inputs
listed in docs/plans/DATA_REQUIREMENTS_2026-10-04.md (DR01–DR04).
Country equity risk premium (2026-10-05)
The valuation page reproduces Damodaran’s rating-based country ERP from his July 2026 workbook. Edition date: 1 July 2026; the workbook explicitly records default-spread corrections on 9 July. Retrieval is recorded separately. This corrected edition must not be treated as information available on 1 July in a backtest. No daily or historical ERP series is inferred from this snapshot.
ERP = mature-market ERP + rating-based default spread × equity/bond volatility multiplier. India: 4.20% + 1.7498812238% × 1.5544955263 ≈ 6.9202%. The published country component is approximately 2.7202%. The exact workbook multiplier and spread, rather than their rounded display values, drive all calculations. All 156 rows in the rating-based country table reconcile to cached source ERP and country-premium results within 0.001 percentage point. The US is excluded from this calculation universe because its ERP is estimated directly from market cash flows; its separate 4.42% benchmark is retained in the bundle. The separate PRS table for unrated countries is outside this implementation.
This premium measures country-adjusted required compensation above a default-free rate. It is not a Nifty-price-implied return, a yield gap, a rupee cost of equity, or a realised-return forecast. Company country exposure depends on operations rather than incorporation alone. No G-sec yield or restricted bond-yield transformation is published by this feature.
Source: https://pages.stern.nyu.edu/~adamodar/pc/datasets/ctrypremJuly26.xlsx
Method: https://pages.stern.nyu.edu/~adamodar/New_Home_Page/datafile/ctryprem.html
Captured workbook and provenance: docs/reference/damodaran/. The SHA-256 is
verified before extraction. Excel cached results, shared strings, table headers
and the workbook’s 1904 date epoch are respected. Computation performs no
network fetch. To update, capture the author’s next dated workbook unchanged,
record its URL, retrieval time and SHA in latest.json, and run the
country_erp step. The parser rejects disabled adjustments, changed table
headers, bad checksums, invalid inputs and unreconciled results. Preserve
earlier captures and source correction notes; do not mix vintages.