Release Notes

Changes since the initial release of QuantRocket are documented here.

How to update

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 update your versions: a full update or a partial update.

It's a good idea to make a backup of your docker-compose.yml before upgrading so that it's easy to roll back your deployment if needed.

Full update

At any time, the Configuration Wizard can be used to generate a YAML file containing the latest versions of each image. You can update 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 update

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 update 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 update

Whether you choose a full or partial update, you can deploy the changes as normal using Docker Compose:

$ docker-compose -p quantrocket up -d

You can reclaim disk space by removing old images that are no longer needed:

$ docker image prune --all
From some release notes below you will see the words "layer sharing update." 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.2.0

2018-05-30

  • use exchangeratesapi.io instead of fixer.io, and get full rates history from ECB website
  • add account portfolio endpoint

1.1.1

2018-03-12

  • 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

quantrocket/codeload

1.2.0

2018-05-30

  • add optional OVERWRITE_EXISTING env var to overwrite existing files (default is to ignore existing)

1.1.1

2018-03-20

  • layer sharing update only

quantrocket/countdown

1.2.0

2018-05-30

  • log cron mail to logspout
  • update to quantrocket-client==0.40.3

1.1.1

2018-03-20

  • update to quantrocket-client==0.31.0

quantrocket/db

1.2.0

2018-05-30

  • disable s3 pull on launch if env var S3PULL_ON_LAUNCH=false

1.1.1

2018-03-20

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

quantrocket/flightlog

1.2.0

2018-05-30

  • layer sharing update only

1.1.1

2018-03-20

  • layer sharing update only

quantrocket/fundamental

1.2.0

2018-05-30

  • include restatements by default in query financials endpoint, and always use FiscalPeriodEndDate for date filters (to simplify)
  • include delisted securities when returning fundamentals (unless universe does not contain any)

1.1.1

2018-03-20

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

quantrocket/history

1.2.2

2018-07-12

1.2.1

2018-06-05

  • fix memory leak that caused memory usage to grow indefinitely during long-running data collection

1.2.0

2018-05-30

  • add option to override universes when fetching history
  • switch to primary exchange on error "BEST queries are not supported for this contract"
  • allow fetching history availability only, and allow querying availability
  • add support for time-sharded databases
  • cumulative daily calculations for intraday databases
  • include delisted securities when returning history (unless universe does not contain any)
  • add delist_missing option
  • add between_times param to create-db endpoint

1.1.1

2018-03-14

  • 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

quantrocket/houston

1.2.0

2018-05-30

  • remove support for Docker Cloud after service discontinuation
  • don't log jupyter access log because too noisy

1.1.2

2018-03-20

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

quantrocket/ibg

973.1

2018-08-01

  • fix an issue preventing connecting a live account

973.0

2018-07-27

  • update to IB Gateway version 973
  • automatically restart IB Gateway if unresponsive for 60 seconds (doesn't apply if 2-factor authentication is enabled; number of seconds can be set with environment variable IBG_FORCE_RESTART)
  • stability and reliability improvements

972.0

2018-05-30

  • update to IB Gateway version 972

971.0

2018-05-04

  • update to IB Gateway version 971

970.2

2018-05-02

  • add credentials endpoint for setting/getting IB credentials on running container

970.0

2018-03-13

  • update to IB Gateway version 970

quantrocket/jupyter

1.2.2

2018-07-11

  • update to quantrocket-client==0.41.0 with support for segmented backtests (view changes)
  • update to moonshot==0.5.3 (view changes)

1.2.1

2018-06-18

Starting with this version, the versioning scheme for quantrocket/jupyter is changed to mirror other services. (Previously the versioning scheme mirrored the underlying Anaconda version.)

  • update to quantrocket-client==0.40.7 (view changes)
  • update to alphalens==3.2.0

4.4.0.10

2018-05-30

  • update to quantrocket-client==0.40.3
  • update to moonshot==0.5.2

4.4.0.9

2018-03-16

  • update 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
  • update to Alphalens 0.3.0

quantrocket/launchpad

1.2.1

2018-07-24

  • allow sec types IND and FOP in quantrocket.launchpad.permissions.yml

1.2.0

2018-05-30

  • layer sharing update only

1.1.1

2018-03-20

  • layer sharing update only

quantrocket/license-service

1.2.1

2018-07-19

  • support for multiple accounts which are denominated in different base currencies

1.2.0

2018-05-30

  • layer sharing update only

1.1.1

2018-03-20

  • layer sharing update only

quantrocket/master

1.2.1

2018-06-12

  • save tick size rules to securities master database at the time listings are fetched
  • improve error handling of trading calendar endpoints

1.2.0

2018-05-30

  • allow querying DateDelisted
  • change query logic to AND universes and exchange/currencies/etc instead of ORing them
  • add endpoint for rounding prices to tick sizes
  • add endpoints for fetching and querying trading hours

1.1.1

2018-03-16

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

quantrocket/moonshot

1.2.2

2018-07-11

1.2.1

2018-06-18

1.2.0

2018-05-30

  • add trade endpoint
  • better handling of passing on-the-fly params
  • return CSV by default instead of PDF in backtest and paramscan endpoints
  • add codeload to path instead of codeload_moonshot (for parity with Jupyter)

1.1.1

2018-03-20

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

quantrocket/satellite

1.2.0

2018-05-30

  • update to quantrocket-client==0.40.3

1.1.1

2018-03-20

  • layer sharing update only