A Pseudo-Structural Reduced Rank Approach
October 22, 2026
Source: Hecq et al. (2026)
We observe \(\mathbf{Y}_1, \dots, \mathbf{Y}_T \in \mathbb{R}^{N_1 \times N_2}\) and stack \(\mathbf{y}_t = \operatorname{vec}(\mathbf{Y}_t)\).
Which combinations \(\boldsymbol{\Psi}\mathbf{y}_t\) lose a feature that every series has?
The feature today:
The answer to this is the null space, namely, \(\boldsymbol{\Psi} = \mathbf{A}_\perp'\).
The reduced-rank VAR(\(1\)) (Velu et al. 1986): \[\mathbf{y}_t = \mathbf{A}\mathbf{B}'\mathbf{y}_{t-1} + \mathbf{e}_t, \qquad \mathbf{A}, \mathbf{B} \in \mathbb{R}^{N\times r}, \quad r < N\]
Rank \(r\) gives two null spaces, each of dimension \(N - r\):
Definition (Engle and Kozicki, 1993)
A feature is common if every series has it but some linear combination does not. With serial correlation as the feature, \(\mathbf{A}_\perp\) gives a common cycle (SCCF).
The recurring lesson
A co-movement is a null space: the combinations that remove a feature every series has. Name the feature first.
Normalize \(\mathbf{A}_\perp' = [\,\mathbf{I}_{N-r} \mathbf{A}_\perp^{*'}]\) and stack (Vahid and Engle 1993): \[\underbrace{\begin{bmatrix}\mathbf{I}_{N-r} & \mathbf{A}_\perp^{*'} \\ \mathbf{0} & \mathbf{I}_r\end{bmatrix}}_{\boldsymbol{\Omega}}\begin{bmatrix}\mathbf{y}_{1t} \\ \mathbf{y}_{2t}\end{bmatrix} = \begin{bmatrix}\mathbf{0} & \mathbf{0} \\ \boldsymbol{\Pi}_1^* & \boldsymbol{\Pi}_2^*\end{bmatrix}\begin{bmatrix}\mathbf{y}_{1,t-1} \\ \mathbf{y}_{2,t-1}\end{bmatrix} + \boldsymbol{\Omega}\mathbf{e}_t\]
The pseudo-structural form: an equivalent rewriting, not a causal model.
If \(\mathbf{y}_{1t}\) is already white noise, \(\mathbf{A}_\perp = \mathbf{e}_1\) removes nothing.
\(\mathbf{A}\mathbf{B}'\mathbf{B}_\perp = \mathbf{0}\): the past in the directions \(\mathbf{B}_\perp\) is irrelevant. So \[\mathbf{y}_t = \mathbf{A}\,\mathbf{f}_{t-1} + \mathbf{e}_t, \qquad \mathbf{f}_{t-1} = \mathbf{B}'\mathbf{y}_{t-1} \in \mathbb{R}^r.\]
The past enters through \(r\) indices, yielding the multivariate autoregressive index model (Reinsel 1983).
| left null space \(\mathbf{A}_\perp\) | right null space \(\mathbf{B}_\perp\) | |
|---|---|---|
| removes | the dynamics in \(\mathbf{y}_t\) | lags without predictive content |
| result | \(\mathbf{A}_\perp'\mathbf{y}_t\) is white noise | \(\mathbf{B}_\perp'\mathbf{y}_{t-1}\) can be dropped |
| reading | common cycles | common predictors |
For \(\mathbf{y}_t = \sum_{j=1}^{p}\mathbf{C}_j\mathbf{y}_{t-j} + \mathbf{e}_t\),
Both have \(Nr(p + 1) - r^2\) parameters. Different models: one restricts what responds, the other what predicts.
The matrix index on the next slides has exactly this shape, with \(\mathbf{F}_t\) replaced by a bilinear function of \(\mathbf{Y}_{t-1}\).
The matrix autoregression (Chen et al. 2021) with reduced-rank coefficients (Xiao et al., forthcoming): \[\mathbf{Y}_t = \mathbf{U}_1\mathbf{U}_3'\,\mathbf{Y}_{t-1}\,\mathbf{U}_4\mathbf{U}_2' + \mathbf{E}_t\] \[\mathbf{y}_t = (\mathbf{U}_2\otimes\mathbf{U}_1)(\mathbf{U}_4\otimes\mathbf{U}_3)'\mathbf{y}_{t-1} + \mathbf{e}_t, \qquad \operatorname{Cov}(\mathbf{e}_t) = \boldsymbol{\Sigma}_2\otimes\boldsymbol{\Sigma}_1\] with \(\mathbf{U}_1, \mathbf{U}_3 \in \mathbb{R}^{N_1\times r_1}\) and \(\mathbf{U}_2, \mathbf{U}_4 \in \mathbb{R}^{N_2\times r_2}\)
A reduced-rank VAR of rank \(r_1 r_2\), with Kronecker loadings and weights.
Parsimony
\(2r_1N_1 - r_1^2 + 2r_2N_2 - r_2^2\) coefficients: \(39\) for \(9 \times 4\) at ranks \((2,1)\), against \(1{,}296\) for a VAR(\(1\)).
From the right. \(\mathbf{F}_{t-1} = \mathbf{U}_3'\mathbf{Y}_{t-1}\mathbf{U}_4 \in \mathbb{R}^{r_1\times r_2}\) is a matrix of indices, \[\mathbf{Y}_t = \mathbf{U}_1\,\mathbf{F}_{t-1}\,\mathbf{U}_2' + \mathbf{E}_t,\] a matrix factor model with a factor we can compute.
From the left. Take \(\boldsymbol{\delta} \in \mathbb{R}^{N_1\times(N_1-r_1)}\) and \(\boldsymbol{\gamma} \in \mathbb{R}^{N_2\times(N_2-r_2)}\) with \(\boldsymbol{\delta}'\mathbf{U}_1 = \mathbf{0}\) and \(\boldsymbol{\gamma}'\mathbf{U}_2 = \mathbf{0}\): \[\boldsymbol{\delta}'\mathbf{Y}_t = \boldsymbol{\delta}'\mathbf{E}_t, \qquad \mathbf{Y}_t\boldsymbol{\gamma} = \mathbf{E}_t\boldsymbol{\gamma}.\]
\(\boldsymbol{\delta}\): rows that co-move in every column. \(\boldsymbol{\gamma}\): columns that co-move in every row.
Proposition 1 (Hecq, Ricardo and Wilms, 2026)
With \(\boldsymbol{\delta}'\mathbf{U}_1 = \mathbf{0}\) and \(\boldsymbol{\gamma}'\mathbf{U}_2 = \mathbf{0}\), the left null space of \(\mathbf{U}_2\otimes\mathbf{U}_1\), of dimension \(N_1N_2 - r_1r_2\), is the orthogonal direct sum of three Kronecker pieces (\(\mathcal{C}\): column space, \(\mathcal{N}\): null space):
\[\mathcal{N}\big((\mathbf{U}_2\otimes\mathbf{U}_1)'\big) = \underbrace{\big(\mathcal{N}(\mathbf{U}_2')\otimes\mathcal{C}(\mathbf{U}_1)\big)}_{\text{column-specific}} \oplus \underbrace{\big(\mathcal{C}(\mathbf{U}_2)\otimes\mathcal{N}(\mathbf{U}_1')\big)}_{\text{row-specific}} \oplus \underbrace{\big(\mathcal{N}(\mathbf{U}_2')\otimes\mathcal{N}(\mathbf{U}_1')\big)}_{\text{joint}}\]
Only the bottom-right box sees \(\mathbf{y}_{t-1}\). The other three are white noise.
GDP, PROD, IR \(\times\) USA, CAN, DEU, FRA, at ranks \((2, 3)\)
Normalize \(\boldsymbol{\delta}' = [\,\mathbf{I}\;\; \boldsymbol{\delta}^{*\top}]\) and \(\boldsymbol{\gamma}' = [\,\mathbf{I}\;\; \boldsymbol{\gamma}^{*\top}]\), and build \(\boldsymbol{\Omega}_1\) and \(\boldsymbol{\Omega}_2\) as in the vector case: \[\boldsymbol{\Omega}_1\mathbf{Y}_t\boldsymbol{\Omega}_2' = \begin{bmatrix}\mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{U}_3^{*\top}\mathbf{Y}_{t-1}\mathbf{U}_4^*\end{bmatrix} + \boldsymbol{\Omega}_1\mathbf{E}_t\boldsymbol{\Omega}_2'\]
with left-hand side \[\begin{bmatrix}\mathbf{Y}_{11,t} + \boldsymbol{\delta}^{*\top}\mathbf{Y}_{21,t} + \mathbf{Y}_{12,t}\boldsymbol{\gamma}^* + \boldsymbol{\delta}^{*\top}\mathbf{Y}_{22,t}\boldsymbol{\gamma}^* & \mathbf{Y}_{12,t} + \boldsymbol{\delta}^{*\top}\mathbf{Y}_{22,t} \\ \mathbf{Y}_{21,t} + \mathbf{Y}_{22,t}\boldsymbol{\gamma}^* & \mathbf{Y}_{22,t}\end{bmatrix}\]
Three blocks are the boxes of Proposition 1. The fourth carries all the lags.
Over beats under. If unsure about \(r_1\), set it to \(N_1\) and select \(r_2\).
\(\widehat{\boldsymbol{\gamma}}^*\), indicators relative to wages (\(p\)-values in parentheses):
| \(\Delta\)Employment | \(\Delta\)Unemployment | \(\Delta\)Hours |
|---|---|---|
| \(\mathbf{-0.63}\) \((0.00)\) | \(\mathbf{70.58}\) \((0.00)\) | \(-0.16\) \((0.74)\) |
\(\widehat{\boldsymbol{\delta}}^*\), states relative to the two anchors (bold: significant at \(5\%\)):
| ND | IN | MI | MN | IL | SD | WI | |
|---|---|---|---|---|---|---|---|
| Ohio | \(-0.29\) | \(-0.26\) | \(-0.58\) | \(-0.18\) | \(\mathbf{-2.48}\) | \(0.06\) | \(-0.07\) |
| Iowa | \(-0.02\) | \(\mathbf{-1.39}\) | \(\mathbf{-1.38}\) | \(\mathbf{-0.75}\) | \(\mathbf{2.46}\) | \(\mathbf{-0.76}\) | \(\mathbf{-1.47}\) |
Iowa’s cycle reaches most of the region, Ohio’s reaches Illinois. North Dakota stands apart.
Correlation with the index of Crone and Clayton-Matthews: \(0.85\) to \(0.94\) in seven states, \(0.59\) in North Dakota, \(0.68\) in South Dakota.
Crone and Clayton-Matthews (2005)
Employment, hours and wages are \(I(1)\) in (log) levels. We modeled \(\Delta\mathbf{Y}_t\).
If the levels are cointegrated, a VAR in differences leaves out the error-correction term.
Next: keep the levels, and ask which combinations are stationary.
The recurring lesson
A co-movement is a null space: the combinations that remove a feature every series has. Name the feature first.
Stack the blocks as \(\mathbf{y}_t^* = (\mathbf{y}_{11,t}', \mathbf{y}_{21,t}', \mathbf{y}_{12,t}', \mathbf{y}_{22,t}')'\) with \(\mathbf{y}_{ij,t} = \operatorname{vec}(\mathbf{Y}_{ij,t})\): \[\underbrace{\begin{bmatrix} \mathbf{I} & \mathbf{I}\otimes\boldsymbol{\delta}^{*\top} & \mathbf{U}_3^{*\top}\otimes\mathbf{I} & \mathbf{U}_3^{*\top}\otimes\boldsymbol{\delta}^{*\top} \\ \mathbf{0} & \mathbf{I} & \mathbf{0} & \mathbf{U}_3^{*\top}\otimes\mathbf{I} \\ \mathbf{0} & \mathbf{0} & \mathbf{I} & \mathbf{I}\otimes\boldsymbol{\delta}^{*\top} \\ \mathbf{0} & \mathbf{0} & \mathbf{0} & \mathbf{I}\end{bmatrix}}_{\boldsymbol{\Omega}}\mathbf{y}_t^* = \begin{bmatrix}\mathbf{0}\\ \mathbf{0}\\ \mathbf{0}\\ (\mathbf{U}_4^*\otimes\mathbf{U}_3^*)'\end{bmatrix}\mathbf{y}_{t-1} + \boldsymbol{\Omega}\mathbf{e}_t^*\]
\(N_1\times N_2 = 3\times 4\), lag order fixed at one, \(T = 100\), percentage of correct selections for \((r_1, r_2)\):
| true ranks | AIC | BIC | EBIC | Xiao et al. |
|---|---|---|---|---|
| \((1,1)\) | \((89, 81)\) | \((100, 99)\) | \((100, 99)\) | \((98, 98)\) |
| \((2,1)\) | \((80, 83)\) | \((94, 100)\) | \((100, 100)\) | \((98, 99)\) |
| \((3,1)\) | \((100, 85)\) | \((100, 100)\) | \((100, 100)\) | \((100, 100)\) |
| \((1,4)\) | \((87, 100)\) | \((100, 100)\) | \((100, 100)\) | \((100, 100)\) |
Cut \(\mathbf{M}\) into \(N_1\times N_1\) blocks and line up their vectorizations as columns. For \(\mathbf{M} = \mathbf{B}\otimes\mathbf{A}\) with \(N_2 = 2\) and \(\mathbf{a} = \operatorname{vec}(\mathbf{A})\): \[ \begin{bmatrix} b_{11}\mathbf{A} & b_{12}\mathbf{A} \\ b_{21}\mathbf{A} & b_{22}\mathbf{A}\end{bmatrix} \;\overset{\mathcal{R}}{\longmapsto}\; \big[\, b_{11}\mathbf{a} \;\; b_{21}\mathbf{a} \;\; b_{12}\mathbf{a} \;\; b_{22}\mathbf{a} \,\big] = \mathbf{a}\operatorname{vec}(\mathbf{B})' \]
\(\mathcal{R}\) only permutes entries, so it is linear, and \(\mathbf{M}\) is a Kronecker product if and only if \(\mathcal{R}(\mathbf{M})\) has rank one.
For a sum, \(\operatorname{rank}(\mathbf{a}\mathbf{b}' + \mathbf{c}\mathbf{d}') \le 1\) only if \(\mathbf{a}\parallel\mathbf{c}\) or \(\mathbf{b}\parallel\mathbf{d}\). With \(\mathbf{c} = \operatorname{vec}(\mathbf{I})\), that means \(\boldsymbol{\Lambda}\propto\mathbf{I}\) or \(\boldsymbol{\Psi}\propto\mathbf{I}\) for the C-MAR, and \(\mathbf{U}_1\mathbf{U}_3'\propto\mathbf{I}\) or \(\mathbf{U}_2\mathbf{U}_4'\propto\mathbf{I}\) for the MECM. Reduced rank rules out both.