An Algorithm for Portfolio Improvement