mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-12 15:26:54 +08:00
Add backend_freq_config parameter, support multi-freq uri
This commit is contained in:
@@ -83,6 +83,24 @@ _default_config = {
|
|||||||
"provider": "LocalProvider",
|
"provider": "LocalProvider",
|
||||||
# config it in qlib.init()
|
# config it in qlib.init()
|
||||||
"provider_uri": "",
|
"provider_uri": "",
|
||||||
|
# backend_freq_config is dict: {"day": "1d dataset uri", "1min": "1min dataset uri"}
|
||||||
|
# If `backend_freq_config` is not None && is not empty && "freq" in `backend_freq_config.keys()`
|
||||||
|
# use `backend_freq_config` as backend-uri
|
||||||
|
# else:
|
||||||
|
# use `provider_uri` as backend-uri
|
||||||
|
# Examples:
|
||||||
|
# qlib.init(provider_uri="qlib_data/1d", backend_freq_config={"1min": "qlib_data/1min"})
|
||||||
|
# # using provider_uri
|
||||||
|
# D.features(D.instruments("all"), ["$close"], freq="day")
|
||||||
|
# # using backend_freq_config["1min"]
|
||||||
|
# D.features(D.instruments("all"), ["$close"], freq="1min")
|
||||||
|
# ########################
|
||||||
|
# qlib.init(provider_uri="qlib_data/1d", backend_freq_config={"1min": "qlib_data/1min", "day": "qlib_data/day"})
|
||||||
|
# # using backend_freq_config["day"]
|
||||||
|
# D.features(D.instruments("all"), ["$close"], freq="day")
|
||||||
|
# # raise ValueError
|
||||||
|
# D.features(D.instruments("all"), ["$close"], freq="week")
|
||||||
|
"backend_freq_config": None,
|
||||||
# cache
|
# cache
|
||||||
"expression_cache": None,
|
"expression_cache": None,
|
||||||
"dataset_cache": None,
|
"dataset_cache": None,
|
||||||
|
|||||||
@@ -48,8 +48,19 @@ class ProviderBackendMixin:
|
|||||||
# default provider_uri map
|
# default provider_uri map
|
||||||
if "provider_uri" not in backend_kwargs:
|
if "provider_uri" not in backend_kwargs:
|
||||||
# if the user has no uri configured, use: uri = uri_map[freq]
|
# if the user has no uri configured, use: uri = uri_map[freq]
|
||||||
|
# NOTE: uri priority
|
||||||
|
# 1. backend_obj.kwargs["provider_uri"]
|
||||||
|
# 2. backend_obj.kwargs["backend_freq_config"]
|
||||||
|
# 3. C.backend_freq_config, or qlib.init(backend_freq_config={})
|
||||||
|
# 4. C.provider_uri, or qlib.init(provider_uri="")
|
||||||
|
provider_uri_map = backend_kwargs.setdefault("backend_freq_config", {})
|
||||||
freq = kwargs.get("freq", "day")
|
freq = kwargs.get("freq", "day")
|
||||||
provider_uri_map = backend_kwargs.setdefault("provider_uri_map", {freq: C.get_data_path()})
|
if C.backend_freq_config is not None:
|
||||||
|
if freq not in provider_uri_map:
|
||||||
|
provider_uri_map[freq] = C.backend_freq_config.get(freq, C.get_data_path())
|
||||||
|
else:
|
||||||
|
if freq not in provider_uri_map:
|
||||||
|
provider_uri_map[freq] = C.get_data_path()
|
||||||
backend_kwargs["provider_uri"] = provider_uri_map[freq]
|
backend_kwargs["provider_uri"] = provider_uri_map[freq]
|
||||||
backend.setdefault("kwargs", {}).update(**kwargs)
|
backend.setdefault("kwargs", {}).update(**kwargs)
|
||||||
return init_instance_by_config(backend)
|
return init_instance_by_config(backend)
|
||||||
|
|||||||
Reference in New Issue
Block a user