MATLAB: Efficient portfolios constraints, how can I add a particular constraint

assets constraintefficient frontierportfolio constraints

How can I add an additional constraint to the efficient portfolios using portopt ? I want to compute the portfolios along the efficient frontier with the following 3 constraints:
– Allow for short sell (should be to set 'AssetLims' in portcons);
– Max Number of assets (say x) in each portfolio (should be 'Default' constraint type);
– The (x) assets in a portfolio must be only in that portfolio. I must not use the same assets into different portfolios. How can I add this constraint ?
Thanks, Nick

Best Answer

The first constraint is easy to implement.
ConSet = protcons('PortValue', 1, NumAssets, 'AssetLims', -1, AssetMax)
where NumAssets is the number of assets and AssetMax is a vector with the upper boundary for the portoflio weights.
The two other constraints are a bit of a problem. You cannot order the optimizing function to use only a certain amount of assets. So there is no Matlab function for your problem. If your number of assets is small you could loop through all possible combinations of assets, optimize a portfolio and chosse the portfolio with the highest return for a certain amount of risk. Afterwards yoou repeat that process for the other portfolios of your efficient frontier, but you omit certain assets (according to your third constraint).