My question covers a more or less classical portfolio optimization situation with a twist: How to partition assets into minimally correlated portfolios, with and without asset overlap.

I have $N$ assets of which I know their price series and thus also covariance matrix. I would like to create a number of portfolios with them them (each with maximum utility, such as minimum variance), such that the mutual correlation of these portfolios is minimized. (A suitable objective function for the correlation norm could be the sum of the first or third powers of the portfolios' upper triangular covariance matrix.) There's two variants of how to do this: (a) without overlap (i.e., an asset may be appear in at most one portfolio), and (b) with overlap (i.e., an asset may appear in multiple portfolios)

Of course, I could approach this problem by brute force (metaheuristic) optimization, but this will become expensive quickly due to combinatorial complexity as $N$ increases. What I'm hoping is that there's a more statistically guided way, be it analytical or semi-analytical to guide a heuristic optimization approach, to partition the assets into minimally correlated portfolios.

  • 1
    $\begingroup$ Just to make it clear: you have N assets AND M minimal variance portfolios which you want to create, i.e. both N and M are given as inputs? $\endgroup$ Commented May 5, 2014 at 10:33
  • $\begingroup$ The total number of assets if given, but the number of portfolios doesn't have to be fixed. And each portfolio may contain a different number of assets. I'm mostly worried about the low correlation between portfolios, and of course the average / median utility of the portfolios. $\endgroup$
    – Powerfool
    Commented May 5, 2014 at 21:05

1 Answer 1


You can start by doing Principal Component Analysis on the returns data and treat principal components as your portfolios .

To ensure that you have non-negativ weights you can use Non-negative Sparse PCA. There is an R implementation in the nsprcomp package. nsprcomp is the necessary function and nneg is the parameter you need to set.

  • $\begingroup$ You might want to get more information on the purpose of the OPs question. Principal portfolios beyond the first one will typically have many short positions that may not be useful for many portfolio managers. $\endgroup$
    – John
    Commented May 5, 2014 at 21:59
  • $\begingroup$ You can use Non-negative Sparse PCA. There is an R implementation in the "nsprcomp" package. nsprcomp is the necessary function and "nneg" is the parameter you need to set. $\endgroup$
    – Kumar
    Commented May 6, 2014 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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