1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-07 04:50:56 +08:00

Merge branch 'main' of https://github.com/you-n-g/qlib into main

This commit is contained in:
Alex Wang
2020-11-26 14:35:35 +08:00
39 changed files with 809 additions and 637 deletions

View File

@@ -36,7 +36,7 @@ task:
num_leaves: 100
thread_count: 20
grow_policy: Lossguide
boostrap_type: Poisson
bootstrap_type: Poisson
dataset:
class: DatasetH
module_path: qlib.data.dataset

View File

@@ -1,11 +1,11 @@
##Requirement
## Requirement
* pandas==1.1.2
* numpy==1.17.4
* scikit_learn==0.23.2
* torch==1.7.0
##HATS
## HATS
* HATS is a a hierarchical attention network for stock prediction which uses relational data for stock market prediction. HATS selectively aggregates information
on different relation types and adds the information to the representations of each company. HATS is used as a relational modeling module with initialized node representations.Furthermore, HATS

View File

@@ -32,7 +32,7 @@ task:
d_feat: 6
hidden_size: 64
output_dim: 1
freq_dim: 15
freq_dim: 20
dropout_W: 0.5
dropout_U: 0.5
n_epochs: 10
@@ -70,4 +70,4 @@ task:
- class: PortAnaRecord
module_path: qlib.workflow.record_temp
kwargs:
config: *port_analysis_config
config: *port_analysis_config

View File

@@ -5,8 +5,10 @@
**GitHub**: https://github.com/google-research/google-research/tree/master/tft
## Run the Workflow
Users can follow the ``workflow_by_code_tft.py`` to run the benchmark.
Users can follow the ``workflow_by_code_tft.py`` to run the benchmark.
### Notes
1. The model must run in GPU, or an error will be raised.
2. New datasets should be registered in ``data_formatters``, for detail please visit the source.
1. Please be **aware** that this script can only support `Python 3.5 - 3.8`.
2. If the CUDA version on your machine is not 10.0, please remember to run the following commands `conda install anaconda cudatoolkit=10.0` and `conda install cudnn` on your machine.
3. The model must run in GPU, or an error will be raised.
4. New datasets should be registered in ``data_formatters``, for detail please visit the source.

View File

@@ -44,7 +44,7 @@ task:
module_path: qlib.data.dataset
kwargs:
handler:
class: Alpha158
class: ALPHA360_Denoise
module_path: qlib.contrib.data.handler
kwargs: *data_handler_config
segments:

View File

@@ -29,18 +29,15 @@ task:
class: XGBModel
module_path: qlib.contrib.model.xgboost
kwargs:
objective: reg:linear
n_estimators: 5000
colsample_bytree: 0.85
learning_rate: 0.0421
subsample: 0.8789
max_depth: 8
num_leaves: 210
num_threads: 20
missing: -1
min_child_weight: 1
eval_metric: rmse
colsample_bytree: 0.5
eta: 0.2
gamma: 0.55
max_depth: 2
min_child_weight: 1.0
n_estimators: 647
subsample: 0.8
nthread: 4
tree_method: hist
dataset:
class: DatasetH
module_path: qlib.data.dataset

View File

@@ -10,6 +10,7 @@ import shutil
import tempfile
import statistics
from pathlib import Path
from operator import xor
from subprocess import Popen, PIPE
from threading import Thread
from pprint import pprint
@@ -174,11 +175,22 @@ def cal_mean_std(results) -> dict:
# function to get all the folders benchmark folder
def get_all_folders() -> dict:
def get_all_folders(models, exclude) -> dict:
folders = dict()
if isinstance(models, str):
model_list = models.split(",")
models = [m.lower().strip("[ ]") for m in model_list]
elif isinstance(models, list):
models = [m.lower() for m in models]
elif models is None:
models = [f.name.lower() for f in os.scandir("benchmarks")]
else:
raise ValueError("Input models type is not supported. Please provide str or list without space.")
for f in os.scandir("benchmarks"):
path = Path("benchmarks") / f.name
folders[f.name] = str(path.resolve())
add = xor(bool(f.name.lower() in models), bool(exclude))
if add:
path = Path("benchmarks") / f.name
folders[f.name] = str(path.resolve())
return folders
@@ -225,13 +237,44 @@ def gen_and_save_md_table(metrics):
# function to run the all the models
def run(times=1):
def run(times=1, models=None, exclude=False):
"""
Please be aware that this function can only work under Linux. MacOS and Windows will be supported in the future.
Any PR to enhance this method is highly welcomed.
Parameters:
-----------
times : int
determines how many times the model should be running.
models : str or list
determines the specific model or list of models to run or exclude.
exclude : boolean
determines whether the model being used is excluded or included.
Usage:
-------
Here are some use cases of the function in the bash:
.. code-block:: bash
# Case 1 - run all models multiple times
python run_all_model.py 3
# Case 2 - run specific models multiple times
python run_all_model.py 3 dnn
# Case 3 - run other models except those are given as arguments for multiple times
python run_all_model.py 3 [dnn,tft,lstm] True
# Case 4 - run specific models for one time
python run_all_model.py --models=[dnn,lightgbm]
# Case 5 - run other models except those are given as aruments for one time
python run_all_model.py --models=[dnn,tft,sfm] --exclude=True
"""
# get all folders
folders = get_all_folders()
folders = get_all_folders(models, exclude)
# set up
compatible = True
if sys.version_info < (3, 3):

View File

@@ -7,19 +7,16 @@ from pathlib import Path
import qlib
import pandas as pd
from qlib.config import REG_CN
from qlib.contrib.model.pytorch_gats import GAT
from qlib.contrib.data.handler import ALPHA360_Denoise
from qlib.contrib.strategy.strategy import TopkDropoutStrategy
from qlib.contrib.evaluate import (
backtest as normal_backtest,
risk_analysis,
)
from qlib.utils import exists_qlib_data
# from qlib.model.learner import train_model
from qlib.utils import init_instance_by_config
import pickle
if __name__ == "__main__":