# GP 因子 + LightGBM 实验(需先运行 GP 挖掘并生成 gp_qlib_handler.pkl) # 运行: python scripts/run_qrun.py --config config/workflows/workflow_gp_lightgbm.yaml --run-id qlib_gp_run_0 experiment_name: ml_alpha_gp qlib_init: provider_uri: data/qlib_data/cn_data region: cn exp_manager: class: MLflowExpManager module_path: qlib.workflow.expm kwargs: uri: mlruns default_exp_name: ml_alpha_gp market: &market csi300 benchmark: &benchmark SH000300 # handler 路径由 run_qrun.py 根据 RUN_ID 动态注入 gp_handler_config: &gp_handler_config instruments: *market start_time: 2010-01-01 end_time: 2020-09-25 fit_start_time: 2010-01-01 fit_end_time: 2017-12-31 handler_path: outputs/gp_mining/qlib_gp_run_0/gp_qlib_handler.pkl port_analysis_config: &port_analysis_config strategy: class: TopkDropoutStrategy module_path: qlib.contrib.strategy kwargs: signal: topk: 50 n_drop: 5 backtest: start_time: 2019-04-01 end_time: 2020-09-24 account: 100000000 benchmark: *benchmark exchange_kwargs: limit_threshold: 0.095 deal_price: close open_cost: 0.0005 close_cost: 0.0015 min_cost: 5 task: model: class: LGBModel module_path: qlib.contrib.model.gbdt kwargs: loss: mse learning_rate: 0.05 max_depth: 8 num_leaves: 128 colsample_bytree: 0.8 subsample: 0.8 num_threads: 8 dataset: class: DatasetH module_path: qlib.data.dataset kwargs: handler: class: GPFactorHandler module_path: factor_engine.gp_handler kwargs: *gp_handler_config segments: train: [2010-01-01, 2017-12-31] valid: [2018-01-01, 2019-03-31] test: [2019-04-01, 2020-09-25] record: - class: SignalRecord module_path: qlib.workflow.record_temp kwargs: model: dataset: - 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