Changelog

Here you can see the full list of changes between each QLib release.

Version 0.1.0

This is the initial release of QLib library.

Version 0.1.1

Performance optimize. Add more features and operators.

Version 0.1.2

  • Support operator syntax. Now High() - Low() is equivalent to Sub(High(), Low()).
  • Add more technical indicators.

Version 0.1.3

Bug fix and add instruments filtering mechanism.

Version 0.2.0

  • Redesign LocalProvider database format for performance improvement.
  • Support load features as string fields.
  • Add scripts for database construction.
  • More operators and technical indicators.

Version 0.2.1

  • Support registering user-defined Provider.
  • Support use operators in string format, e.g. ['Ref($close, 1)'] is valid field format.
  • Support dynamic fields in $some_field format. And existing fields like Close() may be deprecated in the future.

Version 0.2.2

  • Add disk_cache for reusing features (enabled by default).
  • Add qlib.contrib for experimental model construction and evaluation.

Version 0.2.3

  • Add backtest module
  • Decoupling the Strategy, Account, Position, Exchange from the backtest module

Version 0.2.4

  • Add profit attribution module
  • Add rick_control and cost_control strategies

Version 0.3.0

  • Add estimator module

Version 0.3.1

  • Add filter module

Version 0.3.2

  • Add real price trading, if the factor field in the data set is incomplete, use adj_price trading
  • Refactor handler launcher trainer code
  • Support backtest configuration parameters in the configuration file
  • Fix bug in position amount is 0
  • Fix bug of filter module

Version 0.3.3

  • Fix bug of filter module

Version 0.3.4

  • Support for finetune model
  • Refactor fetcher code

Version 0.3.5

  • Support multi-label training, you can provide multiple label in handler. (But LightGBM doesn’t support due to the algorithm itself)
  • Refactor handler code, dataset.py is no longer used, and you can deploy your own labels and features in feature_label_config
  • Handler only offer DataFrame. Also, trainer and model.py only receive DataFrame
  • Change split_rolling_data, we roll the data on market calendar now, not on normal date
  • Move some date config from handler to trainer

Version 0.4.0

  • Add data package that holds all data-related codes
  • Reform the data provider structure
  • Create a server for data centralized management qlib-server
  • Add a ClientProvider to work with server
  • Add a pluggable cache mechanism
  • Add a recursive backtracking algorithm to inspect the furthest reference date for an expression

Note

The D.instruments function does not support start_time, end_time, and as_list parameters, if you want to get the results of previous versions of D.instruments, you can do this:

>>> from qlib.data import D
>>> instruments = D.instruments(market='csi500')
>>> D.list_instruments(instruments=instruments, start_time='2015-01-01', end_time='2016-02-15', as_list=True)

Version 0.4.1

  • Add support Windows
  • Fix instruments type bug
  • Fix features is empty bug(It will cause failure in updating)
  • Fix cache lock and update bug
  • Fix use the same cache for the same field (the original space will add a new cache)
  • Change “logger handler” from config
  • Change model load support 0.4.0 later
  • The default value of the method parameter of risk_analysis function is changed from ci to si

Version 0.4.2

  • Refactor DataHandler
  • Add Alpha360 DataHandler

Version 0.4.3

  • Implementing Online Inference and Trading Framework
  • Refactoring The interfaces of backtest and strategy module.

Version 0.4.4

  • Optimize cache generation performance
  • Add report module
  • Fix bug when using ServerDatasetCache offline.
  • In the previous version of long_short_backtest, there is a case of np.nan in long_short. The current version 0.4.4 has been fixed, so long_short_backtest will be different from the previous version.
  • In the 0.4.2 version of risk_analysis function, N is 250, and N is 252 from 0.4.3, so 0.4.2 is 0.002122 smaller than the 0.4.3 the backtest result is slightly different between 0.4.2 and 0.4.3.
  • refactor the argument of backtest function.
    • NOTE: - The default arguments of topk margin strategy is changed. Please pass the arguments explicitly if you want to get the same backtest result as previous version. - The TopkWeightStrategy is changed slightly. It will try to sell the stocks more than topk. (The backtest result of TopkAmountStrategy remains the same)
  • The margin ratio mechanism is supported in the Topk Margin strategies.

Version 0.4.5

  • Add multi-kernel implementation for both client and server.
    • Support a new way to load data from client which skips dataset cache.
    • Change the default dataset method from single kernel implementation to multi kernel implementation.
  • Accelerate the high frequency data reading by optimizing the relative modules.
  • Support a new method to write config file by using dict.

Version 0.4.6

  • Some bugs are fixed
    • The default config in Version 0.4.5 is not friendly to daily frequency data.
    • Backtest error in TopkWeightStrategy when WithInteract=True.

Version 0.5.0

  • First opensource version
    • Refine the docs, code
    • Add baselines
    • public data crawler

Version 0.8.0

  • The backtest is greatly refactored.
    • Nested decision execution framework is supported
    • There are lots of changes for daily trading, it is hard to list all of them. But a few important changes could be noticed
      • The trading limitation is more accurate;
        • In previous version, longing and shorting actions share the same action.
        • In current version, the trading limitation is different between logging and shorting action.
      • The constant is different when calculating annualized metrics.
      • A new version of data is released. Due to the unstability of Yahoo data source, the data may be different after downloading data again.
      • Users could check out the backtesting results between Current version and previous version

Other Versions

Please refer to Github release Notes