| Metric | Sep 30 2025 | Dec 31 2025 | Mar 31 2026 | Today |
|---|---|---|---|---|
| Earnings Yield | 3.98% 13th pctile | 3.90% 9th pctile | 4.96% 72th pctile | 4.60% 55th pctile |
| Equity Risk Premium | -0.17% 12th pctile | -0.26% 9th pctile | 0.64% 50th pctile | 0.20% 30th pctile |
| 10yr Term Premium | +0.50 72th pctile | +0.57 85th pctile | +0.65 93th pctile | +0.75 98th pctile |
This monitor answers one question each week: how much are you being paid to own US stocks and long bonds right now, and how does that compare to the recent past? Three headline numbers in the table, with four charts below them.
The earnings the market expects over the next 12 months divided by the index price. It is the “yield” you earn from owning the S&P 500 — the mirror image of the forward P/E. Higher means cheaper stocks; lower means more expensive.
The earnings yield minus the 10-year Treasury yield — the extra return stocks offer over a “risk-free” government bond, i.e. your reward for taking equity risk. A wide ERP means stocks look cheap versus bonds; a thin or negative ERP means they do not.
The part of the 10-year yield not explained by expected Fed policy — the extra compensation investors demand for locking money into a long bond instead of rolling short-term bills. It rises when investors worry about inflation, deficits, or the supply of bonds.
Beside each number is its percentile since 2020 — where today sits within its own recent range. 50th is the middle; near 100th is unusually high; near 0 is unusually low. This is what turns a raw number into a “rich or cheap” read.
The headline valuation signal for stocks versus bonds. It has fallen from roughly +4.7% in 2021 to around zero today — the S&P now yields about the same as a 10-year Treasury, with none of its former cushion. When this line is high, equities are generously priced relative to bonds (a tailwind); when it is near zero or negative, you are taking equity risk for little or no premium.
This tells you why long rates move. When the 10-year yield rises, this separates “the market expects the Fed to stay tight” from “investors demand more to hold duration” (this line). It has climbed from negative in 2020-21 to near the top of its range today — bond investors now want real compensation for duration, reflecting fiscal and inflation uncertainty. A rising term premium pressures both long rates and equity valuations independently of what the Fed does.
The other two charts add context. The 12-month forward P/E is the earnings yield flipped over — a P/E of 20 is a 5% yield — so it rises as stocks get more expensive and is the most familiar way to see valuation. The 10-year Treasury yield is the risk-free anchor that the equity risk premium is measured against; when it climbs, stocks have to work harder to justify their premium.
The combination is the point. When the ERP is thin and the term premium is high — roughly where we are now — equity risk is barely compensated while bond-duration risk is richly compensated. That mix tends to favour caution on stretched equity valuations and makes long-duration bonds comparatively more interesting.
Each metric’s percentile ranks its current value against its own history since December 2020
(the PERCENTRANK convention, mean handling of ties) — the same method the source
sheet uses, reproduced to the decimal.
| Series | Source | Notes |
|---|---|---|
| S&P 500 level | yfinance ^GSPC | daily close |
| Forward EPS | S&P Global bottom-up operating EPS (.xlsx) | quarterly estimates rolled to next-12-month |
| EY / ERP history | Bloomberg real-time forward earnings | chart & percentile baseline (see C) |
| 10-year yield | FRED DGS10 | constant-maturity par yield |
| 10-year term premium | FRED THREEFYTP10 | Federal Reserve Kim-Wright model |
A forward earnings yield cannot be rebuilt point-in-time from a single S&P file, because past quarters in that file carry realized earnings — using them would give history an unfair hindsight advantage and distort every percentile. So the earnings yield and ERP are anchored to Bloomberg’s real-time forward-earnings history. Any dates after the Bloomberg file’s end are extended with S&P operating EPS, shifted by a small calibration offset measured over the overlap so the two bases line up at the splice. The offset is logged on every run.
Percentiles are ranked since December 2020 (adjustable). The S&P operating-EPS file is read from a local copy — S&P’s server blocks automated downloads, so the file is refreshed manually every few weeks. The Kim-Wright term premium is published with roughly a one-week lag, so its “today” value is the most recent available reading. Everything else is current to the prior session.
python3 sp500_valuation_monitor.py (add --no-post to build locally without deploying or posting).chris-sp500-valuation.pages.dev, redeployed each run.