QuantRocket runs as a suite of Docker containers which can be deployed on your home trading computer or in the cloud provider of your choice.
Docker containers are lightweight, standalone pieces of software that include all the code and dependencies needed to run. Because they are self-contained, a key benefit of Docker containers is that they can run anywhere: under Linux, Mac, or Windows, in the cloud or on your laptop. If you've ever struggled to install code libraries on your computer, you'll appreciate Docker.
QuantRocket consists of numerous Docker containers working in tandem. Each container is a miniature app whose job is to do one thing and do it well. This design pattern is known as a "microservices" pattern and it promotes highly flexible applications.
QuantRocket containers or "services" and their functions are shown below:
|service/container||what it does|
|master||creates and manages the securities master database|
|history||collects, stores, and manages historical price data|
|fundamental||collects, stores, and manages fundamental data|
|realtime||collects, stores, and manages real-time data|
|postgres||runs PostgreSQL/TimescaleDB server for real-time data storage|
|jupyter||runs a JupyterLab environment|
|theia||runs Eclipse Theia code editor|
|houston||API gateway through which services communicate with each other, and you with them|
|license-service||retrieves your QuantRocket subscription details for permission validation|
|ibg||runs IB Gateway|
|ibgrouter||starts and stops IB Gateway service(s)|
|codeload||loads your code and configuration and makes them available to other services|
|db||loads your databases and makes them available to other services|
|flightlog||emits log messages to tell you what's happening (for example, historical data retrieval is complete)|
|logspout||emits detailed, technical log messages|
|account||keeps track of your account balances and base currency exchange rates|
|blotter||submits orders to your broker and records trade executions|
|countdown||runs a cron service to let you schedule jobs|
|satellite||runs custom scripts|
See the video below for a visual depiction of QuantRocket's multi-container design.