First, creating a covar matrix from a set of series of unequal lengths is non-trivial and several approaches (eg: one factor or two factor models) will yield different covar matrices. I do see that you said all asset classes have same length (n periods) meaning the above won't apply, but I thought I'd still say this because unless you cherry pick n while working with many assets, most likely you will run into assets with have unequal time series (eg: some company started recently). The point is you need to be consistent about your covar calc technique especially if the covar comes from different sources.
Another warning when fitting returns to covar matrices; I wouldn't advise it since you can have inconsistent results if you use observed returns with a "given" covar matrix for portfolio construction. Returns are observed 'facts' and the covar matrix embodies the relationships, so to avoid inconsistent portfolio results it's best to compute the covar from the raw result info (and always do so with the same technique)
With that out of the way, lets explore measures of "degree of match". Lets define:
- C = computed covar matrix (from your return series) and
- C' = given covar matrix that you got from 'somewhere' that you're trying to see if it "fits".
Different measures:
Principle component analysis. Basically determine the eigenvectors and eigenvalues for the COVAR matrix (there will be N of each for an NxN covar matrix). The largest eigenvalues tell you the eigenvectors (or principle components) that capture the strongest 'features' of the COVAR matrix. An introduction to eigenvectors/values. You then compare them in C vs C' to see if the features have changed. If changed, the returns likely do NOT correspond to your 'given COVAR' matrix. Comparison details for C and C':
- Find the largest eigenvalue of C => pick corresponding eigenvector
- Find the largest eigenvalue of C' => pick corresponding eigenvector
- $\theta$ is angle between those two vectors.
- Absolute value of $\theta$ less than 2-4 degrees => C and C' are similar ("2-4" depends on asset volatility and time period).
- If "no change" then the returns likely represent the "given" CoVAR (and vice versa)
- You can tighten the checks by doing the above for not just the largest but also for the smaller components (higher order components) by then checking the 2nd largest, then 3rd largest and so on. If iterate over all N eigenvectors, then you have checked all N dimensions, progressively going from the strongest dimension (at iteration #1) to the weakest dimension (in iteration N).
|C - C'| is a decent choice. Although it's simple, there is no direct physical significance to it because it nets too many individual covars; you are essentially collapsing N dimensions into a single scalar quantity with no prioritization of "strong features" (like above)
Another decent heuristic would be signs and magnitudes of elements within the C-C' matrix. i.e.
- best = have C-C' as zero i.e. identical covars (duh! :) )
- ok-to-good = all elements of C-C' are either slightly positive (incl 0) or all slightly negative (incl 0). The actual sign (+/-) is unimportant as compared to the consistency of the signs.
- bad-to-worst = large absolute values with 1/2 positives and 1/2 negatives
Note that C-C' is a relative measure, so you will need to define your own min-max bounds and then your own intervals for "almost no change". Easiest to do so is look at historical min-max's and adjust them for forward looking (and like every forward looking projection in quant finance, it's art+science). For no change, look at recent times when you recall things being ok in your portfolio and use those values.