🤖 自动化量化交易与从金融报告中提取因子


📖 背景

研究报告是洞察力的宝库,它们常常揭示出能够驱动成功的量化交易策略的潜在因子。然而,面对海量的报告,高效地提取最有价值的洞见成为一项艰巨的任务。

此外,仅仅仓促地复制报告中的因子是不够的,深入探究其背后的构建逻辑至关重要。这个因子是否捕捉到了关键的市场动态?与您现有库中的因子相比,它有多独特?

因此,迫切需要一种系统化的方法来设计一个能够有效管理这一流程的框架。这正是**金融数据助手(Finance Data Copilot)**大展身手的地方。


🎥 演示

 

 

🌟 简介

在此场景中,RDAgent 演示了从金融研究报告中提取因子、实现这些因子,并通过 Qlib 回测分析其性能的过程。这个过程会持续扩展和优化因子库。

以下是增强版的步骤大纲:

  • 第一步:假设生成 🔍

    基于金融报告中的洞察力,生成并提出初始假设,并提供详尽的推理和财务依据。

  • 第二步:因子创建 ✨

    根据假设和金融报告,拆分任务。

    每个任务都涉及开发、定义和实现一个新的金融因子,包括其名称、描述、公式和变量。

  • 第三步:因子实现 👨‍💻

    根据描述实现因子代码,并像开发者一样对其进行演进。

    对新创建的因子进行量化验证。

  • 第四步:使用 Qlib 进行回测 📉

    将完整数据集整合到因子实现代码中,并准备好因子库。

    在 Qlib 中使用 Alpha158 和新开发的因子以及 LGBModel 进行回测,以评估新因子的有效性和性能。

    数据集 模型 因子 数据划分
    CSI300 (沪深300) LGBModel Alpha158 Plus 训练集:2008-01-01 至 2014-12-31
          验证集:2015-01-01 至 2016-12-31
          测试集:2017-01-01 至 2020-08-01
  • 第五步:反馈分析 🔍

    分析回测结果以评估性能。

    整合反馈意见以优化假设并改进模型。

  • 第六步:假设优化 ♻️

    根据回测反馈优化假设。

    重复此过程以持续改进模型。


⚡ 快速入门

请参考**《安装与配置》**文档中的安装部分,以准备您的系统依赖项。

您可以通过运行以下命令来尝试我们的演示:

🐍 创建 Conda 环境

使用 Python 创建一个新的 conda 环境(我们的持续集成环境已对 Python 3.10 和 3.11 进行了充分测试):

conda create -n rdagent python=3.10

激活环境:

conda activate rdagent

📦 安装 RDAgent

您可以从 PyPI 安装 RDAgent 包:

pip install rdagent

🚀 运行应用

下载您希望从中提取因子的金融报告,并将其存储在您喜欢的文件夹中。

具体来说,您可以按照此示例操作,或使用您自己的方法:

wget https://github.com/SunsetWolf/rdagent_resource/releases/download/reports/all_reports.zip

unzip all_reports.zip -d git_ignore_folder/reports

使用以下命令运行应用程序:

rdagent fin_factor_report --report_folder=git_ignore_folder/reports

或者,您可以将报告的路径存储在 report_result_json_file_path 中。格式应为:

[
    "git_ignore_folder/report/fin_report1.pdf",
    "git_ignore_folder/report/fin_report2.pdf",
    "git_ignore_folder/report/fin_report3.pdf"
]

然后,使用以下命令运行应用程序:

rdagent fin_factor_report


🛠️ 模块使用

环境变量配置

以下环境变量可以在 .env 文件中设置,以自定义应用程序的行为:

pydantic 设置 rdagent.app.qlib_rd_loop.conf.FactorFromReportPropSetting

基础类:FactorBasePropSetting

显示 JSON 模式

配置:

  • env_prefix: str = QLIB_FACTOR_

  • protected_namespaces: tuple = ()

  • field max_factors_per_exp: int = 10000

    • 每次实验中实现的最大因子数量。

  • field report_limit: int = 10000

    • 最大处理报告数量。

  • field report_result_json_file_path: str = 'git_ignore_folder/report_list.json'

    • 列出用于因子提取的研究报告的 JSON 文件路径。

  • field scen: str = 'rdagent.scenarios.qlib.experiment.factor_from_report_experiment.QlibFactorFromReportScenario'

    • Qlib 报告因子场景类。

pydantic 设置 rdagent.components.coder.factor_coder.config.FactorCoSTEERSettings

显示 JSON 模式

配置:

  • env_prefix: str = FACTOR_CoSTEER_

  • field coder_use_cache: bool = False

    • 指示编码器是否使用缓存。

  • field data_folder: str = 'git_ignore_folder/factor_implementation_source_data'

    • 包含金融数据(默认为 Qlib 中的基础数据)的文件夹路径。

  • field data_folder_debug: str = 'git_ignore_folder/factor_implementation_source_data_debug'

    • 包含部分金融数据(用于调试)的文件夹路径。

  • field enable_filelock: bool = False

  • field file_based_execution_timeout: int = 3600

    • 每次因子实现执行的超时时间(以秒为单位)。

  • field filelock_path: str | None = None

  • field knowledge_base_path: str | None = None

    • 知识库路径。

  • field max_loop: int = 10

    • 任务实现的最大循环次数。

  • field max_seconds_multiplier: int = 1000000

  • field new_knowledge_base_path: str | None = None

    • 新知识库的路径。

  • field select_method: str = 'random'

    • 因子实现的选择方法。

  • field simple_background: bool = False

    • 是否使用简单的背景信息进行代码反馈。

  • field v2_add_fail_attempt_to_latest_successful_execution: bool = False

使用 MongoDB Atlas,您可以轻松构建由生成式人工智能(GenAI)驱动的应用程序,无需单独的数据库。

最后修改: 2025年08月18日 星期一 13:25