1. What this site is / is not
It is an educational read-out of published market metrics, refreshed on a schedule and shown with its as-of dates. It is not a trading product, not a crash predictor, not a broker, and not personalised advice.
Ingest pulls FRED/Shiller into MariaDB on weekday evenings; pages read the database. Figures are the latest observation FRED has published, not a live tick. The header time is the last successful job, not the observation date on each card.
2. Composite heat score
Each component is converted to a percentile from 0 to 100 against its own available history. The heat score is the equal-weight mean of those percentiles. The current version uses no optimisation, no regime weighting and no back-fitting — the weights are equal because any other choice would need evidence we do not have.
Formula
heat = mean( pct(CAPE), pct(Buffett), 100 − pct(VIX), 100 − pct(HY OAS) )
VIX and high-yield spreads are inverted: low fear and tight credit are hot, not cold. The score is only published when at least three components have live observations.
The yield curve is excluded from the average. Inversion is a state, not a temperature, so 2s10s is shown separately as a fragility badge — currently +0.33 pp · Not inverted.
The Chicago Fed NFCI data is displayed for reference but is also excluded from the average.
Bands: Frozen 0–20, Cold 20–35, Mild 35–50, Warm 50–65, Hot 65–80, Boiling 80–100. The word is always printed next to the colour.
The Heat chart is reconstructed weekly temp_v1 from 2015 (expanding-window percentiles, CAPE and Buffett carried forward). The chart will contain live data from mid-September 2026 onwards.
3. Official CAPE vs daily CAPE estimate
The official Shiller CAPE is monthly and uses month-average prices. The daily estimate is that official ratio scaled by the latest S&P 500 close versus Shiller’s last nominal price P (option A). There is no separate CPI adjustment in the estimate.
Formula
cape_est = cape_official × (SP500_close / Shiller_P)
SP500_close is the is FRED SP500 close, Shiller_P nominal price is a monthly average
Two numbers are shown on purpose. When they diverge, the divergence itself is information about how fast prices have moved intra-month.
4. Buffett Indicator
Market capitalisation as a percentage of GDP, computed server-side as
NCBEILQ027S ÷ GDP. Several variants exist (total market vs
domestic listings; nominal GDP vs GNP; current-quarter vs trailing four
quarters); this build uses current-quarter nominal GDP. GDP is quarterly
and revised, so this component always lags.
(NCBEILQ027S is quoted in $ millions, GDP is quoted in $ billions)
5. Chicago Fed NFCI
The Chicago Fed National Financial Conditions Index
(NFCI) is a weekly summary of money, credit, leverage and
risk in US financial markets. Values above zero mean conditions are
tighter than their long-run average; values below zero mean they are
looser.
It is shown as an underlying gauge only. It is not included in the heat average: NFCI is a conditions index, not a valuation print, and averaging it with CAPE and Buffett would mix two different questions. High NFCI is stress, not “hot.”
Source: Federal Reserve Bank of Chicago via FRED series
NFCI. Weekly; the card as-of date is the latest FRED
observation, which can lag the calendar week.
6. FRED series table
| Series ID | Description | Frequency | Use |
|---|---|---|---|
| T10Y2Y | 10-Year minus 2-Year Treasury constant maturity spread | Daily | Fragility badge only |
| VIXCLS | CBOE Volatility Index, close | Daily | Inverted into heat |
| BAMLH0A0HYM2 | ICE BofA US High Yield Index option-adjusted spread | Daily | Inverted into heat |
| SP500 | S&P 500 daily close | Daily | CAPE estimate scale only; not in heat |
| NCBEILQ027S | Nonfinancial corporate equities, market value (Z.1) | Quarterly | Buffett numerator |
| GDP | US nominal gross domestic product | Quarterly | Buffett denominator |
| NFCI | Chicago Fed National Financial Conditions Index | Weekly | Card only; not in heat |
7. Data freshness and as-of dates
Components run on different clocks: CAPE official is monthly, the CAPE estimate and all daily FRED series refresh each business day, and GDP-based measures lag by a quarter plus revisions. Every figure prints its own as-of date; the header timestamp is the render/ingest time, not the age of the underlying data. Responses are cached and re-read from a database between updates.
8. Attribution and copyright
This product uses the FRED® API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. Series retrieved through FRED remain the property of their original publishers and are shown here for personal, non-commercial display.
Those sources include: ICE BofA US High Yield Index option-adjusted
spread data (BAMLH0A0HYM2); the Cboe Volatility Index® (VIX®) as
published in VIXCLS; S&P Dow Jones Indices LLC S&P 500®
closing levels (SP500); the Chicago Fed National Financial Conditions
Index (NFCI); Bureau of Economic Analysis GDP and the Federal Reserve
Board Z.1 equity stock (NCBEILQ027S); and Robert J. Shiller’s CAPE
dataset hosted by Yale University (ie_data.xls).
VIX® is a trademark of Cboe Global Markets, Inc. S&P 500® is a trademark of S&P Dow Jones Indices LLC. ICE BofA index data are used as redistributed by FRED and are not supplied or endorsed by ICE. Shiller data are used as published for non-commercial research-style display. Nothing on this site is an official publication of any of those organisations.
9. Failure modes
- High readings persist. CAPE sat in its top decile for most of the late 1990s; a reading of “Hot” in 1996 said nothing useful about 1997.
- Percentiles depend on the window. A short history makes ordinary levels look extreme.
- Low volatility and tight spreads read as hot, but they are also the normal state of a functioning market for long stretches.
- Structural change breaks comparability: accounting standards, index composition and buyback behaviour all shift the level of these gauges over decades.
- If a feed fails, that component falls back to a labelled placeholder rather than silently dropping out of the average.