Here you can see the full list of changes between each QLib release.
This is the initial release of QLib library.
Performance optimize. Add more features and operators.
- Support operator syntax. Now
High() - Low()
is equivalent toSub(High(), Low())
. - Add more technical indicators.
Bug fix and add instruments filtering mechanism.
- Redesign
LocalProvider
database format for performance improvement. - Support load features as string fields.
- Add scripts for database construction.
- More operators and technical indicators.
- 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 likeClose()
may be deprecated in the future.
- Add
disk_cache
for reusing features (enabled by default). - Add
qlib.contrib
for experimental model construction and evaluation.
- Add
backtest
module - Decoupling the Strategy, Account, Position, Exchange from the backtest module
- Add
profit attribution
module - Add
rick_control
andcost_control
strategies
- Add
estimator
module
- Add
filter
module
- Add real price trading, if the
factor
field in the data set is incomplete, useadj_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
- Fix bug of
filter
module
- Support for
finetune model
- Refactor
fetcher
code
- 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 infeature_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
totrainer
- 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)
- 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 ofrisk_analysis
function is changed from ci to si
- Refactor DataHandler
- Add
Alpha360
DataHandler
- Implementing Online Inference and Trading Framework
- Refactoring The interfaces of backtest and strategy module.
- 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 ofnp.nan
in long_short. The current version0.4.4
has been fixed, solong_short_backtest
will be different from the previous version. - In the
0.4.2
version ofrisk_analysis
function,N
is250
, andN
is252
from0.4.3
, so0.4.2
is0.002122
smaller than the0.4.3
the backtest result is slightly different between0.4.2
and0.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)
- 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
- The margin ratio mechanism is supported in the Topk Margin strategies.
- 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.
- 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.
- First opensource version
- Refine the docs, code
- Add baselines
- public data crawler
- 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.
- Current version uses more accurate constant than previous version
- 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
Please refer to Github release Notes