Decomposing Co-Movements in Matrix-Valued Time Series

A Pseudo-Structural Reduced Rank Approach

Ivan Ricardo

Maastricht University

Alain Hecq

Maastricht University

Ines Wilms

Maastricht University

October 22, 2026

Thirty-Six Series

  • Nine Midwestern states, four labor-market indicators, monthly changes, 2005 to 2019
  • Do \(36\) series need \(36\) separate dynamics?

The Question in One Line

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:

  • Serial correlation. \(\boldsymbol{\Psi}\mathbf{y}_t\) is unpredictable: a common stationary cycle

The answer to this is the null space, namely, \(\boldsymbol{\Psi} = \mathbf{A}_\perp'\).

Common Cycles: The Left Null Space

A Reduced-Rank VAR

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\):

  • left, \(\mathbf{A}_\perp'\mathbf{A} = \mathbf{0}\): then \(\mathbf{A}_\perp'\mathbf{y}_t = \mathbf{A}_\perp'\mathbf{e}_t\) is white noise
  • right, \(\mathbf{B}'\mathbf{B}_\perp = \mathbf{0}\): then \(\mathbf{B}_\perp'\mathbf{y}_{t-1}\) predicts nothing

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).

A Common Cycle, by Eye

The recurring lesson

A co-movement is a null space: the combinations that remove a feature every series has. Name the feature first.

Normalize and Stack

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\]

  • \(N - r\) equations with no lags: contemporaneous relations
  • \(r\) equations with all lags: the lags act as instruments
  • Same parameter count as the reduced-rank VAR, \(r(2N - r)\)

The pseudo-structural form: an equivalent rewriting, not a causal model.

Trivial Features

If \(\mathbf{y}_{1t}\) is already white noise, \(\mathbf{A}_\perp = \mathbf{e}_1\) removes nothing.

  • Under the normalization, a trivial feature is \(\mathbf{A}_\perp^* = \mathbf{0}\)
  • So test \(H_0 : \mathbf{A}_\perp^* = \mathbf{0}\), rather than exclude it from the parameter space
  • To determine how many features, the \(N - r\) smallest canonical correlations between \(\mathbf{y}_t\) and its past are zero (Vahid and Engle 1993)

Indices: the Right Null Space

Read the Same Matrix from the Right

\(\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

With \(p\) Lags They Part Ways

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.

Indices and Factors

  • \(\mathbf{y}_t = \sum_{j=1}^p\mathbf{A}_j\mathbf{f}_{t-j} + \mathbf{e}_t\) is a factor model whose factor is observed: a linear combination of the past (Carriero et al. 2016; Cubadda and Guardabascio 2019)
  • In a factor model \(\mathbf{y}_t = \boldsymbol{\Lambda}\mathbf{f}_t + \boldsymbol{\varepsilon}_t\), the combinations \(\boldsymbol{\Lambda}_\perp'\mathbf{y}_t\) are free of the factor: the left null space again
  • The matrix factor model \(\mathbf{Y}_t = \mathbf{R}\mathbf{F}_t\mathbf{C}' + \mathbf{E}_t\) (Wang et al. 2019) loads a latent \(\mathbf{F}_t\) on rows and on columns

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}\).

Reduced-Rank Matrix Autoregressions

The RRMAR

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\)).

Two Readings, Again

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

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}}\]

\(\boldsymbol{\delta}'\mathbf{Y}_t\) and \(\mathbf{Y}_t\boldsymbol{\gamma}\) overlap in \(\boldsymbol{\delta}'\mathbf{Y}_t\boldsymbol{\gamma}\): that overlap is the joint piece. Row- and column-specific are what is left of each once it is removed.

Four Boxes

Only the bottom-right box sees \(\mathbf{y}_{t-1}\). The other three are white noise.

A Toy Example

GDP, PROD, IR \(\times\) USA, CAN, DEU, FRA, at ranks \((2, 3)\)

  • Row-specific, \(\boldsymbol{\delta}\): GDP with PROD, in every country
  • Column-specific, \(\boldsymbol{\gamma}\): USA with France, for every indicator
  • Joint, \(\boldsymbol{\gamma}\otimes\boldsymbol{\delta}\): US GDP with US PROD, French GDP and French PROD at once

The Pseudo-Structural Form

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.

Who Responds to Whom

  • Vertical arrows are \(\boldsymbol{\delta}^*\), horizontal arrows \(\boldsymbol{\gamma}^*\), the diagonal is their Kronecker product
  • Which \(r_1\) rows and \(r_2\) columns form \(\mathbf{Y}_{22}\) does not change the likelihood. It changes the story, so choose by economics

