Two clusters, one covariance
The tail a covariance cannot see — and what a race does about it.
Twelve synthetic assets. Cluster A is five names with Gaussian dependence. Cluster B is five names with a Clayton copula: they crash together — their joint lower tail is far heavier — but are constructed to have exactly the same marginals (standard normal) and the same pairwise correlation as cluster A, at every position of the slider. Two independent names round out the field. Any allocator that is a functional of the covariance is provably identical on the two clusters here: minimum variance, risk parity, HRP, Schur, and the Gaussian race all see two copies of the same block. The difference between the clusters is real — B's five names all fall by more than 1σ on the same day two to three times as often as A's — but it lives entirely above the second moment.
Try it: deepen the joint tail
The slider sets B's lower-tail dependence λL; A's Gaussian
correlation is re-matched at each step so the two clusters' correlation matrices agree to
within 0.004 (verified at build time; the shared correlation is shown in the readout). The
tail-driven race — the Thurstone portfolio driven by the actual simulation rather
than its correlation summary — is the only line that separates.
What this shows
The two flat line-pairs are the covariance-based allocators: minimum variance, and the
Gaussian race driven by the empirical correlation of the very same simulation. Each assigns
clusters A and B the same weight at every λL — necessarily, since the
inputs they are permitted to read are identical between the clusters. The race driven by the
simulation itself gives cluster B up to a quarter less weight than its statistically
indistinguishable twin: in the states that decide the extreme, B's five names behave as one
or two names, and the race prices that effective headcount. This is the
tail-consistency property: the effective number of bets is state-dependent — five in calm
markets, closer to one in a crash — and a covariance, which averages over states, cannot
represent the collapse.
Two honest notes. First, the shared within-cluster correlation rises along the slider (heavier joint tails at fixed margins force it); the comparison at each position is A versus B, which is exact. Second, in practice one rarely simulates the true tail: driving the race with a downside (lower-partial-moment) covariance recovers most of this effect, and the full tail-dependent simulation is the exact limit — that trade-off is quantified in the paper.
Reproducible: experiments/gen_tail_consistency_data.py builds
the embedded weight curves with the allocation package
(transport_weights for the Gaussian race; the loss-side argmin race for the
tail-driven weights; correlation matching verified numerically). The scatter clouds are
sampled live in the browser. Theory: the tail-consistency proposition in the
paper.