Quant Memo
Advanced

Kronecker Products and Vectorization

A way of multiplying two matrices that produces a much bigger block matrix, paired with a trick for turning a matrix equation into a plain vector one so standard linear-algebra tools can solve it.

Multiplying two matrices normally means combining rows and columns to produce another matrix of compatible size. The Kronecker product, written ABA \otimes B, does something different: it takes every single entry of AA and replaces it with that entry times the entire matrix BB, stitching the results into one large block matrix. A 2×22\times2 matrix AA Kronecker-multiplied by a 3×33\times3 matrix BB produces a 6×66\times6 matrix made of four 3×33\times3 blocks, each block a scaled copy of BB.

This construction earns its keep alongside vectorization, the operation that stacks all the columns of a matrix into one long column vector, written vec(M)\text{vec}(M). Together they let you rewrite an equation like AXB=CAXB = C, which involves an unknown matrix XX sandwiched between two known ones, as the plain linear system (BA)vec(X)=vec(C)(B^\top \otimes A)\,\text{vec}(X) = \text{vec}(C). That form can be solved with ordinary matrix inversion, whereas the original sandwiched form cannot.

The Kronecker product turns "multiply by a matrix on the left and another on the right" into "multiply by one big matrix," which is exactly what's needed to solve matrix equations using standard vector algebra instead of specialized matrix-equation solvers.

This machinery shows up whenever a model has a natural two-dimensional structure — for instance covariance across both assets and time factors, or the coefficients of a multivariate regression — because it lets those richer models be estimated with the same linear-algebra routines built for ordinary vectors.

Practice in interviews

Further reading

  • Magnus & Neudecker, Matrix Differential Calculus
ShareTwitterLinkedIn