Let's say I am performing mean-variance optimization subject to some weight constraints.

I'd like to identify the set of corner portfolios so that I can interpolate the entire efficient frontier. A corner portfolio defines a segment on the minimum-variance frontier within which i) portfolios hold identical assets, and ii) the rate of change of asset weights in moving from one portfolio to another is constant. Incidentally, The Global Minimum Variance portfolio is a corner portfolio.

Any convex combination of two adjacent corner portfolios is also a portfolio on the efficient frontier. So these corner portfolios can drastically improve the performance of tracing out the frontier.

Are there tools in R to identify the corner portfolios, or a research paper on an efficient algorithm to identify the portfolios? Markowitz himself introduced the critical line algorithm, however, I recall Sharpe and others have some approaches as well. R or matrix calculus approaches are preferred but I'll take research citations as well.

  • $\begingroup$ Correct me if I'm wrong, but efficient frontier is a linear combination of any two efficient portfolios. $\endgroup$ Dec 23, 2012 at 8:46
  • 2
    $\begingroup$ No - an efficient portfolio is only a linear combination of any two corner portfolios. $\endgroup$ Dec 23, 2012 at 20:31
  • $\begingroup$ Are you sure? Check the paper provided in the answer by Bryce, page 4, in the bottom: "The the set of efficient portfolios of risky assets can be computed as a convex combination of any two efficient portfolios." $\endgroup$ Dec 23, 2012 at 20:34
  • $\begingroup$ *Also, see zivot links below. "The the set of efficient portfolios of risky assets can be computed as a convex combination of any two efficient portfolios." $\endgroup$
    – pat
    Dec 25, 2012 at 7:41
  • $\begingroup$ I think there are two different questions to be considered here: "How to calculate corner portfolios?" and "How to generate the efficent frontier?" The second question can be answered by the mutual fund separation theorem - at least if the asset weights should sum to one (or total wealth). If you impose weight constraints, I don't know. I think the other comments refer to the mutual fund separation theorem. $\endgroup$
    – vanguard2k
    Jan 7, 2015 at 12:28

2 Answers 2


7 years ago I had to solve the problem of a efficiency frontier under linear constraints on the asset weights and also stumbled upon Markowitz Critial Line Algorithm. I still have a directory with some resources in it.

Since Bryce already gave a practical implementation with R code by Eric Zivot, I will concentrate on some papers which might help.

I think one of the best papers is Applying Markowitz's Critical Line Algorithm by Andras and Daniel Niedermayer. There you have some nice matrix algebra. The corner portfolios are called turning points. There is also the german paper Einige Bemerkungen zum Critical Line Algorithmus von Markowitz by Detlef Mertens that is comparable to the paper of Niedermayer but has very much on corner portfolios. Also helpful might be the paper Portfolio Optimization: Part 2 - Constrained Portfolios by John Norstad and maybe this dissertation on Active-Set Methods for Quadratic Programming by Elizabeth Wong, too.

More generally, the Critical Line Algorithm is an instance of the active set method in quadratic programming. You can search in this direction to find much more. For example in this slides from page 16 onwards there is a nice explanation.


This piece of research provides everything you need:


  • 1
    $\begingroup$ Could you summarize the contents of that link? $\endgroup$ Dec 23, 2012 at 2:26
  • 2
    $\begingroup$ @Bryce I downvoted this answer because I cannot find any reference to corner portfolios at all. It is just a basic introduction to some R functions. $\endgroup$
    – vanguard2k
    Jan 7, 2015 at 8:31

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.