Effective breadth
Twenty-two correlated assets are not twenty-two independent tests. M_eff measures how many you actually have.
The problem#
Cross-sectional testing is the best habit on this server: one specification across many assets counts as one trial, and the assets are the sample.
But "22 assets" is not "22 independent observations" if the assets move together. Crypto on a single venue moves together a great deal.
stats_effective_tests(universe="coinbase-liquid-22")
What it measures#
M_eff is computed from the eigenspectrum of the asset return correlation matrix. For the 22 liquid Coinbase USD pairs with full history:
| Estimator | M_eff |
|---|---|
| Participation ratio | 3.0 |
| Entropy | 6.8 |
| Nominal asset count | 22 |
Mean pairwise correlation is 0.52, and the first principal component explains 57% of variance.
Three independent tests. Not twenty-two.
Both numbers are reported, and you need both#
The server reports every estimator rather than reducing them to one, because the conservative direction is opposite for the two uses:
- Raising a multiplicity hurdle — use the larger value. A hurdle based on the maximum over trials grows with the effective number of tests; understating it makes the hurdle too easy.
- Widening a confidence interval — use the smaller value. Fewer independent observations means a wider interval; overstating M_eff makes the interval too narrow.
Taking the smallest M_eff was documented as "conservative" in an earlier version. For a maximum-over-trials hurdle it is anti-conservative, because E[max SR] rises with N. The two directions are now reported separately.
Which one the gate uses#
gate_check uses the participation ratio — the smaller of the two — as its
breadth floor, and the threshold for the 22-pair Coinbase universe is 3.0. The
tool reports both estimators regardless, and names which it applied.
That is a third use, distinct from the two above. The gate asks "is the evidence broad enough to proceed?", so it takes the value that credits you with the least breadth. Using entropy there would let a basket clear the bar on the more generous of two estimates, which is the wrong direction for a check whose job is to stop you.
stats_effective_tests also returns the choice pre-made for each use:
{"m_eff_for_standard_error": 3.0, // the smaller — widening an interval
"m_eff_for_multiplicity": 6.8} // the larger — raising a hurdle
Why not the Kaiser criterion#
M_eff no longer uses the Kaiser criterion (counting eigenvalues greater
than 1). It reports 1 for perfectly independent assets: with correlation
matrix C = I every eigenvalue is exactly 1, so none exceeds 1.
Participation ratio and entropy both satisfy the properties you want:
M_eff(independent assets) = k
M_eff(identical assets) = 1
What this means for your research#
Adding coins on one venue buys far less breadth than the count suggests. Going from 10 pairs to 22 pairs on Coinbase does not roughly double your evidence; it adds a little.
Genuine breadth comes from sources that are not the same bet: different venues, different asset classes, different time zones, different mechanisms. Within a single crypto venue, most of what looks like diversification is one factor wearing 22 hats.
Pooled standard errors on this server use M_eff, not the asset count.
Cross-sectional dispersion is descriptive#
The spread of per-asset results within a cross-sectional run is reported as a descriptive statistic, not as a standard error. The assets are correlated; treating their dispersion as if it came from independent draws would understate uncertainty by roughly the square root of the ratio between the asset count and M_eff.
Read this page as Markdown:
/docs/concepts/breadth.md