mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-12 23:36:54 +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
|
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:
|
def end_task_train(rec: Recorder, experiment_name: str) -> Recorder:
|
||||||
"""
|
"""
|
||||||
Finish task training with real model fitting and saving.
|
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]
|
records = [records]
|
||||||
for record in records:
|
for record in records:
|
||||||
cls, kwargs = get_cls_kwargs(record, default_module="qlib.workflow.record_temp")
|
cls, kwargs = get_cls_kwargs(record, default_module="qlib.workflow.record_temp")
|
||||||
if cls is SignalRecord:
|
kwargs = fill_placeholder(kwargs, model, dataset)
|
||||||
rconf = {"model": model, "dataset": dataset, "recorder": rec}
|
r = cls(**kwargs, **{"record", record})
|
||||||
else:
|
|
||||||
rconf = {"recorder": rec}
|
|
||||||
r = cls(**kwargs, **rconf)
|
|
||||||
r.generate()
|
r.generate()
|
||||||
|
|
||||||
return rec
|
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