Estimation and Ranks

  • Full-information ML, non-convex: \(100\) random starts, a few iterations each, continue the best \(10\)
  • A single start at the RRMAR estimate ends in a local optimum in a third of the \(\boldsymbol{\delta}^*\) simulations
  • \(\widehat{\boldsymbol{\delta}}^*\), \(\widehat{\boldsymbol{\gamma}}^*\): \(\sqrt{T}\)-asymptotically normal, Hessian standard errors
  • Ranks and lag order by BIC or EBIC, both weakly consistent

Coverage When the Ranks Are Wrong

Over beats under. If unsure about \(r_1\), set it to \(N_1\) and select \(r_2\).

Midwestern Labor Markets

  • \(9\) states \(\times\) \(4\) indicators: employment, unemployment rate, manufacturing hours, real wages. January 2005 to December 2019, \(T = 180\), first differences, demeaned
  • Ranks: AIC \((8,4)\), BIC \((5,4)\), EBIC \((2,1)\). We adopt EBIC: best in the simulations, and one common component in the indicators is what a coincident index needs
  • The RRMAR beats the reduced-rank VAR and the unrestricted VAR on BIC and EBIC. AIC prefers the reduced-rank VAR
  • \(\mathbf{Y}_{22}\): Iowa and Ohio (agriculture and manufacturing, far apart) and wages (the slowest-moving indicator)

What the Co-Movements Say

\(\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.

Against a Benchmark

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.

We Differenced

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.

Conclusion

Taking Stock

  • Two null spaces: the left gives common cycles, the right indices. With \(p\) lags, two different models
  • Row and column restrictions give three co-movement components, each with its own pseudo-structural block

The recurring lesson

A co-movement is a null space: the combinations that remove a feature every series has. Name the feature first.

References

Carriero, Andrea, George Kapetanios, and Massimiliano Marcellino. 2016. “Structural Analysis with Multivariate Autoregressive Index Models.” Journal of Econometrics 192 (2): 332–48.
Chen, Rong, Han Xiao, and Dan Yang. 2021. “Autoregressive Models for Matrix-Valued Time Series.” Journal of Econometrics 222 (1): 539–60.
Crone, Theodore M., and Alan Clayton-Matthews. 2005. “Consistent Economic Indexes for the 50 States.” Review of Economics and Statistics 87 (4): 593–603.
Cubadda, Gianluca, and Barbara Guardabascio. 2019. “Representation, Estimation and Forecasting of the Multivariate Index-Augmented Autoregressive Model.” International Journal of Forecasting 35 (1): 67–79.
Engle, Robert F., and Sharon Kozicki. 1993. “Testing for Common Features.” Journal of Business & Economic Statistics 11 (4): 369–80.
Hecq, Alain, Ivan Ricardo, and Ines Wilms. 2026. “Decomposing Co-Movements in Matrix-Valued Time Series: A Pseudo-Structural Reduced Rank Approach.” Econometrics and Statistics, ahead of print. https://doi.org/10.1016/j.ecosta.2026.07.002.
Reinsel, Gregory C. 1983. “Some Results on Multivariate Autoregressive Index Models.” Biometrika 70 (1): 145–56.
Vahid, Farshid, and Robert F. Engle. 1993. “Common Trends and Common Cycles.” Journal of Applied Econometrics 8 (4): 341–60.
Velu, Raja P., Gregory C. Reinsel, and Dean W. Wichern. 1986. “Reduced Rank Models for Multiple Time Series.” Biometrika 73 (1): 105–18.
Wang, Dong, Xialu Liu, and Rong Chen. 2019. “Factor Models for Matrix-Valued High-Dimensional Time Series.” Journal of Econometrics 208 (1): 231–48.
Xiao, Han, Yuefeng Han, Rong Chen, and Chengcheng Liu. Forthcoming. “Reduced Rank Autoregressive Models for Matrix Time Series.” Journal of Business & Economic Statistics.

Appendix

The Balanced System

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^*\]

  • \(\mathbf{y}_{11,t}\): joint, depends on \(\mathbf{y}_{21,t}\), \(\mathbf{y}_{12,t}\) and \(\mathbf{y}_{22,t}\)
  • \(\mathbf{y}_{21,t}\) and \(\mathbf{y}_{12,t}\): column- and row-specific, depend on \(\mathbf{y}_{22,t}\)
  • \(\mathbf{y}_{22,t}\): the only block with lags
  • \(\det\boldsymbol{\Omega} = 1\), and the parameter count equals the RRMAR’s

Back to main

Rank Selection in Simulations

\(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)\)
  • With the lag chosen jointly, true \((1,1)\) and \(p = 1\): right lag \(8\%\) (AIC), \(90\%\) (BIC), \(100\%\) (EBIC)
  • Application size (\(9\times 4\), \(T = 180\), ranks \((2,1)\)): BIC, EBIC, benchmark above \(91\%\)

Back to main

The Rearrangement

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.

Back to main