1
0
mirror of https://github.com/microsoft/qlib.git synced 2026-07-14 08:16:54 +08:00

update rolling workflow

This commit is contained in:
bxdd
2021-03-25 19:54:52 +08:00
parent f6dc25b229
commit 4ec300787e

View File

@@ -3,8 +3,9 @@
import qlib import qlib
import pickle import pickle
import datetime
import pandas as pd import pandas as pd
from datetime import datetime
from qlib.config import REG_CN from qlib.config import REG_CN
from qlib.data.dataset.handler import DataHandlerLP from qlib.data.dataset.handler import DataHandlerLP
from qlib.contrib.data.handler import Alpha158 from qlib.contrib.data.handler import Alpha158
@@ -14,7 +15,6 @@ from qlib.tests.data import GetData
class RollingDataWorkflow(object): class RollingDataWorkflow(object):
MARKET = "csi300" MARKET = "csi300"
start_time = "2010-01-01" start_time = "2010-01-01"
end_time = "2019-12-31" end_time = "2019-12-31"
rolling_cnt = 5 rolling_cnt = 5
@@ -33,9 +33,9 @@ class RollingDataWorkflow(object):
"class": "Alpha158", "class": "Alpha158",
"module_path": "qlib.contrib.data.handler", "module_path": "qlib.contrib.data.handler",
"kwargs": { "kwargs": {
"start_time": start_time, "start_time": self.start_time,
"end_time": end_time, "end_time": self.end_time,
"instruments": MARKET, "instruments": self.MARKET,
}, },
} }
pre_handler = init_instance_by_config(handler_config) pre_handler = init_instance_by_config(handler_config)
@@ -51,9 +51,12 @@ class RollingDataWorkflow(object):
self._dump_pre_handler("pre_handler.py") self._dump_pre_handler("pre_handler.py")
pre_handler = self._load_pre_handler("pre_handler.py") pre_handler = self._load_pre_handler("pre_handler.py")
init_start_time = datetime.datetime(2010,1,1) train_start_time = (2010,1,1)
init_end_time = datetime.datetime(2014,12,31) train_end_time = (2012,12,31)
init_fit_end_time = datetime.datetime(2012,12,31) valid_start_time = (2013,1,1)
valid_end_time = (2013,12,31)
test_start_time = (2014,1,1)
test_end_time = (2014,12,31)
dataset_config = { dataset_config = {
"class": "DatasetH", "class": "DatasetH",
@@ -63,19 +66,19 @@ class RollingDataWorkflow(object):
"class": "RollingDataHandler", "class": "RollingDataHandler",
"module_path": "rolling_handler", "module_path": "rolling_handler",
"kwargs": { "kwargs": {
"start_time": init_start_time, "start_time": datetime(*train_start_time),
"end_time": init_start_time, "end_time": datetime(*test_end_time),
"fit_start_time": init_fit_start_time, "fit_start_time": datetime(*train_start_time),
"fit_end_time": init_fit_end_time, "fit_end_time": datetime(*train_end_time),
"data_loader_kwargs":{ "data_loader_kwargs":{
"handler_config": pre_handler, "handler_config": pre_handler,
} }
}, },
}, },
"segments": { "segments": {
"train": (init_start_time, init_fit_end_time), "train": (datetime(*train_start_time), datetime(*train_end_time)),
"valid": (init_start_time, "2013-12-31"), "valid": (datetime(*valid_start_time), datetime(*valid_end_time)),
"test": (init_start_time, init_end_time), "test": (datetime(*test_start_time), datetime(*test_end_time)),
}, },
}, },
} }
@@ -86,17 +89,19 @@ class RollingDataWorkflow(object):
if rolling_offset: if rolling_offset:
dataset.init( dataset.init(
handler_kwargs={ handler_kwargs={
"init_type": DataHandlerLP.IT_FIT_IND, "init_type": DataHandlerLP.IT_FIT_SEQ,
"start_time": "2021-01-19 00:00:00", "start_time": datetime(train_start_time[0] + 1, *train_start_time[1:]),
"end_time": "2021-01-25 16:00:00", "end_time": datetime(test_end_time[0] + 1, *test_end_time[1:]),
}, },
segment_kwargs={ segment_kwargs={
"train": ("2010-01-01", "2012-12-31"), "train": (datetime(train_start_time[0] + 1, *train_start_time[1:]), datetime(train_end_time[0], *train_end_time[1:])),
"valid": ("2013-01-01", "2013-12-31"), "valid": (datetime(valid_start_time[0] + 1, *valid_start_time[1:]), datetime(valid_end_time[0], *valid_end_time[1:])),
"test": ("2014-01-01", "2014-12-31"), "test": (datetime(test_start_time[0] + 1, *test_start_time[1:]), datetime(test_end_time[0], *test_end_time[1:])),
}, },
) )
dtrain, dvalid, dtest = dataset.prepare(["train", "valid", "test"])
if __name__ == "__main__": if __name__ == "__main__":