High-Frequency Synthetic Distributions of Consumption, Income, and Wealth

Quarterly estimates from 1962 to 2024 combining functional data analysis and Bayesian state-space models

Christian Bayer (Bonn, CEPR, IZA, CESifo), Luis Calderon (Bonn), Moritz Kuhn (Mannheim, CEPR, IZA, CESifo)

Load the data

import pandas as pd

df    = pd.read_csv("https://www.distributionaldynamics.com/data/dd_series.csv")
items = pd.read_csv("https://www.distributionaldynamics.com/data/items/dd_items_SCF.csv")
use "https://www.distributionaldynamics.com/data/dd_series.dta", clear
* balance-sheet items (SCF), a separate file:
use "https://www.distributionaldynamics.com/data/items/dd_items_SCF.dta", clear
using CSV, DataFrames, Downloads
url   = "https://www.distributionaldynamics.com/data/"

df    = CSV.read(Downloads.download(url * "dd_series.csv"), DataFrame)
items = CSV.read(Downloads.download(url * "items/dd_items_SCF.csv"), DataFrame)

dd_series: one row per quarter, 1962Q3–2024Q1, with decile shares, totals and means per household of consumption, income and wealth.


Data Sources and Downloads

Five U.S. household surveys (C = consumption, I = income, W = wealth; *PSID wealth from 1984, consumption from 1999):

CPS
1967–2022 (I)
PSID
1968–2021 (I,W,C)*
CEX
1984–2021 (C,I)
SCF
1962–2022 (I,W)
SIPP
1983–2022 (I,W)
1962 2024

Main data

dd_seriesCSVStata
Synthetic microdata (dd_master)CSVStata
dd_tidy_longCSV

dd_tidy_long: tidy long format; groups (bottom 50 / next 40 / top 10, quintiles, deciles) by survey.

Balance sheets (DFA wealth groups)

All itemsCSVStata

*Stocks: next 40 and top 10 only. Compare: Fed DFA

Uncertainty

Microdata implicates12345

Main data are posterior point estimates; these files carry the posterior spread.

Model objects

Legendre coefficients, in-samplePSIDSCFCEXCPS 67–92CPS 93+SIPP 1SIPP 2SIPP 3
Legendre coefficients, average trendPSIDSCFCEXCPS 67–92CPS 93+SIPP 1SIPP 2SIPP 3

Survey inputs

Derived from the original surveys; the original providers’ terms apply.

Code

DD_data scriptsPythonJulia
Repositories (zip)DD_replicationDD_data

DD_replication: estimation code and replication package. DD_data: scripts that rebuild moments, microdata and bands.

Data: CC BY 4.0, free to use with attribution (please cite the paper). Code: MIT.


Inequality, quarter by quarter

Explore the synthetic distributional data across consumption, income, and wealth. Select a variable and metric, and show deciles or the bottom 50 / next 40 / top 10. Gray bands indicate NBER recession periods.

Variable
Metric
Groups
Show
Year range
Drag handles or use arrow keys to zoom · double-click to reset

Source: Bayer, Calderon & Kuhn (2026), PSID view. Decile groups D1 (bottom 10%) to D10 (top 10%); totals in trillions, means per household, both in 2019Q4 USD (CPI-U). Wealth starts in 1984 (PSID), consumption in 1999.

Joint distribution
4 fps
1999-Q2
X-axis: IncomeY-axis: ConsumptionZ-axis: Pop. Share
Quarter

Source: Bayer, Calderon & Kuhn (2026). Share of households in each pair of deciles. I × W: SCF view, 1962–2024; C × I and C × W: PSID view, 1999–2024.


From Microdata to Synthetic Distributions

We develop a new method for deriving high-frequency synthetic distributions of consumption, income, and wealth. The core of the method is to treat the distributional data as a time series of functions whose underlying factor structure follows a state-space model, estimated using Bayesian techniques. The method incorporates different sources of microdata regardless of their frequency and variable coverage.

1

Microdata

PSID, SCF, CEX, SIPP, and CPS — each with different frequency and variable coverage

2

Functional Representation

Quantile functions for marginals plus copula for joint dependence

3

Dimensionality Reduction

PCA on Legendre polynomial coefficients captures variation in a few factors

4

State-Space Model

Factor dynamics follow a VAR in companion form with aggregate covariates

5

Bayesian Estimation

MCMC with Kalman smoother produces posterior draws of the latent factors

6

Synthetic Distributions

High-frequency quarterly output: full distributions for all 247 quarters

State equation

$$\begin{bmatrix} F_t \\ Y_t \end{bmatrix} = \begin{bmatrix} \Phi_{FF} & \Phi_{FY} \\ \Phi_{YF} & \Phi_{YY} \end{bmatrix} \begin{bmatrix} F_{t-1} \\ Y_{t-1} \end{bmatrix} + \varepsilon_t, \qquad \varepsilon_t \sim \mathcal{N}(0, \Omega)$$

Observation equation

$$\tilde{\theta}^j_t = H^j_t \left( \alpha^j \, \hat{\Gamma}^{\text{MF}} F_t + \nu^j_{F,t} \right)$$

Here \(F_t\) are the latent distributional factors, \(Y_t\) are aggregate covariates, \(\hat{\Gamma}^{\text{MF}}\) is the factor loading matrix from PCA, and \(H^j_t\) is a selector matrix for each dataset \(j\). The model handles mixed frequencies through the time-aggregation parameter \(\alpha^j\).


Citation

Bayer, C., Calderon, L. and Kuhn, M. (2026). “Distributional Dynamics.” CEPR Discussion Paper 19829.

BibTeX

@techreport{BayerCalderonKuhn2026,
  author      = {Bayer, Christian and Calderon, Luis and Kuhn, Moritz},
  title       = {Distributional Dynamics},
  institution = {CEPR},
  type        = {Discussion Paper},
  number      = {19829},
  year        = {2026},
  url         = {https://www.distributionaldynamics.com}
}