1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-06-29 17:11:20 +08:00
Files
qlib/examples/portfolio
Dong Zhou 1b8f0b4575 support optimization based strategy (#754)
* support optimization based strategy

* fix riskdata not found & update doc

* refactor signal_strategy

* add portfolio example

* Update examples/portfolio/prepare_riskdata.py

Co-authored-by: you-n-g <you-n-g@users.noreply.github.com>

* fix typo

Co-authored-by: you-n-g <you-n-g@users.noreply.github.com>

* fix typo

Co-authored-by: you-n-g <you-n-g@users.noreply.github.com>

* update doc

* fix riskmodel doc

Co-authored-by: you-n-g <you-n-g@users.noreply.github.com>

Co-authored-by: you-n-g <you-n-g@users.noreply.github.com>
2021-12-28 18:44:20 +08:00
..

Portfolio Optimization Strategy

Introduction

In qlib/examples/benchmarks we have various alpha models that predict the stock returns. We also use a simple rule based TopkDropoutStrategy to evaluate the investing performance of these models. However, such a strategy is too simple to control the portfolio risk like correlation and volatility.

To this end, an optimization based strategy should be used to for the trade-off between return and risk. In this doc, we will show how to use EnhancedIndexingStrategy to maximize portfolio return while minimizing tracking error relative to a benchmark.

Preparation

We use China stock market data for our example.

  1. Prepare CSI300 weight:

    wget http://fintech.msra.cn/stock_data/downloads/csi300_weight.zip
    unzip -d ~/.qlib/qlib_data/cn_data csi300_weight.zip
    rm -f csi300_weight.zip
    
  2. Prepare risk model data:

    python prepare_riskdata.py
    

Here we use a Statistical Risk Model implemented in qlib.model.riskmodel. However users are strongly recommended to use other risk models for better quality:

End-to-End Workflow

You can finish workflow with EnhancedIndexingStrategy by running qrun config_enhanced_indexing.yaml.

In this config, we mainly changed the strategy section compared to qlib/examples/benchmarks/workflow_config_lightgbm_Alpha158.yaml.