Troubleshooting MAD Portfolio Optimization Results
PortfolioMAD Object Destroyed When Modifying
If a PortfolioMAD
object is destroyed when modifying, remember
to pass an existing object into the PortfolioMAD
object if you want to
modify it, otherwise it creates a new object. See Creating the PortfolioMAD Object for details.
Matrix Incompatibility and "Non-Conformable" Errors
If you get matrix incompatibility or "non-conformable" errors, the representation of data in the tools follows a specific set of basic rules described in Conventions for Representation of Data.
Missing Data Estimation Fails
If asset return data has missing or NaN
values, the simulateNormalScenariosByData
function with the 'missingdata'
flag set to
true
may fail with either too many iterations or a singular
covariance. To correct this problem, consider this:
If you have asset return data with no missing or
NaN
values, you can compute a covariance matrix that may be singular without difficulties. If you have missing orNaN
values in your data, the supported missing data feature requires that your covariance matrix must be positive-definite, that is, nonsingular.simulateNormalScenariosByData
uses default settings for the missing data estimation procedure that might not be appropriate for all problems.
In either case, you might want to estimate the moments of asset
returns separately with either the ECM estimation functions such as ecmnmle
or with your own
functions.
mad_optim_transform
Errors
If you obtain optimization errors such as:
Error using mad_optim_transform (line 276) Portfolio set appears to be either empty or unbounded. Check constraints. Error in PortfolioMAD/estimateFrontier (line 64) [AI, bI, AE, bE, lB, uB, f0, f, x0] = mad_optim_transform(obj);
Error using mad_optim_transform (line 281) Cannot obtain finite lower bounds for specified portfolio set. Error in PortfolioMAD/estimateFrontier (line 64) [AI, bI, AE, bE, lB, uB, f0, f, x0] = mad_optim_transform(obj);
estimateBounds
to examine your
portfolio set, and use checkFeasibility
to ensure that
your initial portfolio is either feasible and, if infeasible, that you have
sufficient turnover to get from your initial portfolio to the portfolio set.
Tip
To correct this problem, try solving your problem with larger values for turnover and gradually reduce to the value that you want.
Efficient Portfolios Do Not Make Sense
If you obtain efficient portfolios that, do not seem to make sense, this can
happen if you forget to set specific constraints or you set incorrect constraints.
For example, if you allow portfolio weights to fall between 0
and
1
and do not set a budget constraint, you can get portfolios
that are 100% invested in every asset. Although it may be hard to detect, the best
thing to do is to review the constraints you have set with display of the
PortfolioMAD
object. If you get portfolios with 100% invested
in each asset, you can review the display of your object and quickly see that no
budget constraint is set. Also, you can use estimateBounds
and checkFeasibility
to determine if
the bounds for your portfolio set make sense and to determine if the portfolios you
obtained are feasible relative to an independent formulation of your portfolio
set.
See Also
PortfolioMAD
| estimateScenarioMoments
| checkFeasibility
Related Examples
- Troubleshooting Portfolio Optimization Results
- Troubleshooting for Setting 'Conditional' BoundType, MinNumAssets, and MaxNumAssets Constraints
- Postprocessing Results to Set Up Tradable Portfolios
- Creating the PortfolioMAD Object
- Working with MAD Portfolio Constraints Using Defaults
- Estimate Efficient Portfolios Along the Entire Frontier for PortfolioMAD Object
- Estimate Efficient Frontiers for PortfolioMAD Object
- Asset Returns and Scenarios Using PortfolioMAD Object