Add DoubleEnsemble
This commit is contained in:
		
							
								
								
									
										97
									
								
								configs/qlib/workflow_config_doubleensemble_Alpha360.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								configs/qlib/workflow_config_doubleensemble_Alpha360.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | |||||||
|  | qlib_init: | ||||||
|  |     provider_uri: "~/.qlib/qlib_data/cn_data" | ||||||
|  |     region: cn | ||||||
|  | market: &market all | ||||||
|  | benchmark: &benchmark SH000300 | ||||||
|  | data_handler_config: &data_handler_config | ||||||
|  |     start_time: 2008-01-01 | ||||||
|  |     end_time: 2020-08-01 | ||||||
|  |     fit_start_time: 2008-01-01 | ||||||
|  |     fit_end_time: 2014-12-31 | ||||||
|  |     instruments: *market | ||||||
|  |     infer_processors: [] | ||||||
|  |     learn_processors: | ||||||
|  |         - class: DropnaLabel | ||||||
|  |         - class: CSRankNorm | ||||||
|  |           kwargs: | ||||||
|  |               fields_group: label | ||||||
|  |     label: ["Ref($close, -2) / Ref($close, -1) - 1"] | ||||||
|  | port_analysis_config: &port_analysis_config | ||||||
|  |     strategy: | ||||||
|  |         class: TopkDropoutStrategy | ||||||
|  |         module_path: qlib.contrib.strategy.strategy | ||||||
|  |         kwargs: | ||||||
|  |             topk: 50 | ||||||
|  |             n_drop: 5 | ||||||
|  |     backtest: | ||||||
|  |         verbose: False | ||||||
|  |         limit_threshold: 0.095 | ||||||
|  |         account: 100000000 | ||||||
|  |         benchmark: *benchmark | ||||||
|  |         deal_price: close | ||||||
|  |         open_cost: 0.0005 | ||||||
|  |         close_cost: 0.0015 | ||||||
|  |         min_cost: 5 | ||||||
|  | task: | ||||||
|  |     model: | ||||||
|  |         class: DEnsembleModel | ||||||
|  |         module_path: qlib.contrib.model.double_ensemble | ||||||
|  |         kwargs: | ||||||
|  |             base_model: "gbm" | ||||||
|  |             loss: mse | ||||||
|  |             num_models: 6 | ||||||
|  |             enable_sr: True | ||||||
|  |             enable_fs: True | ||||||
|  |             alpha1: 1 | ||||||
|  |             alpha2: 1 | ||||||
|  |             bins_sr: 10 | ||||||
|  |             bins_fs: 5 | ||||||
|  |             decay: 0.5 | ||||||
|  |             sample_ratios: | ||||||
|  |                 - 0.8 | ||||||
|  |                 - 0.7 | ||||||
|  |                 - 0.6 | ||||||
|  |                 - 0.5 | ||||||
|  |                 - 0.4 | ||||||
|  |             sub_weights: | ||||||
|  |                 - 1 | ||||||
|  |                 - 0.2 | ||||||
|  |                 - 0.2 | ||||||
|  |                 - 0.2 | ||||||
|  |                 - 0.2 | ||||||
|  |                 - 0.2 | ||||||
|  |             epochs: 136 | ||||||
|  |             colsample_bytree: 0.8879 | ||||||
|  |             learning_rate: 0.0421 | ||||||
|  |             subsample: 0.8789 | ||||||
|  |             lambda_l1: 205.6999 | ||||||
|  |             lambda_l2: 580.9768 | ||||||
|  |             max_depth: 8 | ||||||
|  |             num_leaves: 210 | ||||||
|  |             num_threads: 20 | ||||||
|  |             verbosity: -1 | ||||||
|  |     dataset: | ||||||
|  |         class: DatasetH | ||||||
|  |         module_path: qlib.data.dataset | ||||||
|  |         kwargs: | ||||||
|  |             handler: | ||||||
|  |                 class: Alpha360 | ||||||
|  |                 module_path: qlib.contrib.data.handler | ||||||
|  |                 kwargs: *data_handler_config | ||||||
|  |             segments: | ||||||
|  |                 train: [2008-01-01, 2014-12-31] | ||||||
|  |                 valid: [2015-01-01, 2016-12-31] | ||||||
|  |                 test: [2017-01-01, 2020-08-01] | ||||||
|  |     record: | ||||||
|  |         - class: SignalRecord | ||||||
|  |           module_path: qlib.workflow.record_temp | ||||||
|  |           kwargs: {} | ||||||
|  |         - class: SigAnaRecord | ||||||
|  |           module_path: qlib.workflow.record_temp | ||||||
|  |           kwargs: | ||||||
|  |             ana_long_short: False | ||||||
|  |             ann_scaler: 252 | ||||||
|  |         - class: PortAnaRecord | ||||||
|  |           module_path: qlib.workflow.record_temp | ||||||
|  |           kwargs: | ||||||
|  |             config: *port_analysis_config | ||||||
| @@ -8,6 +8,7 @@ | |||||||
| # python exps/trading/baselines.py --alg SFM        # | # python exps/trading/baselines.py --alg SFM        # | ||||||
| # python exps/trading/baselines.py --alg XGBoost    # | # python exps/trading/baselines.py --alg XGBoost    # | ||||||
| # python exps/trading/baselines.py --alg LightGBM   # | # python exps/trading/baselines.py --alg LightGBM   # | ||||||
|  | # python exps/trading/baselines.py --alg DoubleE    # | ||||||
| ##################################################### | ##################################################### | ||||||
| import sys | import sys | ||||||
| import argparse | import argparse | ||||||
| @@ -46,6 +47,8 @@ def retrieve_configs(): | |||||||
|     alg2names["LightGBM"] = "workflow_config_lightgbm_Alpha360.yaml" |     alg2names["LightGBM"] = "workflow_config_lightgbm_Alpha360.yaml" | ||||||
|     # State Frequency Memory (SFM): Stock Price Prediction via Discovering Multi-Frequency Trading Patterns, KDD-2017 |     # State Frequency Memory (SFM): Stock Price Prediction via Discovering Multi-Frequency Trading Patterns, KDD-2017 | ||||||
|     alg2names["SFM"] = "workflow_config_sfm_Alpha360.yaml" |     alg2names["SFM"] = "workflow_config_sfm_Alpha360.yaml" | ||||||
|  |     # DoubleEnsemble: A New Ensemble Method Based on Sample Reweighting and Feature Selection for Financial Data Analysis, https://arxiv.org/pdf/2010.01265.pdf | ||||||
|  |     alg2names["DoubleE"] = "workflow_config_doubleensemble_Alpha360.yaml" | ||||||
|  |  | ||||||
|     # find the yaml paths |     # find the yaml paths | ||||||
|     alg2paths = OrderedDict() |     alg2paths = OrderedDict() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user