Dynamic Factor Models & Weekly Economic Trackers
Session 2
Suppose it is Thursday morning and weekly initial unemployment claims have just been released above the model’s expectation. Continued claims, released in the same report, came in close to expectation. Earlier in the week, bank credit and consumer loans moved sideways. Session 1 tells us exactly how any one of these releases should update an estimate of current activity. It does not tell us what to do when four of them speak at once and do not fully agree, let alone the ten weekly series behind the published Weekly Economic Index or the roughly 130 monthly series of a research panel.
The temptation is to treat the panel’s correlation as a nuisance: pick the best indicator, or average everything. This session develops the opposite view. The correlation across series is the signal. A small number of common forces move employment, production, sales, and credit together, and a model built around that fact, the dynamic factor model, turns a wide, ragged, correlated panel into exactly the kind of state-space system whose filtering, uncertainty, and news accounting Session 1 already solved.
By the end of the session, you should be able to:
- write a static factor model, state its assumptions, and split any series’ variance into a common and an idiosyncratic share;
- explain what a factor model does and does not identify, and choose a normalization deliberately;
- estimate factors by principal components, explain when averaging over many series works and when correlated noise defeats it, and choose the number of factors;
- cast a dynamic factor model in state space so that the Kalman filter delivers ragged-edge factor estimates, uncertainty bands, a likelihood, and a release-level news decomposition, and select among the three standard estimation strategies; and
- build a weekly economic tracker from public data and criticize its design: transformation, calibration window, scaling, and failure modes.
The session assumes Session 1 in full: the state-space form, the Kalman filter and smoother, missing-observation handling, the aggregation weights, and the Gaussian conditioning lemma. It also assumes basic facts about covariance matrices. Eigenvalues appear in one specific role, and the meaning needed for that role is explained where it arises. The Practicum 1 build is used as a recurring example; its numbers are quoted as computed there.
1 From One Indicator to a Panel
1.1 Three Ways to Fail with Many Series
Session 1’s filter needs a model before it can weigh evidence: given T, Z, Q, and H, the gain follows. With one indicator those matrices could be written down by hand. A production nowcast does not have one indicator. The Federal Reserve staff track hundreds of series; the FRED-MD research panel1 curates about 130 monthly indicators for exactly this kind of work (McCracken and Ng, 2016). Before building the right model for such a panel, it is worth seeing precisely how the obvious shortcuts fail.
Use only the best series. Choosing a single indicator discards every other series’ information. Session 1’s machinery then applies, but the estimate inherits all of that indicator’s idiosyncrasies: every strike, definitional change, or sampling problem in the chosen series moves the activity estimate one for one.
Average everything. An equally weighted average at least uses the panel, but it ignores what Session 1 taught: series differ in how much of their movement is information and how much is noise. Averaging also has no answer for the ragged edge2: an average over whichever series happen to be available changes its meaning from week to week.
Regress GDP on the panel. Ordinary regression asks the data to estimate one coefficient per series. With quarterly GDP as the dependent variable there are perhaps a hundred usable observations and, in a wide panel, more regressors than data points. Worse, the regressors are strongly correlated with one another, so the coefficients that fit best are erratic combinations with no stable interpretation. The regression treats the panel’s correlation as collinearity: a difficulty to be fought.
All three failures point at the same missing ingredient: a model of why the series are correlated.
1.2 Comovement Is the Signal
The empirical fact that rescues the wide panel is comovement: when aggregate activity turns, employment, production, income, sales, freight, and credit turn together, not identically and not simultaneously to the week, but visibly and persistently. Burns and Mitchell (1946) built the NBER’s business-cycle chronology on that observation long before it had a statistical form. Sargent and Sims (1977) gave it one, showing that a small number of common “index” processes account for the bulk of the covariation among U.S. aggregates. The modern statement is blunt: the business cycle is low-dimensional. A handful of common forces, often a single one, drive the shared movement of everything we can measure.
Figure 1 shows the claim in stylized form. Eight standardized series share one underlying activity factor; each adds its own noise. No single series is a clean reading, yet the common swing is unmistakable across the panel, except in the last series, which barely participates.
If comovement is real, then the correct response to “too many series” is not selection but aggregation with a model: treat every series as a noisy witness to a small common state, and let the model decide how much each witness’ testimony is worth. You have already seen this succeed in miniature. The Practicum 1 build combined four public weekly series into one factor and reproduced the official ten-series Weekly Economic Index with correlation 0.90. The rest of this session builds the machinery behind that result, and explains the episodes where the four-series version failed.
The first step is the smallest model in which cross-series correlation is signal rather than nuisance.
2 The Static Factor Model
2.1 One Equation, Two Kinds of Variation
Let x_\tau be an N\times1 vector of observed series for reference period \tau, each already transformed to be standardized3 and stationary. The static factor model writes each series as a linear combination of k\ll N common factors plus a series-specific remainder:
x_\tau=\Lambda f_\tau+e_\tau . \tag{1}
Read Equation 1 one object at a time. The k\times1 vector f_\tau collects the common factors: latent forces, in the sense of Session 1’s states, that many series feel at once. The N\times k matrix \Lambda holds the factor loadings; its ith row \lambda_i' says how strongly, and with what sign, series i responds to each factor. The remainder e_\tau is the idiosyncratic component: sampling error, sector-specific shocks, definitional quirks: everything in series i that is not broadly shared. “Static” refers to the equation’s form, not to the data: the factors may be highly persistent, but each period’s observation depends only on that period’s factor.
The model’s assumptions parallel Session 1’s, and it is worth stating them with the same care.
B1 (Orthogonality). Factors and idiosyncratic components are uncorrelated with each other at all leads and lags. This is what makes the split in Equation 1 meaningful: it lets every covariance between two different series be carried by the factors, and it is used each time we decompose a variance or compute a factor-extraction weight. If a “series-specific” shock in fact moves the factor, the accounting between common and idiosyncratic variation breaks down.
B2 (Weak idiosyncratic dependence). Idiosyncratic components may be correlated across series, but only weakly: no group of series shares enough leftover comovement to imitate a factor. The special case with fully uncorrelated idiosyncratics is the exact factor model; the realistic case, which tolerates limited cross-correlation, is the approximate factor model of Bai and Ng (2002). The assumption is used by every argument that averages noise away across series. It is genuinely restrictive: initial and continued unemployment claims share labor-market reporting noise that no factor should be forced to absorb, and Section 4 quantifies what such shared noise costs.
B3 (Pervasiveness). Each factor loads on a non-vanishing fraction of the series: as the panel grows, \Lambda'\Lambda/N stays bounded away from zero. This is what makes a factor recoverable from averages: a “factor” visible in only three series of a hundred cannot be separated from their idiosyncratic noise. It is used in the consistency results of Section 5.
Together, B1–B3 say what the words “common” and “idiosyncratic” mean, and they are diagnostic claims as much as conveniences: loadings and residual correlations estimated later will tell us when they are inadequate.
2.3 What the Model Says About Data
A latent-variable equation cannot be checked directly, so it is worth asking what Equation 1 implies about observable quantities. Take the covariance matrix of the panel under B1:
\Sigma =\operatorname{Var}(x_\tau) =\Lambda\Lambda'+\Psi, \qquad \Psi=\operatorname{Var}(e_\tau). \tag{3}
Read Equation 3 as the model’s entire observable content. Every covariance between two different series is carried by the low-rank piece \Lambda\Lambda': for an exact factor model with one factor, \operatorname{Cov}(x_{i\tau},x_{j\tau})=\lambda_i\lambda_j for i\neq j. The factor model is therefore a restriction on a covariance matrix: the claim that N(N-1)/2 distinct cross-series covariances can be reproduced by Nk loadings. That is a strong compression for large N, and it is testable: residual covariances that the factors cannot explain are evidence against B2, in the same way that autocorrelated innovations were evidence against Session 1’s assumptions.
Table 1 collects the notation used in this session. As in Session 1, each symbol is introduced again where it does its work.
| Symbol | Meaning |
|---|---|
| x_\tau | N\times1 vector of standardized observed series for reference period \tau |
| N,\ n | Number of series (cross-section) and number of time periods |
| f_\tau | k\times1 vector of common factors; k is the number of factors |
| \Lambda,\ \lambda_i' | N\times k loading matrix and its ith row |
| e_\tau,\ \Psi | Idiosyncratic components and their covariance matrix |
| \kappa_i | Common share of series i; \kappa_i=\lVert\lambda_i\rVert^2 for standardized data |
| A_1,\ldots,A_p,\ u_\tau,\ \Sigma_u | Factor VAR coefficients, factor shocks, and their covariance |
| \rho_i,\ \varepsilon_{i\tau},\ \sigma^2_i | Idiosyncratic AR(1) coefficient, shock, and shock variance |
| w | Cross-sectional weights applied to the panel to extract a factor |
| \hat\mu_1\geq\hat\mu_2\geq\cdots | Eigenvalues of the sample covariance matrix of the panel |
| T,R,Z,Q,H,\ \alpha_\tau | The state-space system and state vector, exactly as defined in Session 1 |
| r | Release date defining a data vintage, exactly as in Session 1 |
The model now defines what a factor is. It does not yet say which factor: the same data admit many loading–factor pairs, and the next section separates what is identified from what is chosen.
3 Rotation: What the Data Cannot Decide
3.1 Scale and Sign First
Start with one factor, because the whole problem is already visible there. If (\lambda_i, f_\tau) reproduces the data, so does (c\lambda_i,\ f_\tau/c) for any c\neq0: double every loading and halve the factor, and every product \lambda_i f_\tau is unchanged, and with it every fitted value and every covariance. Taking c=-1 flips the factor’s sign and every loading’s sign at once. Nothing observable distinguishes these representations. The factor’s scale and sign are not properties of the data; they are conventions the modeler must supply.
Figure 3 displays three of these representations. The fitted series is identical in all three panels. The “factor” is not.
3.2 The General Statement
With k factors the ambiguity is larger. For any invertible k\times k matrix M,
\Lambda f_\tau=(\Lambda M^{-1})(M f_\tau),
so the pair (\Lambda M^{-1},\,Mf_\tau) fits identically. The factors are identified only up to an invertible transformation: in the factor-analysis tradition, a rotation, though M need not be a rotation in the geometric sense. What is identified is the factor space: the set of linear combinations of the series that the factors span, and therefore the common component \Lambda f_\tau of each series.
This is not a defect to engineer away. It is a fact to manage with a normalization: a set of restrictions that selects one representative from each equivalence class. The standard choice, the one principal components imposes automatically, is \operatorname{Var}(f_\tau)=I_k with \Lambda'\Lambda diagonal, plus a sign convention for each factor. The Practicum 1 build’s sign rule, “the factor correlates positively with activity,” is exactly such a convention.
Two consequences deserve to be stated plainly, because both change how results are reported:
- Factors have no intrinsic units. “The factor fell by 0.3” means nothing until the factor is scaled against something interpretable. This is why the P1 build regressed GDP growth on its factor before publishing a number, and why Section 9 treats that scaling step as part of the model.
- Interpretation is earned, not derived. Calling the first factor “real activity” is justified by inspecting its loadings and its behavior over known episodes, not by the algebra, which would be equally satisfied by the factor’s negative.
With a normalization fixed, the model is finally specific enough to use. The natural first question is the Session 1 question: given the model’s parameters, how should the data revise our estimate of the latent factor?
4 The Factor as a Weighted Testimony
4.1 Two Witnesses, One Update
Take the smallest interesting case: one factor, two standardized series, and loadings treated as known. Let
f\sim\mathcal N(0,1), \qquad x_i=\lambda_i f+e_i, \quad \lambda_1=\lambda_2=0.8, \quad \sigma^2_{e,1}=\sigma^2_{e,2}=0.36,
with independent idiosyncratic noise, so each series has common share \kappa=0.64 by Equation 2. Suppose the two series are observed at x_1=-1.5 and x_2=-0.5: one witness reports conditions well below normal, the other only mildly below.
This is a job for Session 1’s Gaussian conditioning lemma, with f in the role of the unobserved block. The joint distribution implied by the model is
\begin{pmatrix}f\\x_1\\x_2\end{pmatrix} \sim\mathcal N\!\left( \begin{pmatrix}0\\0\\0\end{pmatrix}, \begin{pmatrix} 1&0.8&0.8\\ 0.8&1&0.64\\ 0.8&0.64&1 \end{pmatrix} \right).
The blocks come straight from Equation 3: each series has unit variance, their covariance is \lambda_1\lambda_2=0.64, and each covaries with the factor by its loading. Applying the lemma, the weight vector is w'=\Sigma_{fx}\Sigma_{xx}^{-1}, and the arithmetic gives
w_1=w_2=\tfrac{20}{41}\approx0.488, \qquad \mathbb E[f\mid x_1,x_2] =\tfrac{20}{41}(-1.5)+\tfrac{20}{41}(-0.5) =-\tfrac{40}{41}\approx-0.976, \tag{4}
with conditional variance
\operatorname{Var}(f\mid x_1,x_2) =1-w'\Sigma_{xf} =\tfrac{9}{41}\approx0.220 .
Compare the one-witness case. Observing only x_1=-1.5 gives gain \lambda_1/(\lambda_1^2+\sigma^2_{e,1})=0.8, hence \mathbb E[f\mid x_1]=-1.2 and conditional variance 0.36. The second witness did two things. It pulled the estimate up, from -1.2 to -0.976, because its milder reading is evidence that part of the first series’ plunge was idiosyncratic. And it cut the conditional variance from 0.36 to 0.220: two noisy witnesses, properly weighted, are more precise than one.
4.2 The Precision View
The same update can be computed a second way, and the second way is the one that scales. With independent idiosyncratic noise the posterior precision4 adds one term per witness:
\operatorname{Var}(f\mid x_1,\ldots,x_N)^{-1} =1+\sum_{i=1}^{N}\frac{\lambda_i^2}{\sigma^2_{e,i}}, \qquad \mathbb E[f\mid x] =\operatorname{Var}(f\mid x)\sum_{i=1}^{N} \frac{\lambda_i}{\sigma^2_{e,i}}\,x_i . \tag{5}
Read Equation 5 as a courtroom rule. Each witness contributes information \lambda_i^2/\sigma^2_{e,i}: testimony counts for more when the witness is more exposed to the truth (large loading) and less erratic (small idiosyncratic variance). Each observed value enters the estimate weighted by \lambda_i/\sigma^2_{e,i}, so a series with a negative loading correctly enters with a negative weight, and a series with a near-zero loading is correctly ignored no matter how dramatic its movements. For the numbers above, the posterior precision is 1+2(0.64/0.36)=41/9, reproducing \operatorname{Var}=9/41 exactly.
Extraction, in other words, is a cross-sectional regression: at each date, the panel is regressed on the loadings, with each series weighted by its precision. The time dimension plays no role yet; one cross-section is one sample.
4.3 More Witnesses, and the Blessing of Dimensionality
Now let the panel grow. With N identical independent witnesses, Equation 5 gives
\operatorname{Var}(f\mid x_1,\ldots,x_N) =\frac{1}{1+N\lambda^2/\sigma^2_e} \;\longrightarrow\;0 \quad\text{as }N\to\infty .
Every additional series is another vote, its idiosyncratic error independent of the others, and the noise averages away. In a wide enough panel the factor stops being latent in any practical sense: the cross-section alone pins it down. This is the blessing of dimensionality: the reversal by which the panel’s width, the very thing that broke regression in Section 1, becomes the source of statistical power. It is also the intuition behind the consistency results for principal components in Section 5, which make the argument without assuming the loadings are known.
The blessing has a condition attached, and it is B2. Suppose the witnesses are not independent: each pair of idiosyncratic components shares correlation \rho_e5. Averaging then removes only the independent part of the noise. The average of N such witnesses has idiosyncratic variance \sigma^2_e\left[(1-\rho_e)/N+\rho_e\right]\to\sigma^2_e\rho_e, so the posterior variance no longer goes to zero:
\operatorname{Var}(f\mid x_1,\ldots,x_N) \;\longrightarrow\; \frac{1}{1+\lambda^2/(\sigma^2_e\rho_e)} \quad\text{as }N\to\infty . \tag{6}
The limit is worth restating without symbols: an unlimited supply of witnesses from one sector is worth exactly 1/\rho_e independent witnesses. With \rho_e=0.25, an infinite panel of correlated series carries the same information as four clean ones; for the anchor values \lambda=0.8, \sigma^2_e=0.36, both give posterior variance 9/73. This is the formal content of a lesson the P1 journal learned empirically: a panel of ten series from three sectors is not a ten-witness panel, and adding a fifteenth series from an already-crowded sector adds almost nothing. Boivin and Ng (2006) document the practical force of this point: larger panels assembled without regard to idiosyncratic correlation can worsen factor estimates.
Figure 4 traces both curves.
Everything in this section conditioned on known loadings. In practice \Lambda must be estimated from the same panel, and the natural estimator turns out to implement precisely this averaging logic.
5 Principal Components
5.1 The Least-Squares Problem
Stack the standardized panel as an n\times N matrix X, one row per period, one column per series. If both the loadings and the factor path are unknown, the least-squares approach chooses them to fit the panel as closely as possible:
\min_{\{\lambda_i\},\{f_\tau\}} \;\sum_{i=1}^{N}\sum_{\tau=1}^{n} \left(x_{i\tau}-\lambda_i' f_\tau\right)^2 , \tag{7}
subject to the normalization of Section 3, without which the problem has no unique solution. This is principal components in its regression form. For one factor the solution has a clean characterization: the optimal weights w form the first eigenvector6 of the sample covariance matrix of the panel, and the estimated factor is the weighted cross-sectional average
\hat f_\tau=w'x_\tau . \tag{8}
The derivation is one concentration step: for a fixed factor path, the best loading for each series is an ordinary regression coefficient; substituting it back turns Equation 7 into the problem of choosing the single direction in series-space that captures the most panel variance, which is what the first eigenvector is. In computation the whole object comes at once from the singular value decomposition7 of X: the first right singular vector is w, and the share of panel variance the factor explains is \hat\mu_1/\sum_j\hat\mu_j. Further factors, if wanted, are the subsequent eigenvectors, orthogonal by construction: the normalization \Lambda'\Lambda diagonal made real.
Notice what Equation 8 is. It is a weighted average of witnesses, with the structure of Equation 5, and with weights estimated from the panel’s own covariances rather than supplied by hand. A series that comoves strongly with the rest of the panel earns a large weight; a series that moves alone earns a weight near zero. The estimator discovers the courtroom rule.
5.2 The P1 Build as a Worked Instance
The Practicum 1 reference build runs exactly this computation on four public weekly series (each transformed and standardized; the transformation is the subject of Section 9). Its estimated weights, computed on the pre-2020 calibration sample, are worth reading like regression coefficients:
| Series | Weight | Reading |
|---|---|---|
| Initial claims (sign-flipped) | 0.69 | High common share; carries the factor |
| Continued claims (sign-flipped) | 0.69 | High common share; carries the factor |
| Consumer loans | 0.20 | Weakly cyclical in year-over-year terms |
| Bank credit | −0.08 | Nearly acyclical; correctly ignored |
The near-zero weight on bank credit is not a failure. Banks’ balance sheets expand in panics as firms draw committed credit lines, so the series is nearly acyclical in year-over-year terms, and the estimator, seeing no comovement with the rest of the panel, correctly declines to use it. A “wrong” loading is information about the data; listen to it before deleting the series. The concentration of weight in the two claims series is also informative, and less comfortable: it says the four-series factor is mostly a labor-market factor. That observation returns with force in Section 9.
5.3 Why Averaging Works Without Knowing the Loadings
Two classical results turn principal components from a heuristic into an estimator with guarantees. First, consistency in both dimensions: as N and n grow, the estimated factor space converges to the true one, and the convergence survives the weak idiosyncratic correlation of B2 (Bai and Ng, 2002; Stock and Watson, 2002). The mechanism is the blessing of dimensionality from Section 4: each series is another noisy vote, and pervasiveness (B3) guarantees the votes keep coming. Second, a rule for choosing k: the information criteria8 of Bai and Ng (2002) penalize additional factors at a rate calibrated to the panel’s two dimensions, so minimizing them estimates the number of factors consistently.
Practice adds two amendments. The criteria are the referee, but parsimony is the prior: in U.S. aggregate data, one or two factors carry the business cycle, and a marginal factor tends to pick up sectoral detail: a second factor often loads on housing or finance. And no criterion substitutes for inspecting the scree plot9 and the loadings: a factor whose loadings have no economic pattern is usually a symptom of B2 failing, not a discovery.
5.4 What Principal Components Cannot Do
Principal components is static and complete-data, and both words are load bearing. It has no notion of factor dynamics: yesterday’s factor does not inform today’s estimate, there are no forecasts, and persistence in the data is wasted. It has no native treatment of missing observations: the SVD needs a balanced panel10, so the ragged edge, the defining feature of real-time data, forces either deleting incomplete rows or imputing them. And it produces no uncertainty bands: the factor estimate arrives without a conditional variance, so there is nothing to widen when data are thin and nothing from which to compute news weights.
All three absences point in the same direction. Dynamics, missing data, and uncertainty are exactly what Session 1’s state-space machinery provides. The factor model must be put in state space.
6 The Dynamic Factor Model
6.1 Dynamics for the Factors, and for the Noise
A dynamic factor model keeps the measurement idea of Equation 1 and adds time-series structure to both unobserved pieces:
\begin{aligned} x_\tau &= \Lambda f_\tau + e_\tau,\\ f_\tau &= A_1 f_{\tau-1}+\cdots+A_p f_{\tau-p}+u_\tau, &u_\tau&\sim\mathcal N(0,\Sigma_u),\\ e_{i\tau} &= \rho_i\,e_{i,\tau-1}+\varepsilon_{i\tau}, &\varepsilon_{i\tau}&\sim\mathcal N(0,\sigma^2_i), \end{aligned} \tag{9}
with the \varepsilon_{i\tau} independent across series. The factor equation is a vector autoregression11 capturing the business cycle’s persistence: this month’s activity predicts next month’s. The idiosyncratic equations give each series’ private component its own persistence: a strike or a definitional break does not vanish in one week. Setting k=1, p=1, and \rho_i\neq0 already produces a serious nowcasting model.
Why must the idiosyncratic dynamics be modeled at all? Because Session 1’s assumptions demand it. If e_{i\tau} is serially correlated and left in the measurement error, assumption A2 (serially independent measurement noise) fails, and the filter’s innovations remain forecastable. Session 1’s discussion of that assumption already named the repair: persistence in the errors “should be modeled as additional states.” The dynamic factor model takes its own advice.
6.2 The State-Space Form
Stack the factor and every idiosyncratic component into the state. For the one-factor, first-order case,
\alpha_\tau= \begin{pmatrix} f_\tau\\ e_{1\tau}\\ \vdots\\ e_{N\tau} \end{pmatrix}, \qquad T=\begin{pmatrix} a&&&\\ &\rho_1&&\\ &&\ddots&\\ &&&\rho_N \end{pmatrix}, \qquad Z=\begin{pmatrix}\Lambda & I_N\end{pmatrix}, \qquad H=0, \tag{10}
with R=I_{N+1} and Q=\operatorname{diag}(\sigma^2_u, \sigma^2_1,\ldots,\sigma^2_N). Check the dimensions before reading further: the state has N+1 elements, T is (N+1)\times(N+1) and diagonal, and Z is N\times(N+1): each measurement row picks up the factor through its loading and its own idiosyncratic state through the identity block. A factor VAR(p) replaces the single a with a kp\times kp companion block, exactly as in Session 1’s AR(p) construction.
The striking entry is H=0: the measurement equation is exact. Nothing has been swept under the rug: the measurement noise has been promoted into the state, where the filter can model its persistence instead of assuming it away. The innovations remain perfectly well defined, because uncertainty about the state still flows into every predicted observation through Z.
Once Equation 9 is written as Equation 10, everything Session 1 built applies without modification, and it is worth an explicit inventory. One forward pass of the Kalman filter now delivers:
- the factor estimate \mathbb E[f_\tau\mid Y_\tau] with a conditional variance, the uncertainty band principal components could not produce;
- forecasts of the factor, and hence of every series, through the factor VAR;
- the likelihood, evaluated from the innovations exactly as in Session 1;
- native ragged-edge handling: missing observations delete measurement rows through the selection matrix W_\tau^{(r)}, with no imputation and no deleted history; and
- mixed frequency: append monthly latent GDP growth driven by the factor, give quarterly GDP the five-weight aggregation row that Session 1 derived, and the same filter produces a quarterly GDP nowcast from a monthly panel. That combination of factor structure, the aggregation row, and ragged-edge filtering is, in structure, the nowcasting model of Giannone et al. (2008).
Figure 5 draws the dependence structure. Compare it with Session 1’s state-space graph: the new feature is that what was a single measurement-error arrow is now a persistent chain of its own inside the state.
One practical warning belongs next to the elegance. The state has N+kp elements and the filter’s cost grows with the cube of the state dimension, so carrying every idiosyncratic component of a 130-series panel through Equation 10 is expensive. Production systems exploit the structure (the diagonal blocks in T, or sequential univariate processing of the measurement rows) or keep only the persistent idiosyncratics in the state and leave approximately white ones in H. The modeling logic is unchanged; only the linear algebra is arranged more carefully.
The system matrices T, Z, Q now contain unknown loadings, VAR coefficients, and variances. Session 1 assumed such parameters known; a factor model for a real panel cannot.
7 Estimating the Model on a Ragged Panel
Three estimation strategies are standard. They differ in how much of the model they use, and the practical craft is knowing which is sufficient for the task at hand.
Principal components alone. Estimate \hat\Lambda and \hat f_\tau by the SVD of Section 5 and stop. Fast, transparent, and reproducible in a dozen lines, but static, balanced-panel only, and silent about uncertainty. It is the right tool for a first look, for historical analysis on complete data, and for a tracker whose weekly panel is nearly balanced. This is the Practicum 1 build.
Two-step. The two-step estimator of Doz et al. (2011) runs principal components on the balanced part of the panel to obtain \hat\Lambda and the factor path, fits the factor VAR and idiosyncratic autoregressions to those estimates by least squares, then fixes all parameters and runs the Kalman filter and smoother of Session 1 over the full ragged panel. One pass, no iteration. The first step supplies the parameters; the second supplies everything principal components lacked: bands, forecasts, ragged-edge estimates, news weights. In realistic designs the efficiency loss from not iterating is small, which is why the two-step is the workhorse of daily production systems: fast, stable, and easy to audit.
Maximum likelihood by EM. The EM estimator treats the factor path as missing data and iterates two steps until the likelihood converges: an E-step that runs the Kalman smoother to compute expected states and their second moments given the current parameters, and an M-step that re-estimates every parameter by regressions on those smoothed moments (Bańbura and Modugno, 2014; Doz et al., 2012). Each iteration weakly increases the likelihood. The estimator handles arbitrary missingness (mixed frequencies, ragged edges, series that begin late or end early) inside estimation itself, not only in filtering, and it delivers the full likelihood machinery of Session 1. The price is implementation care: convergence is monotone but can be slow, and the likelihood surface contains the rotation ridge of Section 3, so the normalization must be imposed before any parameter is interpreted. Because the model is estimated by Gaussian methods without the belief that every series is exactly Gaussian, the approach is described as quasi-maximum likelihood12. This is the standard behind serious central-bank nowcasting systems.
| Strategy | Uses dynamics | Handles ragged edge | Uncertainty bands | Cost | Right tool when |
|---|---|---|---|---|---|
| Principal components | no | no | no | seconds | balanced panel, first look, simple tracker |
| Two-step | yes | in filtering | yes | one filter pass | daily production; parameters revised rarely |
| EM (quasi-ML) | yes | in estimation | yes | many smoother passes | arbitrary missingness; full-system estimation |
The course follows the table downward. Practicum 1 used principal components; this session’s exercises implement the two-step on a ragged panel; the capstone uses the two-step or EM as ambition allows.
8 News, Now Operational
Session 1 derived the news decomposition in general form: a nowcast revision equals \sum_i w_iv_i, surprise times weight, release by release. In the dynamic factor model that formula stops being abstract and becomes a daily production report, because the model finally says where the weights come from. The weight on release i is built from the Kalman gain of the estimated system, and the structure of Equation 9 makes its determinants legible: a release earns a large weight when its common share is high (its surprise says a lot about the factor), when it arrives early relative to other information about the same period (there is still factor uncertainty left to resolve), and when its idiosyncratic variance is small (the surprise is unlikely to be private noise).
That reading turns the decomposition into a design tool as well as a reporting tool. If the weekly claims release dominates every news report, that is not an accident of the week; it is the model reporting that claims combine high common share with first-in-the-week timing. And the caution from Session 1 carries over with more force: the model’s expectation is not the survey consensus. A release can beat the consensus and still fall short of the model’s forecast, in which case a correct news report says the release lowered the nowcast. A production commentary must say which expectation defines its surprises.
With estimation and news in place, the machinery is complete. What remains is the published object this session has been circling: the weekly tracker.
9 Anatomy of a Weekly Tracker
Lewis et al. (2022) is the cleanest published specimen of a weekly economic tracker: the Weekly Economic Index (WEI), updated every Thursday and now published by the Federal Reserve Bank of Dallas. It is the course’s replication target because every design choice in it is visible, small enough to rebuild, and instructive when it fails. Four choices define it.
9.1 Choice 1: Ten Series, Five Sectors
| Sector | Series |
|---|---|
| Labor | Initial claims; continued claims; staffing index |
| Consumption | Redbook same-store retail sales; consumer confidence |
| Production | Raw steel production; electricity output |
| Shipping and energy | Rail carloads; fuel sales |
| Taxes | Federal tax withholding |
Breadth across sectors is the design principle, and Section 4 says why: series within a sector share idiosyncratic noise, so a second sector buys more precision than a fifth series from the first. The P1 build is the controlled demonstration. Its four series span only labor and credit, and its factor is, by Table 2, essentially a claims factor. On the common sample it still tracks the WEI at correlation 0.90; the blessing of dimensionality is generous. But its single largest divergence, 11.4 percentage points below the WEI in the week of March 28, 2020, is exactly the week when a claims catastrophe was deeper than the economy-wide catastrophe. The official index’s retail, fuel, and electricity series pulled its reading up; the four-series panel had no other sector to consult. Breadth is variance insurance, and the premium comes due in the weeks that matter most.
9.2 Choice 2: 52-Week Differences
Weekly data carry ferocious seasonality: holidays, school calendars, weather, and week-ending conventions, none of it aligned across series. The WEI removes it by transformation: every input enters as its 52-week difference (in logs where appropriate),
\tilde x_{i\tau}=\ln x_{i\tau}-\ln x_{i,\tau-52}, \tag{11}
the growth of each week over the same week one year earlier. Any seasonal pattern that repeats annually cancels in the subtraction, with no seasonal model estimated and no adjustment procedure to maintain.
The price has two parts, and both are visible in Figure 6. First, the units change: the transformed series measures trailing-year growth, so the index is smoother and slower than the underlying weekly pulse: a genuine one-week collapse enters gradually and lingers. Second, every extreme week returns. Because week \tau-52 sits in the denominator of this year’s comparison, the collapse of April 2020 reappears, sign-flipped, as a spurious surge in April 2021. This is the base effect: a movement in a year-over-year series driven by the comparison week a year earlier rather than by anything current. A tracker’s user must know the difference between news and an anniversary.
The transformation, in other words, is a seasonal adjustment in disguise: one that works only for patterns that repeat on a fixed 52-week cycle. Floating holidays drift against week numbers, and every few years a 53rd week13 breaks the alignment entirely. What the transformation assumes implicitly, Session 3 will model explicitly.
9.3 Choice 3: One Factor, Scaled to GDP
The WEI extracts a single principal component from the ten transformed series and then confronts the rotation problem of Section 3 head-on: a factor has no units. The solution is a scaling regression: regress four-quarter GDP growth on the quarterly-averaged factor and report the fitted value, so that a WEI reading of 2 can be read as “consistent with GDP growth of about 2 percent over the trailing year.” The P1 build does the same and estimates, on its calibration sample, \text{tracker}=2.05+0.90\times\text{factor} with a quarterly R^2 of 0.63. The regression is not decoration; it is the final, essential normalization, and it inherits every property of the sample it is fit on.
Which sample that should be is the sharpest lesson of the practicum. A coincident index standardizes its inputs and calibrates its scaling over some reference sample, and that sample choice is a modeling decision. The P1 journal’s second entry records what happens otherwise: standardizing over a sample that includes April 2020, when transformed claims sat roughly eight standard deviations from normal, inflates every standard deviation so badly that the 2008–09 recession shrinks to about one standard deviation and nearly vanishes from the fitted tracker. One episode redefined the yardstick for every other episode. The repair is a deliberate calibration window: estimate means, variances, factor weights, and the GDP scaling on a sample of normal times (the build uses pre-2020 data), then apply those fixed parameters to the full history, so that extreme episodes are measured on a normal-times yardstick rather than allowed to compress it. Every standardization has a reference population; choosing it is modeling, not housekeeping.
9.4 Choice 4: Simplicity, Deliberately
The published WEI is principal components, not a full dynamic factor model, and its maintainers know both options. The choice is instructive. A transparent index that anyone can recompute has operational value, and on a nearly balanced weekly panel the static estimator gives up little. The full state-space treatment earns its complexity when the ragged edge, uncertainty bands, or news attribution are required, which is why the same authors’ production systems, and this course’s capstone, use the machinery of Section 6. The 2020 episode forced even the simple index to adapt: the published methodology was adjusted when the pandemic’s outliers distorted the historical relationships: their production version of the standardization trap. Exercise 10 reads the published record of what changed.
Figure 7 shows the state-space payoff at the point where it matters operationally: the newest weeks of the panel, where some series have reported and others have not.
The WEI has cousins, and knowing them frames the design space. The Chicago Fed’s CFNAI extracts one factor from 85 monthly series by principal components; it is the direct descendant of the Stock and Watson (1989) coincident index, which was the first to state the factor-plus-filter program explicitly. The ADS index of Aruoba et al. (2009) runs an exact mixed-frequency dynamic factor model on daily through quarterly data, and is closest in spirit to what this course builds. Baumeister et al. (2024) push the same design to weekly indices for each U.S. state. Between the transparent PCA tracker and the full state-space system lies most of applied nowcasting, and knowing when the simple end of the spectrum suffices is part of the craft.
10 From Comovement to a Production System
The session began with a Thursday panel that disagreed with itself. The resolution was not a better single indicator but a model of why indicators agree at all: a small number of pervasive factors, read through loadings, with everything series-specific modeled as such. It is worth an inventory of what that model now produces, because each item traces to a specific piece of machinery.
A factor estimate with a defensible weighting comes from the precision logic of Section 4, automated by principal components. An honest account of what is identified comes from Section 3, enforced by a stated normalization and a scaling regression into GDP units. Ragged-edge estimates with uncertainty bands, forecasts, a likelihood, and release-by-release news attribution come from the state-space form of Section 6 and whichever estimator in Table 3 the application justifies. And a public, reproducible weekly tracker comes from four design choices whose costs are now explicit.
What the session did not solve, it postponed deliberately, and one postponement now stands in the way. Every weekly series in this session entered through the 52-week difference, and Section 9 showed what that transformation really is: a seasonal adjustment in disguise, valid only for patterns that repeat on a fixed annual cycle, paid for in trailing-year units and anniversary echoes. High-frequency data deserve better: a model in which the seasonal pattern is estimated, can evolve, and can be separated from the signal at the data’s own frequency. What such a model looks like for weekly and even hourly data, and what “seasonally adjusted” precisely means once you must produce it yourself, is Session 3.
Exercises
Exercises marked [core] prepare material used later in the course.
Exercise 1: The covariance a factor model implies
Problem. [core, pencil] A one-factor model has three standardized series with loadings \lambda=(0.9,\,0.6,\,0.3)', factor variance 1, and mutually uncorrelated idiosyncratic components. Write the full 3\times3 covariance matrix of the observed series. Compute each series’ common share and each pairwise correlation. Which series is the most valuable witness to the factor, and what, if anything, does series 3 contribute?
Exercise 2: Two witnesses
Problem. [core, pencil] One factor with prior f\sim\mathcal N(0,1) is measured by two standardized series, each with loading \lambda=0.8 and idiosyncratic variance \sigma^2_e=0.36, idiosyncratic components independent. The observed values are x_1=-1.5 and x_2=-0.5. Compute the posterior mean and variance of f, twice: once by Gaussian conditioning on the joint distribution and once by precision weighting. Compare with the posterior after observing only x_1, and explain in words why the second witness pulled the estimate in the direction it did.
Exercise 3: The witness floor
Problem. [core, pencil] N standardized series each measure a factor f\sim\mathcal N(0,1) with loading \lambda and idiosyncratic variance \sigma^2_e. Derive the posterior variance of f when the idiosyncratic components are (a) independent and (b) equicorrelated with correlation \rho_e. Show that in case (b) the posterior variance has a strictly positive limit as N\to\infty, and prove the statement: an unlimited supply of equicorrelated witnesses is worth exactly 1/\rho_e independent ones. Evaluate everything for \lambda=0.8, \sigma^2_e=0.36, \rho_e=0.25.
Exercise 4: Rotation, concretely
Problem. [core, pencil] (a) For a one-factor model, exhibit two loading–factor pairs besides (\Lambda,f_\tau) that generate identical data, and identify what each violates in the normalization \operatorname{Var}(f_\tau)=I, \Lambda'\Lambda diagonal, plus a sign convention. (b) For k=2, show that any pair (\Lambda M^{-1},\,Mf_\tau) with M invertible fits identically, and determine which matrices M survive the full normalization.
Exercise 5: Replicate the P1 extraction
Problem. [core, computational, data] Reproduce the Practicum 1 factor extraction from scratch: pull the four weekly FRED series, transform each to a 52-week log difference with the claims series sign-flipped, standardize on the pre-2020 calibration window, and compute the first principal component of the calibration panel. Verify your weights against the reference build. Then compute each series’ common share with respect to your estimated factor and rank the four series by usefulness. Does the ranking match the weights? Should it?
Exercise 6: State-space fluency
Problem. [core, pencil] Write the full system matrices (T,R,Q,Z,H) for a dynamic factor model with k=2 factors following a VAR(2), AR(1) idiosyncratic components, and N=5 monthly series. Give every matrix’s dimensions and the state dimension. Then, for the one-factor version of the model, explain where the five-weight quarterly aggregation row for GDP enters and exactly which additional states it requires.
Exercise 7: The two-step upgrade
Problem. [core, computational] Implement the two-step estimator on a simulated ragged panel: generate n=200 periods of a one-factor panel with N=4 series, loadings (0.9,0.8,0.6,0.3), factor AR(1) coefficient 0.9, and a ragged edge (the last three observations of series 1 and the last observation of series 2 missing). Step 1: principal components and regressions on the balanced rows. Step 2: Kalman filter and smoother over the full panel with parameters fixed. Add assertions. Where does the smoothed factor differ most from the PCA factor, and which estimate tracks the true factor better?
Exercise 8: Who gets credit for the news?
Problem. [core, pencil] A one-factor nowcast has prior f\sim\mathcal N(0,\,0.5) at the start of a week. Two releases arrive: claims, with loading 0.8 and idiosyncratic variance 0.36, surprises at v_1=-1.0; credit, with loading 0.3 and idiosyncratic variance 0.91, surprises at v_2=+0.5 (both measured against the prior). Compute the factor revision and its release-by-release attribution three ways: jointly, sequentially claims-first, and sequentially credit-first. Verify all three give the same final estimate, and explain why the middle numbers differ.
Exercise 9: Choosing the number of factors
Problem. [data] Implement the Bai and Ng (2002) criterion IC_{p2} and validate it on a simulated panel with a known number of factors before trusting it on real data. Then download the FRED-MD monthly panel (McCracken and Ng, 2016), apply the published transformation codes, standardize, and report the chosen number of factors, the variance shares of the leading components, and an interpretation of factor 2’s largest loadings. [extra] Repeat the criterion on the pre-2020 subsample and compare.
Exercise 10: WEI archaeology
Problem. [data] The published Weekly Economic Index confronted its own version of the standardization trap in 2020. Using Lewis et al. (2022), Lewis et al. (2021), and the Dallas Fed’s WEI documentation, identify what the pandemic did to the index’s estimated relationships and what its maintainers changed in response. Relate each change to the calibration-window logic of the P1 build. Then propose, in one page, the v2 design for the four-series P1 tracker that best imports the lessons.
Further Reading
Stock and Watson (2002) and Bai and Ng (2002) are the two pillars of large-panel factor econometrics. Read them for the theorems’ conditions, weak dependence and pervasiveness, which is where the practice lives.
Boivin and Ng (2006) documents when more series make factor estimates worse; it is the empirical companion to the correlated-witness floor of Section 4.
Doz et al. (2011) develops the two-step estimator implemented in Exercise 7; Doz et al. (2012) supplies the quasi-maximum-likelihood theory behind it.
Bańbura and Modugno (2014) is the EM reference for arbitrary missingness patterns and the standard citation behind production nowcasting systems.
Lewis et al. (2022) is the practicum paper; read it with the P1 build open. Wegmüller and Glocker (2023) replicates and extends it, and is a model of what a careful replication looks like.
Giannone et al. (2008) deserves a rereading now: its model is the factor-plus-aggregation state-space system of Section 6, and it will look familiar in a way it could not have after Session 1.
Session Glossary
The glossary collects the bold technical terms introduced in this session.
Hover over any dotted-underlined glossary term to see the same definition in place.
- Approximate factor model
- A factor model that tolerates limited correlation among idiosyncratic components rather than requiring them to be fully uncorrelated. It is the realistic setting for macroeconomic panels, and the principal-components consistency results hold under it.
- Base effect
- A movement in a year-over-year growth series caused by the comparison period a year earlier rather than by anything current. After an extreme episode, its anniversary produces an echo of the opposite sign that must not be read as news.
- Blessing of dimensionality
- The property that adding series to a factor panel sharpens the factor estimate, because independent idiosyncratic noise averages away across the cross-section. It holds only while idiosyncratic components are weakly correlated and factors load broadly.
- Calibration window
- The sample deliberately chosen for estimating standardization constants, factor weights, and scaling regressions, with the fitted parameters then applied to the full history. Fixing a normal-times window prevents one extreme episode from redefining the yardstick used to measure every other episode.
- Coincident index
- A single series constructed to summarize the current state of aggregate activity, as distinct from a forecast of a specific future target. Its usefulness depends on stated units, a stated reference sample, and a stated release calendar.
- Common share
- The fraction of a series’ variance explained by the common factors rather than its idiosyncratic component. Indicators with high common shares carry the most information about aggregate activity, regardless of how interesting the series is on its own.
- Comovement
- The tendency of many economic series to rise and fall together over the business cycle. Factor models treat that shared variation as the signal to be extracted rather than as collinearity to be fought.
- Dynamic factor model
- A model in which many observed series load on a few common factors that evolve over time, with persistent idiosyncratic components modeled as additional states. In state-space form it inherits the Kalman filter’s treatment of the ragged edge, uncertainty, likelihood, and news.
- EM estimator
- An iterative estimator that alternates between a Kalman-smoother pass computing expected states given parameters and regressions on those smoothed moments re-estimating the parameters. Each iteration weakly raises the likelihood, and arbitrary missing-data patterns are handled inside estimation itself.
- Factor loading
- A coefficient connecting an observed series to a common factor. Its sign and magnitude describe how the series moves with the factor under the chosen normalization, and inspecting loadings is how a factor earns an economic interpretation.
- Idiosyncratic component
- The part of an observed series not explained by the common factors: sampling error, sector-specific shocks, and definitional quirks. Its persistence and its correlation across series are modeling decisions with real consequences.
- Normalization
- A restriction on factor scale, sign, or rotation that selects one representation from the many that fit the data identically. It makes reported factors and loadings interpretable without changing anything observable.
- Principal components
- The least-squares estimator of a factor model, computed from the leading eigenvectors of the panel’s sample covariance matrix. It is fast and transparent on balanced panels but supplies no dynamics, no missing-data handling, and no uncertainty bands.
- Rotation
- An invertible transformation of the factors paired with the offsetting transformation of the loadings. Rotated factors fit the observed data exactly as well, which is why a normalization must be imposed before factors are interpreted.
- Static factor model
- A representation in which each observed series equals its loadings times the current common factors plus an idiosyncratic component. It describes comovement within a period but does not specify how the factors evolve.
- Two-step estimator
- A procedure that estimates loadings and dynamics by principal components and regression on the balanced part of a panel, then fixes those parameters and runs the Kalman filter and smoother over the full ragged panel. It trades a small efficiency loss for speed, stability, and auditability in production.
- Weekly economic tracker
- A high-frequency index summarizing current aggregate activity from weekly indicators, usually one factor scaled into GDP units. Its transformation window, calibration sample, and release calendar must be stated before its readings can be interpreted as growth.
References
Footnotes
FRED-MD is a public, monthly-updated panel of roughly 130 monthly U.S. macroeconomic series, distributed with standard transformation codes so that factor-model results can be replicated and compared across papers.↩︎
The ragged edge, from Session 1, is the staircase of missing values at the end of a real-time panel caused by series being released on different schedules.↩︎
A standardized series has had its sample mean subtracted and been divided by its sample standard deviation, so it is measured in standard-deviation units with mean zero. Which sample supplies the mean and standard deviation turns out to matter; Section 9 returns to that choice.↩︎
Precision is the reciprocal of a variance. Precisions of independent sources of information add, which is why it is the natural bookkeeping unit when evidence accumulates.↩︎
Equicorrelation assigns the same correlation to every pair. It is the cleanest way to model a sector-wide disturbance such as reporting noise or a sectoral shock that touches every series in the group equally.↩︎
An eigenvector of a matrix is a direction the matrix stretches without turning; the corresponding eigenvalue is the stretch factor. For a covariance matrix, the first eigenvector is the direction of maximum variance, and its eigenvalue is the variance in that direction.↩︎
The singular value decomposition factors any matrix as X=USV' with orthonormal U and V and nonnegative diagonal S. The columns of V are the eigenvectors of X'X, so the first column supplies the principal-component weights, and the squared singular values are proportional to the eigenvalues \hat\mu_j.↩︎
An information criterion scores a model by its fit minus a penalty for its size. The Bai and Ng (2002) criteria calibrate that penalty to the double limit N,n\to\infty, which ordinary AIC- or BIC-style penalties do not handle.↩︎
A scree plot displays the ordered eigenvalues \hat\mu_1\geq\hat\mu_2\geq\cdots. A sharp drop after the kth eigenvalue suggests k factors; the plot is suggestive rather than decisive, which is why the formal criteria exist.↩︎
A balanced panel has an observation for every series in every period. Real-time panels are unbalanced by construction because of the ragged edge.↩︎
A vector autoregression (VAR) predicts a vector of variables from p of its own lags. It is the multivariate analogue of the AR(p) process put in companion form in Session 1.↩︎
A quasi-maximum likelihood estimator maximizes a likelihood written under convenient distributional assumptions that need not hold exactly. Under conditions given by Doz et al. (2012), the factor estimates remain consistent even when the Gaussian assumption is only an approximation.↩︎
Because 52 weeks are 364 days, calendar years contain 52 weeks and a fraction; week-numbering conventions insert a 53rd week roughly every five to six years, misaligning “the same week last year” for every series at once.↩︎