mirror of
https://github.com/microsoft/qlib.git
synced 2026-06-06 05:51:17 +08:00
44 lines
1.7 KiB
Python
Executable File
44 lines
1.7 KiB
Python
Executable File
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
import yaml
|
|
import argparse
|
|
import os
|
|
from copy import deepcopy
|
|
|
|
from qlib.contrib.data.highfreq_provider import HighFreqProvider
|
|
|
|
loader = yaml.FullLoader
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("-c", "--config", type=str, default="config.yml")
|
|
parser.add_argument("-d", "--dest", type=str, default=".")
|
|
parser.add_argument("-s", "--split", type=str, choices=["none", "date", "stock", "both"], default="stock")
|
|
args = parser.parse_args()
|
|
|
|
conf = yaml.load(open(args.config), Loader=loader)
|
|
|
|
for k, v in conf.items():
|
|
if isinstance(v, dict) and "path" in v:
|
|
v["path"] = os.path.join(args.dest, v["path"])
|
|
provider = HighFreqProvider(**conf)
|
|
|
|
# Gen dataframe
|
|
if "feature_conf" in conf:
|
|
feature = provider._gen_dataframe(deepcopy(provider.feature_conf))
|
|
if "backtest_conf" in conf:
|
|
backtest = provider._gen_dataframe(deepcopy(provider.backtest_conf))
|
|
|
|
provider.feature_conf["path"] = os.path.splitext(provider.feature_conf["path"])[0] + "/"
|
|
provider.backtest_conf["path"] = os.path.splitext(provider.backtest_conf["path"])[0] + "/"
|
|
# Split by date
|
|
if args.split == "date" or args.split == "both":
|
|
provider._gen_day_dataset(deepcopy(provider.feature_conf), "feature")
|
|
provider._gen_day_dataset(deepcopy(provider.backtest_conf), "backtest")
|
|
|
|
# Split by stock
|
|
if args.split == "stock" or args.split == "both":
|
|
provider._gen_stock_dataset(deepcopy(provider.feature_conf), "feature")
|
|
provider._gen_stock_dataset(deepcopy(provider.backtest_conf), "backtest")
|