Kicking Off The Capstone

This week we created our project plan and kicked off our Cloud Optimization of Algorithmic Trading Strategies project.  We are working with a project mentor on his side project outside of his day-job to optimize different trading strategies for certain stocks.

Our frontend will take a users input stock and will cycle through different optimization parameters for several different trading strategies stored on our AWS cloud server.  From there we will use multi-objective optimization of the buying and selling strategies using a 3rd party historical trading software, QuantConnect.  The “most-optimized” strategies/ parameters will then be reported back to the frontend in a tabular and graphical format.

We chose to use Flask for our API gateway to AWS since we will be using so much data and the trading strategies are written in python already, so because Python has so many good data libraries that became an easy choice.

The next choice was which cloud to use to host everything, and even though several of us have some GCP experience we chose AWS since our project mentor was most familiar with it and this would give us a good opportunity to broaden our software technologies knowledge.

We were chose to use QuantConnect/Docker/C# as it is used for trading research based on historical data.  The software can be downloaded in a docker container and then utilized in the cloud.  By using QuantConnect we can utilize their software code to perform the different simulations required for the optimization. 

The choice of QuantConnect does come with some issues.  Our PM advised that QuantConnect can be slow to run, and thus in order to compress our time for reviewing 12+ years of data, it may be worthwhile to write some of our own simulation code to optimize the buy Side without considering the sell Side using our own code, and then finally verifying a series of optimization parameters using QuantConnect and reporting that information of profit, and drawdown back to the user. 

To speed-up our back-end development we are attempting to modularize the components to allow multiple people to work simultaneously. In our software architecture diagram there are three clear components à Algorithm optimization/evaluation, Algorithm simulation, and DB access. 

  • For algorithm simulation, this will contain logic that runs a simulation on a buy signal algorithm.  There will also be some connectivity to QuantConnect to run a full simulation using both the buy signal and sell signal. 
  • For Algorithm optimization/ evaluation, this will evaluate the profits and drawdown from the simulation, determine how successful it was using a PyMoo multi-objective library in Python and save it to the a “top optimization parameters” list, and will feed the next algorithm into the simulation method.
  • The DB access, will handle all get and set methods for the different results.  We will store some amount of top algorithms for a specific stock i.e. the EQQQ, S&P, etc.

Our Modularity is high-level based on our project plan, but there will be some further refinement into different methods in each section. A first pass at some higher level functions may look like this:

  • Algoirthm Simulation
    • CreateNextSimulation
    • GetAlgo1Template
    • GetAlgo2Template
    • GetAlgo3Template
    • AlgorithmBuySimulation
    • QuantConnectSimulation
  • Algorithm Optimization/Evaluation
    • MultiObjectiveOptimizationPyMoo
    • StoreAlgorithmParametersInTopList
    • EvaluateAlgorithmInTopList
    • RemoveWorstAlgorthimParametersInList
  • DB Access
    • StoreTopParametersRunForStock
    • GetTopParametersRunForStock

Looking forward to developing this and bring our PM’s initiative into reality.


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *