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
mean-(scalar) portfolio optimization
7 messages · Brian G. Peterson, Patrick Burns, David Kane +1 more
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:
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
_______________________________________________ R-SIG-Finance at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance
Brian G. Peterson wrote:
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.
On Wednesday 23 August 2006 12:01, Patrick Burns wrote:
You are misunderstanding 'optim' -- it optimizes a function over one argument but that argument can be a vector.
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.
However the utilities that you mention are hard to optimize. See 'A Data-driven optimization heuristic for downside risk minimization' by Gilli et al.
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:
Brian G. Peterson wrote:
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.
On Wednesday 23 August 2006 12:01, Patrick Burns wrote:
You are misunderstanding 'optim' -- it optimizes a function over one argument but that argument can be a vector.
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.
However the utilities that you mention are hard to optimize. See 'A Data-driven optimization heuristic for downside risk minimization' by Gilli et al.
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
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
David Kane Kane Capital Management 646-644-3626
On Thursday 24 August 2006 05:38, Patrick Burns wrote:
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.
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:
Brian G. Peterson wrote:
Brian G. Peterson wrote:
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.
On Wednesday 23 August 2006 12:01, Patrick Burns wrote:
You are misunderstanding 'optim' -- it optimizes a function over one argument but that argument can be a vector.
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.
However the utilities that you mention are hard to optimize. See 'A Data-driven optimization heuristic for downside risk minimization' by Gilli et al.
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.20 05-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
An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-sig-finance/attachments/20060824/e91688b1/attachment.pl