Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Enhanced Indexing as a Portfolio Optimizer #280

Merged
merged 32 commits into from
Mar 17, 2021

Conversation

yongzhengqi
Copy link
Contributor

@yongzhengqi yongzhengqi commented Feb 22, 2021

Implement Enhanced Indexing as a Portfolio Optimizer. And implemented a structured covariance estimator to boost the optimization process.

Description

Enhanced Indexing is a popular portfolio construction strategy. It's one of the index-tracking strategies, which means the possibility of both alpha and rather tender volatility.

A structured covariance estimator assumes observations can be predicted by multiple factors X = FB + U where F can be specified by explicit risk factors or latent factors. Therefore the structured covariance can be estimated by cov(X) = F cov(B) F.T + cov(U).

Motivation and Context

This pull request makes no change to current functions. It simply adds new featrues. Enhanced Indexing is a popular portfolio construction strategy while a structured covariance estimator will boost many optimization-based portfolio construction strategies.

How Has This Been Tested?

  • Pass the test by running: pytest qlib/tests/test_all_pipeline.py under the upper directory of qlib.
  • If you are adding a new feature, test on your own test scripts.

Screenshots of Test Results (if appropriate):

  1. Pipeline test:

pipeline_test

2. Your own tests:
  • Add test_structured_cov_estimator.py to qlib/tests/

image

image

Types of changes

  • Fix bugs
  • Add new feature
  • Update documentation

@Derek-Wds Derek-Wds requested review from you-n-g and evanzd February 22, 2021 03:46
qlib/model/base.py Outdated Show resolved Hide resolved
qlib/portfolio/optimizer.py Outdated Show resolved Hide resolved
@Derek-Wds Derek-Wds added the enhancement New feature or request label Feb 22, 2021
qlib/portfolio/__init__.py Outdated Show resolved Hide resolved
qlib/model/riskmodel/base.py Outdated Show resolved Hide resolved
Copy link
Contributor

@evanzd evanzd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comments have been added. Please update your commits accordingly.

@yongzhengqi yongzhengqi marked this pull request as ready for review March 8, 2021 12:48
@yongzhengqi
Copy link
Contributor Author

Comments have been added. Please update your commits accordingly.

All done.

@you-n-g you-n-g merged commit 023c1fe into microsoft:main Mar 17, 2021
@evanzd evanzd mentioned this pull request Dec 19, 2021
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants