Sign up ×
Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It's 100% free, no registration required.

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.

share|improve this question
Correct me if I'm wrong, but efficient frontier is a linear combination of any two efficient portfolios. –  Alexey Kalmykov Dec 23 '12 at 8:46
No - an efficient portfolio is only a linear combination of any two corner portfolios. –  Quant Guy Dec 23 '12 at 20:31
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." –  Alexey Kalmykov Dec 23 '12 at 20:34
*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." –  pat Dec 25 '12 at 7:41
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. –  vanguard2k Jan 7 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.

share|improve this answer

This piece of research provides everything you need:

share|improve this answer
Could you summarize the contents of that link? –  chrisaycock Dec 23 '12 at 2:26
@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. –  vanguard2k Jan 7 at 8:31

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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