Qlib is an AI-oriented quantitative investment platform, which aims to realize the potential, empower the research, and create the value of AI technologies in quantitative investment.
It contains the full ML pipeline of data processing, model training, back-testing; and covers the entire chain of quantitative investment: alpha seeking, risk modeling, portfolio optimization, and order execution.
With Qlib, user can easily try ideas to create better Quant investment strategies.
For more details, please refer to our paper "Qlib: An AI-oriented Quantitative Investment Platform".
- Framework of Qlib
- Quick Start
- Quant Model Zoo
- Quant Dataset Zoo
- More About Qlib
- Offline Mode and Online Mode
- Related Reports
- Contributing
At the module level, Qlib is a platform that consists of the above components. The components are designed as loose-coupled modules and each component could be used stand-alone.
Name | Description |
---|---|
Infrastructure layer |
Infrastructure layer provides underlying support for Quant research. DataServer provides high-performance infrastructure for users to manage and retrieve raw data. Trainer provides flexible interface to control the training process of models which enable algorithms controlling the training process. |
Workflow layer |
Workflow layer covers the whole workflow of quantitative investment. Information Extractor extracts data for models. Forecast Model focuses on producing all kinds of forecast signals (e.g. alpha, risk) for other modules. With these signals Portfolio Generator will generate the target portfolio and produce orders to be executed by Order Executor . |
Interface layer |
Interface layer tries to present a user-friendly interface for the underlying system. Analyser module will provide users detailed analysis reports of forecasting signals, portfolios and execution results |
- The modules with hand-drawn style are under development and will be released in the future.
- The modules with dashed borders are highly user-customizable and extendible.
This quick start guide tries to demonstrate
- It's very easy to build a complete Quant research workflow and try your ideas with Qlib.
- Though with public data and simple models, machine learning technologies work very well in practical Quant investment.
Here is a quick demo shows how to install Qlib
, and run LightGBM with qrun
. But, please make sure you have already prepared the data following the instruction.
This table demonstrates the supported Python version of Qlib
:
install with pip | install from source | plot | |
---|---|---|---|
Python 3.6 | ✔️ | ✔️ (only with Anaconda ) |
✔️ |
Python 3.7 | ✔️ | ✔️ | ✔️ |
Python 3.8 | ✔️ | ✔️ | ✔️ |
Python 3.9 | ❌ | ✔️ | ❌ |
Note:
- Please pay attention that installing cython in Python 3.6 will raise some error when installing
Qlib
from source. If users use Python 3.6 on their machines, it is recommended to upgrade Python to version 3.7 or useconda
's Python to installQlib
from source. - For Python 3.9,
Qlib
supports running workflows such as training models, doing backtest and plot most of the related figures (those included in notebook). However, plotting for the model performance is not supported for now and we will fix this when the dependent packages are upgraded in the future.
Users can easily install Qlib
by pip according to the following command.
pip install pyqlib
Note: pip will install the latest stable qlib. However, the main branch of qlib is in active development. If you want to test the latest scripts or functions in the main branch. Please install qlib with the methods below.
Also, users can install the latest dev version Qlib
by the source code according to the following steps:
-
Before installing
Qlib
from source, users need to install some dependencies:pip install numpy pip install --upgrade cython
-
Clone the repository and install
Qlib
as follows.- If you haven't installed qlib by the command
pip install pyqlib
before:git clone https://github.com/microsoft/qlib.git && cd qlib python setup.py install
- If you have already installed the stable version by the command
pip install pyqlib
:git clone https://github.com/microsoft/qlib.git && cd qlib pip install .
Note: Only the command
pip install .
can overwrite the stable version installed bypip install pyqlib
, while the commandpython setup.py install
can't. - If you haven't installed qlib by the command
Tips: If you fail to install Qlib
or run the examples in your environment, comparing your steps and the CI workflow may help you find the problem.
Load and prepare data by running the following code:
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn
This dataset is created by public data collected by crawler scripts, which have been released in the same repository. Users could create the same dataset with it.
Please pay ATTENTION that the data is collected from Yahoo Finance and the data might not be perfect. We recommend users to prepare their own data if they have high-quality dataset. For more information, users can refer to the related document.
Qlib provides a tool named qrun
to run the whole workflow automatically (including building dataset, training models, backtest and evaluation). You can start an auto quant research workflow and have a graphical reports analysis according to the following steps:
-
Quant Research Workflow: Run
qrun
with lightgbm workflow config (workflow_config_lightgbm_Alpha158.yaml as following.cd examples # Avoid running program under the directory contains `qlib` qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml
If users want to use
qrun
under debug mode, please use the following command:python -m pdb qlib/workflow/cli.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml
The result of
qrun
is as follows, please refer to Intraday Trading for more details about the result.'The following are analysis results of the excess return without cost.' risk mean 0.000708 std 0.005626 annualized_return 0.178316 information_ratio 1.996555 max_drawdown -0.081806 'The following are analysis results of the excess return with cost.' risk mean 0.000512 std 0.005626 annualized_return 0.128982 information_ratio 1.444287 max_drawdown -0.091078
Here are detailed documents for
qrun
and workflow. -
Graphical Reports Analysis: Run
examples/workflow_by_code.ipynb
withjupyter notebook
to get graphical reports