A US asset manager approached us to build a sophisticated portfolio optimization engine that fulfils the following requirements:
They gave us some sample data, but trusted us to implement the mathematical, computational and infrastructure aspects of the project. We quote them a fixed cost, and an estimate completion time of two months.
Creating the first version of the engine that satisfied all the requirements took only a month, thanks to the flexibility of the Python language. However, the run time of the engine was unacceptable, sometimes needing over 24 hours to complete. This was due to the myriad of constraints that portfolios had to satisfy.
We had to attack the performance issue from multiple angles. We sometimes reduced computational time through more extensive use of fast libraries such as numpy. Other times, we took mathematical approaches, such as through better initial guesses for optimization routines. We then overlaid many of the routines with parallel processing.
After implementing everything, we were able to reduce the run time down to a few minutes at most. We deployed the algorithm on the client's AWS servers. We continue to have a working relationship with the clients on other projects.
“Jin has built our Optimization engine with minimal guidance, and achieved our initial specifications ahead of schedule. He was very easy to work and communicate with, and we look forward to working with him again on future projects.”
Director of Product and Account Management