Hotelling's T-Squared Test
The multivariate version of the t-test — it checks whether a whole vector of measurements has shifted from what you expected, in a way that properly accounts for how those measurements move together.
Prerequisites: One-Sample and Two-Sample t-Tests, The Chi-Squared Distribution
Imagine judging whether a basketball player's shooting has genuinely changed by looking at two numbers: her free-throw percentage and her three-point percentage. You could test each one separately with an ordinary t-test. But that misses something important: on a hot night, both percentages tend to rise together; on a cold night, both tend to fall together. The two numbers are correlated. If you test them one at a time, you're throwing away the information in how they move together, and you can easily get the wrong answer — declaring "no real change" when both numbers moved by a small but perfectly correlated amount, or the reverse. Hotelling's T-squared test is the tool built for exactly this: it tests whether a whole vector of measurements has shifted from what's expected, using a distance metric that accounts for the correlation between the measurements, instead of running several separate one-dimensional tests that ignore it.
The setup, one symbol at a time
Suppose you have a sample of observations of a -dimensional vector — say metrics measured on dates — with sample mean vector and sample covariance matrix (a matrix capturing each metric's variance and how the metrics covary). You want to test whether the true mean vector equals some hypothesized value . Hotelling's T-squared statistic is:
In words: take the vector of differences between your observed mean and the hypothesized mean, and measure its "distance" from zero using the inverse of the sample covariance matrix as the yardstick — this is exactly a Mahalanobis distance, scaled by . Using the raw covariance's inverse means a difference in a direction where the metrics historically vary a lot counts for less than the same-sized difference in a direction where they normally barely move — the test is automatically calibrated by how much natural variability and correlation exists in each direction. Under the null hypothesis that the true mean really is , a rescaled version of follows an F-distribution:
Drag the correlation in the explorer above toward a strong positive value like the 0.76 used in worked example 1 below — the tighter, more diagonal the cloud becomes, the more a joint movement away from the center along that diagonal is "expected," while any movement across the diagonal becomes comparatively much more surprising, which is exactly what the inverse-covariance weighting inside is capturing.
In words: after the right scaling, the T-squared statistic follows a known reference distribution (the F-distribution with and degrees of freedom), so you can compute a p-value exactly the same way an ordinary t-test does — compare the observed to how large it could plausibly be by chance.
Hotelling's T-squared is a Mahalanobis distance dressed up as a hypothesis test: it measures how far an observed mean vector sits from a hypothesized one, using the inverse covariance matrix as the yardstick, so correlated variables that move together are tested jointly rather than one dimension at a time.
Worked example 1: testing two correlated strategy metrics
Two metrics are measured over periods: metric 1 (e.g. an information coefficient) and metric 2 (e.g. a hit rate, both centered/standardized for simplicity). Sample mean vector . Sample covariance matrix:
Correlation between the two is — strongly correlated. Null hypothesis: (no true effect). Difference vector . Determinant of : . Inverse:
Compute : first . Then . So . Converting to : with , , , compared against — the 1% critical value there is roughly , so is comfortably significant: the joint shift is real.
Worked example 2: separate tests can disagree with the joint test
Testing metric 1 alone: — clearly significant on its own. Testing metric 2 alone: — also significant on its own here. But shrink the example: suppose instead with the same covariance structure — each univariate t-stat individually comes out modest (, , neither individually significant at conventional levels), yet because the two metrics are highly correlated (0.76), a joint, correlated small move in the same direction is a more surprising, harder-to-get-by-chance event than either marginal move alone — recomputing for this smaller gives -scaled... concretely, scaling the earlier result by roughly -ish magnitude change in each coordinate lands in a range that can still clear the joint significance threshold even where neither univariate test does — precisely because the correlation structure means a joint small move is statistically less likely to be noise than a single-dimension move of the same size.
What this means in practice
- Style-drift and exposure-shift detection. Checking whether a portfolio's whole vector of factor exposures, or a strategy's whole vector of performance metrics, has moved from a baseline is a natural T-squared application — it correctly treats correlated exposures as correlated rather than testing each one blind to the others.
- It generalizes the logic behind joint alpha tests. Formal joint significance tests for a set of strategy or asset alphas (in the spirit of the GRS test) build on the same Mahalanobis-distance-as-F-statistic idea.
- It requires to be invertible, meaning must comfortably exceed — in a high-dimensional setting (many metrics, few periods) the sample covariance becomes singular or near-singular and becomes unstable, which is exactly the p greater than n regime problem.
The classic confusion: running several separate univariate t-tests on correlated variables and treating "none individually significant" as evidence of "no real difference." This both loses statistical power — a small, correlated move across every variable can be a strong joint signal even when no single variable clears its own bar — and, in the other direction, running many separate tests inflates the chance that something looks significant by pure multiple-testing luck. Hotelling's T-squared avoids both failure modes at once because it tests the whole vector jointly, using the actual correlation structure, rather than pretending the variables are independent.
Related concepts
Practice in interviews
Further reading
- Johnson & Wichern, Applied Multivariate Statistical Analysis, ch. 5
- Hotelling (1931), The Generalization of Student's Ratio