Qlib 初始化
初始化
请按照以下步骤初始化 Qlib
。
下载并准备数据:执行以下命令以下载股票数据。请注意,这些数据来自 Yahoo Finance,可能并不完美。如果用户拥有高质量的数据集,我们建议自行准备数据。有关自定义数据集的更多信息,请参见 数据。
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn
有关 get_data.py 的更多详细信息,请参考 数据准备。
在调用其他 API 之前先初始化 Qlib:在 Python 中运行以下代码。
import qlib # region in [REG_CN, REG_US] from qlib.constant import REG_CN provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir qlib.init(provider_uri=provider_uri, region=REG_CN)
注意
不要在 Qlib
的仓库目录中导入 qlib 包,否则可能会出现错误。
参数
除了 provider_uri 和 region 外,qlib.init 还有其他参数。以下是 qlib.init 的几个重要参数(Qlib 拥有许多配置,此处仅列出部分参数。更详细的设置请见 此处):
- provider_uri
类型:str。Qlib 数据的 URI。例如,可以是通过
get_data.py
加载的数据存储位置。
- region
- 类型:str,可选参数(默认值:qlib.constant.REG_CN)。
目前支持
qlib.constant.REG_US
(‘us’)和qlib.constant.REG_CN
(‘cn’)。不同的 region 值将导致不同的股票市场模式。-qlib.constant.REG_US
:美国股市。-qlib.constant.REG_CN
:中国股市。不同模式会导致不同的交易限制和成本。region 只是用于定义一批配置的快捷方式,包括最小交易单位(
trade_unit
)、交易限制(limit_threshold
)等。它不是必需的,如果现有的 region 设置无法满足需求,用户可以手动设置关键配置。
- redis_host
- 类型:str,可选参数(默认值:“127.0.0.1”),redis 的主机地址
锁机制和缓存机制依赖于 redis。
- redis_port
类型:int,可选参数(默认值:6379),redis 的端口
注意
region 的值应与 provider_uri 中存储的数据保持一致。目前,
scripts/get_data.py
仅提供中国股市数据。如果用户希望使用美国股市数据,则需要在 provider_uri 中准备自己的美股数据,并切换到美股模式。注意
如果 Qlib 无法通过 redis_host 和 redis_port 连接 redis,缓存机制将不会被使用!详情请参考 缓存。
- exp_manager
类型:dict,可选参数,用于指定在 qlib 中使用的实验管理器的设置。用户可以指定一个实验管理器类,以及所有实验的跟踪 URI。但请注意,我们仅支持以下列格式的字典作为 exp_manager 的输入。有关 exp_manager 的更多信息,用户可参考 记录器:实验管理。
# For example, if you want to set your tracking_uri to a <specific folder>, you can initialize qlib below qlib.init(provider_uri=provider_uri, region=REG_CN, exp_manager= { "class": "MLflowExpManager", "module_path": "qlib.workflow.expm", "kwargs": { "uri": "python_execution_path/mlruns", "default_exp_name": "Experiment", } })
- mongo
类型:dict,可选参数,用于配置MongoDB,该数据库将用于某些功能(如任务管理),具备高性能和集群处理能力。用户需先按照安装中的步骤安装 MongoDB,然后通过 URI 进行访问。用户可通过将“task_url”设置为类似 “mongodb://%s:%s@%s” % (user, pwd, host + “:” + port) 的字符串,使用凭据访问 mongodb。
# For example, you can initialize qlib below qlib.init(provider_uri=provider_uri, region=REG_CN, mongo={ "task_url": "mongodb://localhost:27017/", # your mongo url "task_db_name": "rolling_db", # the database name of Task Management })
- logging_level
系统的日志记录级别。
- kernels
Qlib 表达式引擎在计算特征时所使用的工作进程数量。当你调试表达式计算异常时,将其设置为 1 非常有帮助。