mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-02 10:31:00 +08:00
fill_placehorder
This commit is contained in:
@@ -45,6 +45,35 @@ def begin_task_train(task_config: dict, experiment_name: str, recorder_name: str
|
||||
return recorder
|
||||
|
||||
|
||||
def fill_placeholder(kwargs, model, dataset):
|
||||
"""
|
||||
Detect placeholder(<MODEL> and <DATASET>) in dict and fill them.
|
||||
|
||||
Args:
|
||||
kwargs (Dict): the parameter dict will be filled
|
||||
model (Model): fill <MODEL>
|
||||
dataset (Dataset): fill <DATASET>
|
||||
|
||||
Returns:
|
||||
Dict: the parameter dict
|
||||
"""
|
||||
top = 0
|
||||
tail = 1
|
||||
dict_quene = [kwargs]
|
||||
while(top < tail):
|
||||
now_dict = dict_quene[top]
|
||||
top += 1
|
||||
for key in now_dict.keys():
|
||||
if(isinstance(now_dict[key], dict)):
|
||||
dict_quene.append(now_dict[key])
|
||||
tail += 1
|
||||
elif(now_dict[key] == "<MODEL>"):
|
||||
now_dict[key] = model
|
||||
elif(now_dict[key] == "<DATASET>"):
|
||||
now_dict[key] = dataset
|
||||
return kwargs
|
||||
|
||||
|
||||
def end_task_train(rec: Recorder, experiment_name: str) -> Recorder:
|
||||
"""
|
||||
Finish task training with real model fitting and saving.
|
||||
@@ -73,13 +102,9 @@ def end_task_train(rec: Recorder, experiment_name: str) -> Recorder:
|
||||
records = [records]
|
||||
for record in records:
|
||||
cls, kwargs = get_cls_kwargs(record, default_module="qlib.workflow.record_temp")
|
||||
if cls is SignalRecord:
|
||||
rconf = {"model": model, "dataset": dataset, "recorder": rec}
|
||||
else:
|
||||
rconf = {"recorder": rec}
|
||||
r = cls(**kwargs, **rconf)
|
||||
kwargs = fill_placeholder(kwargs, model, dataset)
|
||||
r = cls(**kwargs, **{"record", record})
|
||||
r.generate()
|
||||
|
||||
return rec
|
||||
|
||||
|
||||
|
||||
72
test.yaml
Normal file
72
test.yaml
Normal file
@@ -0,0 +1,72 @@
|
||||
qlib_init:
|
||||
provider_uri: "~/.qlib/qlib_data/cn_data"
|
||||
region: cn
|
||||
market: &market csi300
|
||||
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
|
||||
port_analysis_config: &port_analysis_config
|
||||
strategy:
|
||||
class: TopkDropoutStrategy
|
||||
module_path: qlib.contrib.strategy.strategy
|
||||
kwargs:
|
||||
model: <MODEL>
|
||||
dataset: <DATASET>
|
||||
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: LGBModel
|
||||
module_path: qlib.contrib.model.gbdt
|
||||
kwargs:
|
||||
loss: mse
|
||||
colsample_bytree: 0.8879
|
||||
learning_rate: 0.2
|
||||
subsample: 0.8789
|
||||
lambda_l1: 205.6999
|
||||
lambda_l2: 580.9768
|
||||
max_depth: 8
|
||||
num_leaves: 210
|
||||
num_threads: 20
|
||||
dataset:
|
||||
class: DatasetH
|
||||
module_path: qlib.data.dataset
|
||||
kwargs:
|
||||
handler:
|
||||
class: Alpha158
|
||||
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:
|
||||
model: <MODEL>
|
||||
dataset: <DATASET>
|
||||
- class: SigAnaRecord
|
||||
module_path: qlib.workflow.record_temp
|
||||
kwargs:
|
||||
model: <MODEL>
|
||||
dataset: <DATASET>
|
||||
ana_long_short: False
|
||||
ann_scaler: 252
|
||||
- class: PortAnaRecord
|
||||
module_path: qlib.workflow.record_temp
|
||||
kwargs:
|
||||
config: *port_analysis_config
|
||||
Reference in New Issue
Block a user