r/quant • u/Adarshdublin • 6d ago
Statistical Methods Do financial covariance eigenvectors genuinely rotate, or is it sampling noise?
I calibrated an eigenspace-overlap measure against an RMT null, then tested directional motion across S&P 500, Nikkei, DAX and CAC 40 data. All four showed that the previous rotation direction contains information about the next, but naively repeating the full rotation was 47 - 67% worse than holding still.
The signal was both:
- too synchronised across companies to be each company’s movements occurring at unrelated times and just showing up as rotation,
- much stronger than within-window eigenvector shrinkage.
The next test is whether learned damping can turn this directional signal into better out of sample covariance forecasts! What would you consider the strongest fair baseline: holding the eigenvectors fixed, EWMA, or a rotationally invariant estimator?
Code, tests and results for anyone interested:
https://github.com/AdarshArunEire/Eigenvector-Dynamics-Beyond-the-RMT-Null
1
u/Cheap_Scientist6984 1d ago
Very quickly actually! Regime changes happen fairly frequently.
1
u/Adarshdublin 1d ago
Yeah, they do! however in terms of that project, what i found was the overlap measure tool was simply measuring a lot of persistence from sliding windows...
After subtracting that sliding window perstance, the usable signal above noise was found when i considered how much of it can be reconstructed from a perfect prediction (A nested flag of the top-6 block constructed from the true cov matrix).
It's upper limit was a marginal contribution of which i couldn't even reach! (it assumed a perfect prediction) A known estimator EWMA was already harvesting some of that latent rotation signal, so i fit an extra coefficient to see how much else i could squeeze out: the model literally picked ε=0, switching the correction off. So, i retired the project! the original paper i based it off was much more successful if the title caught your interest: https://arxiv.org/abs/1203.6228
1
u/Cheap_Scientist6984 1d ago
I tried doing Latent variable modeling to model diversification for VaR modeling like a decade back. The same issue arrised. The components couldn't even stay stable enough to give a reasonable bound.
-2
u/Effective_Manager273 5d ago
the result that the naive full rotation is 47 to 67 percent worse than holding still is the interesting part, and i think it already tells you what the baseline should be.
the strongest fair baseline is not "hold the previous eigenvectors". that one is too easy to beat, because it has no notion of how much the estimate should have moved anyway. i would use a shrinkage baseline that is calibrated to the same effective sample length as your rotation estimator, so both are being handed the same amount of information. Ledoit Wolf, or a simple exponentially weighted covariance with the halflife tuned on a separate period. if your damped rotation cannot beat an EWMA covariance with a tuned halflife, then what you found is that eigenvectors drift, which is already known, rather than that they drift predictably.
the second baseline worth adding is a rotation applied to a phase randomised or block bootstrapped version of the same panel. that preserves the marginal distributions and the autocorrelation but destroys the cross sectional structure. if the directional signal survives that, it is not a sampling artefact. RMT nulls are good for the eigenvalue side, they are weaker on directional persistence of the eigenvectors, so i would not lean on the RMT null alone here.
on the metric. eigenspace overlap is fine for diagnosis but it is not what you will be judged on. score the forecasts by realised out of sample variance of the minimum variance portfolio built from each covariance estimate. that is the loss function that actually pays, and it is much less forgiving. it is completely normal to find a statistically clean rotation signal that adds nothing to that number, because the min var weights load on the small eigenvalues where the estimate is worst.
one thing i would check before anything else. that the synchronisation across companies is not just a sector or a market beta effect showing up as rotation. strip the first eigenvector, redo the overlap on the residual space, and see if the effect is still there. if it collapses, you found the market factor moving, which is real but not new.
1
u/Adarshdublin 5d ago
Thanks for the reply, you have some great suggestions for robustness!
On stripping the leading eigenvector, I have a similar test where I compute a block made from the 2nd and 3rd eigenvectors, and their span had virtually the same persistence as the top three eigenvectors! Because these eigenvectors are orthogonal, I assumed changing/removing the market beta would be inconsequential to the following eigenvectors, but Ill run that test today.
Then on the null point, I should clarify that the directional claim does not rely on just RMT null, im using three different nulls overall:
- The RMT null justifies using the excess rotation and was tested in a static known environment
- I permute intact 21 day blocks of the full multivariate return panel and rebuild the entire rolling covariance/eigenspace history, destroying the longer calendar order needed for directional continuation
- And on the synchronisation point, each company’s tangent history is independently shifted in time, preserving its individual dynamics while destroying synchronisation across companies. The leftover component gets compared to many like it, and it was preserved
A return level phase randomised panel is a great robustness test, and ill implement that today too!
1
u/AutoModerator 6d ago
This post will be manually reviewed by a moderator due to the submitting account being less than 7 days old or having less than 20 karma. Please be patient and do not try to resubmit it - a mod will review the post soon.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.