# How to implement Maximum Diversification in R?

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)


Where:

• E is vector of asset volatilities,
• P is the vector of weights
• V is the covariance matrix.
• 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
• It would be nice if you could accept one of the answers - Thank you – vonjd Sep 29 '18 at 10:40

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:

EW=equal.weight.portfolio,
RP=risk.parity.portfolio,
MV=min.var.portfolio,
MD=max.div.portfolio,
MC=min.corr.portfolio,
MC2=min.corr2.portfolio,
MCE=min.corr.excel.portfolio,
MS=max.sharpe.portfolio


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

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.