Intro: Over the past week we have been working on our general design for our trading algorithm optimization software. Below is a diagram of the various technologies we plan on implementing.
Why did you and your team choose the technologies you did?
Quant Connect – This was requested by our sponsor, but after using it this week I can see why. Its a well designed and powerful open source trading engine. It handles alot of the heavy lifting, such as gathering and organizing price data. At the same time it gives the user unlimited freedom for designing and implementing new strategies.
Docker – We are using docker because it works well with quant connect. To install quant connect, we first needed to install docker. Our group did not have any other good alternatives, so we plan to stick with Docker for containerizing out code.
AWS – Our sponsor asked us to put the software on the cloud. AWS was our first choice since it is one of the largest cloud providers. There are also many tutorials for learning which should help us. Finally, they offer some free services which is great for a school project.
MongoDB – For the database backend, we picked MongoDB. While we do not have much experience with it, we know its a very popular database program and it is something we wanted to try.
Flask – Since we are using python for this project, we decided it would be best to use Flask, a python based web framework, for building our user interface.
How will your project use them?
Quant Connect – After we optimize our trading algorithm, we will need to backtest against price data to see how the strategy would preform. This is where quantconnect comes in. Quant connect will allow us to test the algorithm and collect performance results. This will provided all the data we need to implement and optimize the algorithm
Docker – We will implement docker into our software. It will allow us to containerize our program. This way we can share our program with others, and they do not have to worry about having a specific environment set up.
AWS – For this assigment we are required to house our software in the cloud. AWS will provide the cloud infrastructure for us.
MongoDB – We will use mongoDB to build a database to keep track of our trades, and trading peformace metrics.
Flask – Finally we will use flask to build a user interface that will display the trading results that are stored in MongoDB.
What are their pros and cons?
Quant Connect:
- Pro: The pro is it is pretty easy to use and back test trading strategies.
- Con: The downside is that it is a slow program, and the type of optimization we will be doing will require speed.
Docker:
- Pro: Quick development time. Containerizing our code will make deployment easier, and it should also be easier for the user since they do not need to install anything new. Another benefit is that there is good documentation, which is important because we have not used it before.
- Con: The learning curve. It is a technology our group does not have much experience with, so there could be difficulties as we learn.
AWS
- Pro: Since AWS is so popular, there are many tutorials and documentation. As new users, this should be helpful compared to a less popular cloud service. AWS also provides a free service, so hopefully we can utilize that without incurring costs.
- Cons: Once we move our application to the cloud, there can be possible down time involved so we need to make sure everything is running correctly before the project is due. There are also some limitation to how much you can do for free, so there is a possibility that there may be costs associated with running our software eventually.
MongoDB
- Pro: MongoDB is known to be fast with high performance. It is also simple to use, which will be good for beginners. It is also quick to set up, which is good because we have limited time.
- Con: I have read that mongoDB can have complications with joins and indexing(knowledgenile.com). Since I am not completley sure at this point how we will need to set up the database, the risk is our software will need to do something mongoDB struggles with.
Flask
- Pro: The main pro is that it is a python framework, so the keeps consitent with the rest of the project. The other big pro is that it is pretty easy to use. Since the user interface is only a small part of our project, being able to get it set up quickly is important.
- Con: The cons are that it is “too easy” and has scalability issues. However since the user interface is only a small piece of the project, I think Flask does what we need.
Sources Referenced
https://medium.com/analytics-vidhya/why-aws-advantages-and-disadvantages-f0e666b869b3
https://data-flair.training/blogs/advantages-and-disadvantages-of-docker/
https://www.knowledgenile.com/blogs/pros-and-cons-of-mongodb/