Skip to content

mean-(scalar) portfolio optimization

7 messages · Brian G. Peterson, Patrick Burns, David Kane +1 more

#
The R function solve.QP is used by several authors to solve classic 
Markowitz mean-variance optimization using solve.QP and a covariance 
matrix.

Many other classes of portfolio optimization solve for the weighting 
vector w using a scalar measure of risk, such as VaR, Sortino, Omega, 
etc. 

Basically, this class of problems could be expressed as:

let w' be the desired portfolio weights
let R be a set of returns for various instruments

solve for a weighting vector w such that risk is minimized

w' = min(risk(R))

solve for a weighting vector w such that return is maximized over risk 
budget y

w'=max(mean(R)) such that risk(R)<.05

and other similar formulations.

solve.QP does not appear to be appropriate for these kinds of 
optimization.  The functions 'optim' and 'optimize' seem to return scalar 
values, solving only for a single minima or maxima, and not for the 
vector (although I may be misunderstanding them).

Does anyone have any pointers on how you might go about solving these 
kinds of optimization problems in R?  I apologize if this is a simple 
problem that I haven't been able to find a reference for online. I will 
happily post the optimizer code once it's working.

Thank you,

  - Brian
#
Brian,

You are misunderstanding 'optim' -- it optimizes
a function over one argument but that argument can be
a vector.

However the utilities that you mention are hard to
optimize.  See 'A Data-driven optimization heuristic
for downside risk minimization' by Gilli et al.


Patrick Burns
patrick at burns-stat.com
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")
Brian G. Peterson wrote:

            
#

        
On Wednesday 23 August 2006 12:01, Patrick Burns wrote:
Patrick, 

Thanks for correcting me on 'optim'.  I'll take a closer look.  I am aware 
of the problem of finding *a* minima, but not necessarily the best 
minima, in a series that could have more than one.
This paper basically advocates a constrained brute-force estimation.

I'd like to avoid that if possible, for reasons of computational 
complexity.  That's clearly not the only approach being advocated in the 
current literature.


This one:
http://citeseer.ist.psu.edu/lemus99portfolio.html 
Portfolio Optimization w/ Quantile-based Risk Measures
Gerardo Jose Lemus Rodriguez, MIT, 1999

does a pretty good comparison of quantile-based, gradient methods, and 
non-gradient methods, and looks like it has some good prototypes that 
could be implemented.  From this paper, it looks like a non-parametric 
gradient estimator should give acceptable results with minimal 
computational effort.

This paper:
http://www.edhec-risk.com/site_edhecrisk/public/features/RISKReview.2005-12-19.1651
Investing in Hedge Funds: Adding Value through Active Style Allocation 
Decisions
Martellini, Vaissi?, and Ziemann 2005

uses w' = min(VaR(95%)) with constraints on weight 
to good effect to establish strategic weighting, but does not provide the 
math for solving directly for the weighting vector, only expected return 
under a a four-moment CAPM model, or a four-moment Taylor expansion that 
could be transformed and solved for w'.

This paper:
http://www.banque-france.fr/gb/publications/ner/1-108.htm
Optimal Portfolio Allocation Under Higher Moments

solves for a differentiable series of nonlinear equations into a four 
moment CAPM model.  This is another relatively intensive approach that 
I'd like to avoid.

I could reference other papers, but I think that these are representative.  
I was hoping to spark some discussion of optimization around scalar 
measures of risk such as VaR, Omega, or Expected Shortfall.  

I'm hoping that others on this list have done something similar and would 
be willing to point me more directly towards implementation in R, as 
estimation and optimization function in R are still pretty foreign to me.

Regards,

  - Brian
#
If you are serious about portfolio optimization, then
you need to confront integer constraints such as a
maximum number of assets to trade and a maximum
number of assets in the portfolio.  The "nice" optimization
algorithms are going to fail in this case.


Patrick Burns
patrick at burns-stat.com
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")
Brian G. Peterson wrote:

            
#
Patrick Burns writes:
 > If you are serious about portfolio optimization, then
 > you need to confront integer constraints such as a
 > maximum number of assets to trade and a maximum
 > number of assets in the portfolio.  

Well, I guess it depends on what you mean by "serious". I like to
think of myself as someone who is very serious about creating optimal
portfolios, but something like integer contraints has never been an
issue, anywhere that I have worked. I have never heard of an actual
applied example with an institutionally-sized portfolio of equities in
which integer constraints made a meaningful difference to the answer.

But, if there is some example of such a case, a case in which you get
a very different answer using more sophisticated approaches, I would
be interested in reading about it.


Dave
#
On Thursday 24 August 2006 05:38, Patrick Burns wrote:
I understand that completely unconstrained optimization approaches are 
dangerous because of local minima and other problems.  All the papers 
that I've referenced use some constraints, at least on the weighting 
vector, and often on number of instruments.   

I'm working in a pretty contrained universe already. I'll never have 
several thousand instruments in a portfolio, for example. The application 
that I'm looking for is for a strategic asset allocation (for example in 
a portfolio of funds, or in a sector or industry portfolio), rebalanced 
relatively infrequently, so some of the constraints that you mention 
would have been implied by my universe.  I use different approaches for 
frequent trading or tactical allocation.

I've consolidated the references below in GNU format, as I think it will 
make it easier for others to find and discuss these useful papers.

So, back to the goals of my original post, how best to solve the 
constrained mean-(scalar) portfolio optimization problem in R...  

In general, they all fall into a class of problems that may be simply 
stated: 

  let w' be the desired portfolio weights
  let R be a set of returns for various instruments

 solve for a weighting vector w such that risk is minimized

  w' = min(risk(R))

 solve for a weighting vector w such that return is maximized over
 risk budget rb

 w'=max(mean(R)) such that risk(R) < rb
 
and other similar formulations. The details on all these a[proaches are of 
course more complicated, and what we're trying to get... 

It does not look like simple quadratic methods are appropriate for a 
solution using a scalar measure of risk.  So, solve.QP is out.  If anyone 
disagrees with this, I'd love to talk about it.

'optim' may be appropriate, if we have a good way of estimating the 
gradient, and if it can allow for reasonable constraints.  Rodriguez(5) 
discusses methods of estimating the gradient, and 'constrOptim' may be 
able to constrain the space appropriately, I don't have any opinion on 
whether this is a workable approach, community input solicited.

Gilli(1) recommends a constrained brute force approach to estimating.  
Since I am not completely familiar with this paper, having not really 
evaluated brute force methods, I'm not sure what the best approach in R 
would be. I think that one could use 'nlm' or 'constrOptim' to model an 
approach similar to the one Gilli proposes, but input from Patrick or 
anyone else who has tried to implement Gilli would be appreciated.  

Martellini(4) and Rockinger(2) solve a four-moment CAPM using a 
differentiable series of linear equations.  So, I believe that a 
'simplex' or 'glm' or 'gls' approach could be used to go down that path.

Ma(3) approaches the problem from a Quantile Regression angle.  I think 
that this approach is quite promising, and could be solved for in R using 
'quantreg'.

I believe that all of these approaches have theoretical merit.  Like any 
approach, they all have drawbacks and limitations.  

I'd like to avoid spending a bunch of trial and error time implementing 
each of these methods in turn.  Some pointers specifically on 
implementation approaches in R would be vastly appreciated. Thoughts from 
anyone else who has implemented portfolio optimization in R would be very 
valuable. I'll continue to share what I come up with.

Regards,

   - Brian
 
Ref:
(1)
Gilli, M., et. al., "A Data-Driven Optimization Heuristic for Downside 
Risk Minimization" . Swiss Finance Institute Research Paper No. 06-2 
Available at SSRN: http://ssrn.com/abstract=910233

(2)
Jondeau, E. and Rockinger, M.," Optimal Portfolio Allocation Under Higher 
Moments" Bank of France, 2004 Available at:
http://www.banque-france.fr/gb/publications/ner/1-108.htm

(3)
Ma, L. and Pohlman, L. "Return Forecasts and Optimal Portfolio 
Construction: A Quantile Regression Approach" Available at:
http://www.fma.org/Chicago/Papers/equityQR2.pdf

(4)
Martellini, Vaissi?, and Ziemann "Investing in Hedge Funds: Adding Value 
through Active Style Allocation Decisions" EDHEC 2005. Available at:
http://www.edhec-risk.com/site_edhecrisk/public/features/RISKReview.2005-12-19.1651 

(5)
Rodriguez, G. ,"Portfolio Optimization w/ Quantile-based Risk Measures", 
MIT, 1999. Available at http://citeseer.ist.psu.edu/lemus99portfolio.html

Earlier thread: