Algorithms for Solving Financial Portfolio Design Problems