I use the Random Matrix Theory to filter out the information from the correlation matrix that is associated with noise - Marcenko Pastur band. That is straight forward.

Then I follow Rosenow, Bernd, et al. "Portfolio optimization and the random magnet problem." EPL (Europhysics Letters) 59.4 (2002): 500. The procedure described in the paper

It says how to reconstruct the correlation matrix with filtered eigenvalues in the original basis.

My logic: I need to diagonalise a correlation matrix C, which is symmetric, the result is a sparse matrix with eigenvalues on the diagonal. The transformation matrix Q has columns of the respective eigenvectors.

computation $D=diag(t(Q)\%*\%empCor\%*\%Q)$ yields indeed the eigenvalues, where $t()$ is transpose. So that's ok.

As the paper says I denoise the eigenvalues by setting to zero all lower than the Marcenko-Pastur band and sort the diagonal in ascending order. I also sort the respective eigenvectors (although they dont specifically say) with it.

Now I understand I need to transform the to transform the new D_hat to basis of C: I would do C_hat= Q%%D_hat%%t(Q), but it always yields one negative eigenvalue of the new matrix, and hence the new correlation matrix is no longer positive(semi) definite. I cannot figure out why it happens, because the paper does not specify there needs to be any correction done.


I figured the problem out, if anyone ever needs it. It is based on Brian Rowe's tawny package in R

1) Work with correlation, not covariance, matrix!

2) Get eigenvalues and eigenvectors (save those)

3) Replace all eigenvalues below upper Marcenko-Pastur band with their average

4) create a diagonal matrix with the new eigenvalues. Change into old basis


5) Apply scaling correction $DiagM=diag(C_{hat})*o*I$ where $*o*$ is the outer product and $I$ is the unit matrix. 6) Resulting denoised matrix is

$C_{hat}=\frac{C_{hat}}{\sqrt{DiagM \times DiagM^{T}}}$, where $\times$ is the elementwise product.


The goal is to denoise the price return data matrix $\bf{X}$ (days in rows, assets in columns) by

  1. fitting the MP density to the eigenvalues of the asset $\times$ asset correlation matrix $\bf{R}$
  2. identify the noise cuttoff, $\lambda^+$, a parameter of the MP eigendensity
  3. regress (multivariate) all of the days $\times$ 1 vectors of principal component scores associated with the noise eigenvalues on all the original assets
  4. the residuals of this regression then become the new denoised asset data file $\bf{X}^*$
  5. then determine $\bf{R}^*$ from the denoised asset data matrix $\bf{X}^*$.

This $\bf{R}^*$ matrix is then used in e.g. Markowitzian modern portfolio theory for asset weight determination.

  • $\begingroup$ Do you have any source, please? $\endgroup$ – Jan Sila Feb 25 '18 at 14:43
  • $\begingroup$ Eq 19 in arxiv.org/abs/physics/0609053 $\endgroup$ – 4k3x9d7r Feb 26 '18 at 17:18
  • $\begingroup$ It's Eq 20 in the Arxiv.org pdf. $\endgroup$ – 4k3x9d7r Feb 26 '18 at 17:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.