Release Notes

Changes since the initial release of QuantRocket are documented here.

How to upgrade

Due to QuantRocket's microservice architecture, each service/container has its own version number and history, rather than the entire application having a single version number and history. Each service's version numbers increment freely; that is, version 1.1.1 of service A doesn't necessarily correspond to or require version 1.1.1 of service B. In some cases new features in a particular service do require a particular minimum version of another service; these dependencies are noted in the release notes.

There are two options for how to upgrade your versions: a full upgrade or a partial upgrade.

Full upgrade

At any time, the Configuration Wizard can be used to generate a YAML file containing the latest versions of each image. You can upgrade your entire deployment by generating a new YAML file to replace your existing YAML file. This ensures that all service dependencies are satisfied and that the behavior of your deployment matches the website documentation.

Partial upgrade

Alternatively you can use the release notes to pick and choose particular version upgrades. Modify your existing YAML file to reference the new version of the image. For example, to upgrade to version 4.4.0.9 of the Juptyer service, modify the relevant section of your YAML to read:

jupyter:
    image: 'quantrocket/jupyter:4.4.0.9'

Deploy the upgrade

Whether you choose a full or partial upgrade, you can deploy the changes as normal using Docker Compose or Docker Cloud. For local deployments:

$ docker-compose -p quantrocket up -d

For cloud deployments, log in to Docker Cloud, save the new Stack file, then go to: Stacks > Actions > Redeploy.

About "layer sharing upgrades"

From some release notes below you will see the words "layer sharing upgrade."

QuantRocket Docker images inherit from a common base image which supplies a variety of libraries needed by all images. A benefit of using a common base image is that the layers of the base image are shared by all child images which results in faster pulls when downloading images and less disk spaced used on your computer.

To maximize layer sharing, whenever a change is made to the base image, new versions of all child images are also released, even if the child images include no new features.

quantrocket/account

1.1.1

  • better type inference with JSON output: integers are now returned as integers instead of as floats
  • exchange rates from a base currency to itself are now stored as a convenience
  • layer sharing upgrade

quantrocket/codeload

1.1.1

  • layer sharing upgrade only

quantrocket/countdown

1.1.1

  • upgrade to quantrocket-client 0.31.0
  • layer sharing upgrade

quantrocket/db

1.1.1

  • layer sharing upgrade
  • improve handling of S3 pulls on service launch to speed up launch time

quantrocket/flightlog

1.1.1

  • layer sharing upgrade only

quantrocket/fundamental

1.1.1

  • better type inference with JSON output: integers are now returned as integers instead of as floats
  • layer sharing upgrade

quantrocket/history

1.1.1

  • improve handling of IB response timeouts

    Previously when the IB API failed to respond to a request after 30 seconds, the history service would log the failure and continue with the next request for the same security. Since non-responses from the IB API are usually temporary, and since the history service fills data from back to forwards (old to new), this behavior could lead to gaps in the data. Now, after a non-response from the IB API, the history service will skip to the next security to avoid creating data gaps.

  • make runtime estimates more informative by including average response time and number of remaining requests

  • shorten request durations for intraday bars to speed up response times
  • layer sharing upgrade

quantrocket/houston

1.1.2

  • redirect root path to JupyterLab; requires quantrocket/jupyter:4.4.0.9 or higher

quantrocket/ibg

970.1

  • layer sharing upgrade only

970.0

  • upgrade to IB Gateway version 970

quantrocket/jupyter

4.4.0.9

  • upgrade from classic Jupyter to JupyterLab
  • add QuantRocket command line interface (CLI) to Jupyter terminal. With this release it is no longer necessary to install the QuantRocket client separately.
  • add custom command to open IB Gateway GUI from Jupyter interface
  • automatically packagify codeload directory and subdirectories and make them importable using import codeload

    Any folders under the codeload directory which are valid Python package names (lowercase letters and underscores) and which contain one or more .py files will automatically be packagified, that is, an __init__.py file will be created if it doesn't already exist. Packages can be imported from the top-level codeload package using standard Python dot notation. For example, a function called my_function located in codeload/moonshot/utils.py can be imported in Jupyter notebooks as follows:

    from codeload.moonshot.utils import my_function
  • upgrade to Alphalens 0.3.0

quantrocket/launchpad

1.1.1

  • layer sharing upgrade only

quantrocket/license-service

1.1.1

  • layer sharing upgrade only

quantrocket/master

1.1.1

  • add Estonia, Latvia, Lithuania exchanges
  • better type inference with JSON output: integers are now returned as integers instead of as floats
  • layer sharing upgrade

quantrocket/moonshot

1.1.1

  • upgrade to Moonchart 0.3.1 (fixes bug with plotting gross returns)

quantrocket/satellite

1.1.1

  • layer sharing upgrade only