章节大纲

  • Qlib 初始化


    初始化

    请按照以下步骤初始化 Qlib

    1. 下载并准备数据:执行以下命令下载股票数据。请注意,这些数据是从 Yahoo Finance 收集的,可能并不完美。如果您有高质量的数据集,我们建议您准备自己的数据。有关自定义数据集的更多信息,请参阅数据部分。

      python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn
      

      有关 get_data.py 的更多信息,请参阅数据准备

    2. 在调用其他 API 之前初始化 Qlib:在 Python 中运行以下代码。

      Python
      import qlib
      
      # region in [REG_CN, REG_US]
      from qlib.constant import REG_CN
      
      provider_uri = "~/.qlib/qlib_data/cn_data"  # 你的目标目录
      qlib.init(provider_uri=provider_uri, region=REG_CN)
      

    注意

    请不要Qlib 的代码仓库目录中导入 qlib 包,否则可能会出现错误。


    参数

    除了 provider_uriregion 之外,qlib.init 还有其他参数。以下是 qlib.init 的几个重要参数(Qlib 有很多配置,这里只列出部分参数。更详细的设置请参阅这里):

    • provider_uri:类型为 strQlib 数据的 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:A股市场。

      不同的模式会导致不同的交易限制和成本。region 只是用于定义一系列配置的快捷方式,包括最小交易单位(trade_unit)、交易限制(limit_threshold)等。它不是必需的,如果现有区域设置无法满足您的需求,您可以手动设置关键配置。

    • redis_host:类型为 str,可选参数(默认为 "127.0.0.1"),redis 的主机名。锁定和缓存机制依赖于 redis

    • redis_port:类型为 int,可选参数(默认为 6379),redis 的端口号。

    注意

    region 的值应与 provider_uri 中存储的数据保持一致。目前,scripts/get_data.py 提供 A股市场数据。如果用户想使用美股市场数据,他们应该在 provider_uri 中准备自己的美股数据,并切换到美股模式。

    注意

    如果 Qlib 无法通过 redis_hostredis_port 连接到 Redis,将不会使用缓存机制!详情请参阅缓存

    • exp_manager:类型为 dict,可选参数,用于在 qlib 中使用的实验管理器设置。用户可以指定一个实验管理器类,以及所有实验的追踪 URI。但是,请注意,我们只支持以下样式的字典作为 exp_manager 的输入。有关 exp_manager 的更多信息,用户可以参考记录器:实验管理

      Python
      # 例如,如果你想将你的 tracking_uri 设置为一个 <特定文件夹>,你可以如下初始化 qlib
      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

      Python
      # 例如,你可以如下初始化 qlib
      qlib.init(provider_uri=provider_uri, region=REG_CN, mongo={
          "task_url": "mongodb://localhost:27017/",  # 你的 mongo url
          "task_db_name": "rolling_db", # 任务管理的数据库名称
      })
      
    • logging_level:系统的日志级别。

    • kernels:在 Qlib 的表达式引擎中计算特征时使用的进程数。在调试表达式计算异常时,将其设置为 1 是非常有帮助的。