Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to code up the optimization problem for Max Diversification Portfolios.

The main problem I am having is properly translating the objective function in to code and port it in to the optimizer in general.

How would one approach this? Can this be solved with R's quadprog?

The objective function to maximize is the diversification ratio:

d(P) = P'E / sqrt(P'VP)


  • E is vector of asset volatilities,
  • P is the vector of weights
  • V is the covariance matrix.
share|improve this question
I doubt you are a professional quant, but I'll answer this because I think it can be interesting for other users. Please read the faq again though, and consider completing your user data. – SRKX May 4 '13 at 22:49

You can find the full R source code for that at the site of Systematic Investor.

For example have a look at this post about Maximum Sharpe Portfolios. There you see that he created the helper function portfolio.allocation.helper for the following optimization methods:


Now the full source code can be found here.

You'll want to have a look at max.div.portfolio which is based on the method in:

Toward Maximum Diversification by Y. Choueifaty, Y. Coignard, The Journal of Portfolio Management, Fall 2008, Vol. 35, No. 1: pp. 40-51

share|improve this answer

For the record, the formula for maximum diversification portfolio can be found in this paper.

As you can see from the quadprog documentation, it minimizes problems of the following form:

$$ \min - d'b + \tfrac12 b' D b ~ \text{with} ~ A' b \geq b_0 $$

So clearly, it's not good for your formula.

You can consider optim or one of its extensions for your problem.

share|improve this answer

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.