Portfolio construction via convex optimization