@James, I think you are forgetting one thing.
Some might like to use the Optimize API outside the contest arena where it would be their responsibility to choose whatever objective functions they might like with whatever type of restrictions they want.
For instance, I do not like the minimum turnover constraint. I think no minimum should be used. If you can generate some alpha with as low a turnover as possible, all the better for you. Less churning, less commissions, less fees. But, then, I am not forced to participate in any contests.
If you look at the 5% concentration criteria, it is easily satisfied. A portfolio with 20+ stocks would do the trick. However, flying so close to the limit will have you exceed it on an outlier. Therefore, you should pad your selection with some leeway: go for 50+ stocks. I do not like the 5% concentration either. But then again, no one is forcing me to participate in a contest.
I find the Optimize API a most interesting tool to have. You set your objective functions, give it your constraints, and voilà, it outputs the best portfolio weights to meet those objectives.
The real problem are not the constraints. Those may be anything you want. You are just telling your payoff matrix to behave within such and such limits. If there is a solution, the Optimize API will give it to the best of its abilities.
The real problem is in the objective functions. These are functions “you” supply that are intended to be surrogates for profit generation. You want to provide predictive price functions to a blob of price variance where most, on Quantopian, ignore that this swarm is highly unpredictable from day to day. Most often, those predictive functions trade on market noise.
If these functions had predictive value, it would show, and in a big way. They would be able to produce more than the risk-free rate, and maybe, most importantly, exceed market averages: E[R(m)], generate some real alpha.