mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-16 09:11:00 +08:00
update workflow
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
import qlib
|
import qlib
|
||||||
|
import fire
|
||||||
import pickle
|
import pickle
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
@@ -12,7 +13,6 @@ from qlib.contrib.data.handler import Alpha158
|
|||||||
from qlib.utils import exists_qlib_data, init_instance_by_config
|
from qlib.utils import exists_qlib_data, init_instance_by_config
|
||||||
from qlib.tests.data import GetData
|
from qlib.tests.data import GetData
|
||||||
|
|
||||||
|
|
||||||
class RollingDataWorkflow(object):
|
class RollingDataWorkflow(object):
|
||||||
|
|
||||||
MARKET = "csi300"
|
MARKET = "csi300"
|
||||||
@@ -52,12 +52,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")
|
||||||
|
|
||||||
train_start_time = (2010, 1, 1)
|
train_start_time = (2010,1,1)
|
||||||
train_end_time = (2012, 12, 31)
|
train_end_time = (2012,12,31)
|
||||||
valid_start_time = (2013, 1, 1)
|
valid_start_time = (2013,1,1)
|
||||||
valid_end_time = (2013, 12, 31)
|
valid_end_time = (2013,12,31)
|
||||||
test_start_time = (2014, 1, 1)
|
test_start_time = (2014,1,1)
|
||||||
test_end_time = (2014, 12, 31)
|
test_end_time = (2014,12,31)
|
||||||
|
|
||||||
dataset_config = {
|
dataset_config = {
|
||||||
"class": "DatasetH",
|
"class": "DatasetH",
|
||||||
@@ -71,9 +71,9 @@ class RollingDataWorkflow(object):
|
|||||||
"end_time": datetime(*test_end_time),
|
"end_time": datetime(*test_end_time),
|
||||||
"fit_start_time": datetime(*train_start_time),
|
"fit_start_time": datetime(*train_start_time),
|
||||||
"fit_end_time": datetime(*train_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": {
|
||||||
@@ -95,65 +95,14 @@ class RollingDataWorkflow(object):
|
|||||||
"end_time": datetime(test_end_time[0] + 1, *test_end_time[1:]),
|
"end_time": datetime(test_end_time[0] + 1, *test_end_time[1:]),
|
||||||
},
|
},
|
||||||
segment_kwargs={
|
segment_kwargs={
|
||||||
"train": (
|
"train": (datetime(train_start_time[0] + 1, *train_start_time[1:]), datetime(train_end_time[0], *train_end_time[1:])),
|
||||||
datetime(train_start_time[0] + 1, *train_start_time[1:]),
|
"valid": (datetime(valid_start_time[0] + 1, *valid_start_time[1:]), datetime(valid_end_time[0], *valid_end_time[1:])),
|
||||||
datetime(train_end_time[0], *train_end_time[1:]),
|
"test": (datetime(test_start_time[0] + 1, *test_start_time[1:]), datetime(test_end_time[0], *test_end_time[1:])),
|
||||||
),
|
|
||||||
"valid": (
|
|
||||||
datetime(valid_start_time[0] + 1, *valid_start_time[1:]),
|
|
||||||
datetime(valid_end_time[0], *valid_end_time[1:]),
|
|
||||||
),
|
|
||||||
"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"])
|
dtrain, dvalid, dtest = dataset.prepare(["train", "valid", "test"])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
fire.Fire(RollingDataWorkflow)
|
||||||
# use default data
|
|
||||||
provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir
|
|
||||||
if not exists_qlib_data(provider_uri):
|
|
||||||
print(f"Qlib data is not found in {provider_uri}")
|
|
||||||
GetData().qlib_data(target_dir=provider_uri, region=REG_CN)
|
|
||||||
|
|
||||||
qlib.init(provider_uri=provider_uri, region=REG_CN)
|
|
||||||
|
|
||||||
market = "csi300"
|
|
||||||
benchmark = "SH000300"
|
|
||||||
|
|
||||||
###################################
|
|
||||||
# train model
|
|
||||||
###################################
|
|
||||||
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,
|
|
||||||
}
|
|
||||||
|
|
||||||
task = {
|
|
||||||
"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"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
dataset = init_instance_by_config(task["dataset"])
|
|
||||||
|
|||||||
Reference in New Issue
Block a user