Re: Simple n-tuple problem - with no simple solution

*To*: mathgroup at smc.vnet.net*Subject*: [mg116034] Re: Simple n-tuple problem - with no simple solution*From*: Daniel Lichtblau <danl at wolfram.com>*Date*: Sat, 29 Jan 2011 19:42:27 -0500 (EST)

Don wrote: > On Jan 27, 12:39 am, DrMajorBob <btre... at austin.rr.com> wrote: >> "Therefore, the time it takes to generate all possible states >> is prohibitive for large n (n > 10) and searches through >> such a voluminous state space is not feasible." >> >> Not true. The number of distinct solutions never exceeds 627. Those >> millions of others are only rearrangements. >> >> Unless there's some reason the order matters? You haven't mentioned a >> reason. >> >> Bobby > [...] > I didn't want to burden people with the details of the application ... > but to answer > the rearrangements question ... Rearrangements are very important. > The values of the n-tuples (which always sum to one) > are percentages. The first element of the n-tuple is the percentage > of asset #1 that goes to make up a portfolio of financial assets. > The second element of the n-tuple is the percentage for asset > #2 as part of the portfolio, etc. How those percentages > are distributed across assets is crucially important > in determining properties of the portfolio like Total Return > and the degree of Risk (represented by multiple > risk functions) of the portfolio. In fact, the optimization > problem is to determine just which arrangement > maximizes an objective function while minimizing other > functions such as overall portfolio risk. And the functions > have no nice properties that can be exploited > to find the solution like convexity, continuity etc. Here are a few ideas to go about this. Use NMinimize. Get rid of the discrete requirement. Then you still have the constraint that your 20 variables sum to 1, but now you regain continuity of the objective and other constraints. If you really require increments of 5% for all holdings, you can almost certainly get a good result at the end by suitable rounding of the result you obtain from the solution to the relaxed problem. That is to say, you should not make this into an integer programming problem unless absolutely necessary. Nothing shown in your description argues for that necessity. You have (as I'm sure you realize) a multi-objective function. Those are tricky. Often best thing is just to weight them and sum. The alternative is to treat some items as hard constraints, and thus put them into the constraints section. Often people will do both, e.g. risk constrainted so that it cannot be greater than xxx, but it is desired that it be less so we also put risk into the weighted objective. I doubt you will get a global optimum, even if you manage to codify the problem in a way that would allow for that. But I would expect NMinimize to give at least a reasonable result. Finally I will mention that there are third party applications for doing various sorts of optimization. http://www.wolfram.com/products/fields/ Some of these specifically mention applicability to computational finance. Daniel Lichtblau Wolfram Research