mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-01 10:01:19 +08:00
Add backend_freq_config parameter, support multi-freq uri
This commit is contained in:
@@ -83,6 +83,24 @@ _default_config = {
|
||||
"provider": "LocalProvider",
|
||||
# config it in qlib.init()
|
||||
"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
|
||||
"expression_cache": None,
|
||||
"dataset_cache": None,
|
||||
|
||||
@@ -48,8 +48,19 @@ class ProviderBackendMixin:
|
||||
# default provider_uri map
|
||||
if "provider_uri" not in backend_kwargs:
|
||||
# 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")
|
||||
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.setdefault("kwargs", {}).update(**kwargs)
|
||||
return init_instance_by_config(backend)
|
||||
|
||||
Reference in New Issue
Block a user