RDAgent
🥇 第一个以数据为中心的量化多智能体框架 RD-Agent(Q)
研发金融量化智能代理,简称 RD-Agent(Q),是首个以数据为中心的多智能体框架,旨在通过协调因子-模型协同优化,实现量化策略全栈式研发的自动化。
您可以通过论文了解更多关于 RD-Agent(Q) 的细节。
⚡ 快速入门
在开始之前,请确保您已正确安装 RD-Agent 并配置好环境。如果想了解如何安装和配置 RD-Agent,请参考文档。
之后,您可以通过运行以下命令来启动框架:
🐍 创建 Conda 环境
使用 Python 创建一个新的 conda 环境(我们的 CI 已对 Python 3.10 和 3.11 进行了充分测试):
conda create -n rdagent python=3.10
激活环境:
conda activate rdagent
📦 安装 RDAgent
您可以从 PyPI 安装 RDAgent 包:
pip install rdagent
🚀 运行应用
您可以使用以下命令直接运行应用程序:
rdagent fin_quant
🛠️ 模块使用
环境变量配置
以下环境变量可以在 .env
文件中设置,以自定义应用程序的行为:
pydantic
设置 rdagent.app.qlib_rd_loop.conf.QuantBasePropSetting
显示 JSON 模式
配置:
-
env_prefix: str = QLIB_QUANT_
-
protected_namespaces: tuple = ()
-
field action_selection: str = 'bandit'
-
行动选择策略:
'bandit'
表示基于多臂赌博机的选择,'llm'
表示基于大语言模型的选择,'random'
表示随机选择。
-
-
field evolving_n: int = 10
-
演进次数。
-
-
field factor_coder: str = 'rdagent.scenarios.qlib.developer.factor_coder.QlibFactorCoSTEER'
-
因子编码器类。
-
-
field factor_hypothesis2experiment: str = 'rdagent.scenarios.qlib.proposal.factor_proposal.QlibFactorHypothesis2Experiment'
-
假设到实验转换类。
-
-
field factor_runner: str = 'rdagent.scenarios.qlib.developer.factor_runner.QlibFactorRunner'
-
因子运行器类。
-
-
field factor_summarizer: str = 'rdagent.scenarios.qlib.developer.feedback.QlibFactorExperiment2Feedback'
-
因子摘要器类。
-
-
field model_coder: str = 'rdagent.scenarios.qlib.developer.model_coder.QlibModelCoSTEER'
-
模型编码器类。
-
-
field model_hypothesis2experiment: str = 'rdagent.scenarios.qlib.proposal.model_proposal.QlibModelHypothesis2Experiment'
-
假设到实验转换类。
-
-
field model_runner: str = 'rdagent.scenarios.qlib.developer.model_runner.QlibModelRunner'
-
模型运行器类。
-
-
field model_summarizer: str = 'rdagent.scenarios.qlib.developer.feedback.QlibModelExperiment2Feedback'
-
模型摘要器类。
-
-
field quant_hypothesis_gen: str = 'rdagent.scenarios.qlib.proposal.quant_proposal.QlibQuantHypothesisGen'
-
假设生成类。
-
-
field scen: str = 'rdagent.scenarios.qlib.experiment.quant_experiment.QlibQuantScenario'
-
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 python_bin: str = 'python'
-
Python 二进制文件的路径。
-
-
field select_method: str = 'random'
-
因子实现的选择方法。
-
-
field simple_background: bool = False
-
是否使用简单的背景信息进行代码反馈。
-
-
field v2_add_fail_attempt_to_latest_successful_execution: bool = False
Qlib 配置
model_template
和 factor_template
目录中的 .yaml
文件包含用于在 Qlib 框架中运行相应模型或因子的一些配置。下面是它们的内容和作用概述:
-
通用设置:
-
provider_uri
:指定本地 Qlib 数据路径,设置为~/.qlib/qlib_data/cn_data
。 -
market
:配置为csi300
,表示沪深 300 指数成分股。 -
benchmark
:设置为SH000300
,用于回测评估。
-
-
数据处理:
-
start_time
和end_time
:定义完整数据范围,从2008-01-01
到2022-08-01
。 -
fit_start_time
:模型拟合的开始日期,设置为2008-01-01
。 -
fit_end_time
:模型拟合的结束日期,设置为2014-12-31
。 -
features
和labels
:通过嵌套数据加载器生成,该加载器结合了Alpha158DL
(用于如RESI5
、WVMA5
、RSQR5
、KLEN
等工程特征)和一个加载预计算的因子文件 (combined_factors_df.parquet
) 的StaticDataLoader
。 -
normalization
:管道包括用于推理的RobustZScoreNorm
(带裁剪)和Fillna
,以及用于训练的DropnaLabel
和CSZScoreNorm
。
-
-
训练配置:
-
Model
:使用GeneralPTNN
,一个基于 PyTorch 的神经网络模型。 -
数据集划分:
-
train
:2008-01-01
到2014-12-31
-
valid
:2015-01-01
到2016-12-31
-
test
:2017-01-01
到2020-08-01
-
-
默认超参数(可通过命令行参数覆盖):
-
n_epochs
:100
-
lr
:2e-4
-
early_stop
:10
-
batch_size
:256
-
weight_decay
:0.0
-
metric
:loss
-
loss
:mse
-
n_jobs
:20
-
GPU
:0
(如果可用,使用 GPU 0)
-
-
-
回测和评估:
-
strategy
:TopkDropoutStrategy
,它选择排名前 50 的股票并随机剔除 5 只以引入探索性。 -
backtest period
:2017-01-01
到2020-08-01
-
initial capital
:100,000,000
-
cost configuration
:包括开盘/收盘成本、最低交易成本和滑点控制。
-
-
记录和分析:
-
SignalRecord
:记录预测的信号。 -
SigAnaRecord
:执行信号分析,不进行多空分离。 -
PortAnaRecord
:使用配置的策略和回测设置进行投资组合分析。
-
使用 MongoDB Atlas 简化基础设施,这是领先的开发者数据平台。