金融模型代理¶
🤖 自动化量化交易与迭代模型演进¶
📖 背景¶
在量化金融领域,因子发现和模型开发在推动业绩方面发挥着至关重要的作用。虽然通常会给予新金融因子发现大量关注,但利用这些因子的**模型**同样重要。量化策略的有效性不仅依赖于所使用的因子,还依赖于这些因子如何有效地整合到稳健的预测模型中。
然而,开发和优化这些模型的过程可能是劳动密集型和复杂的,需要不断的改进和适应不断变化的市场条件。这就是**金融模型代理**发挥作用的地方。
🎥 演示¶
🌟 介绍¶
在这个场景中,我们的自动化系统提出假设,构建模型,实施代码,进行回测,并在一个持续的迭代过程中利用反馈。
目标是在Qlib库中自动优化性能指标,最终通过自主研究和开发发现最有效的代码。
以下是步骤的增强大纲:
步骤 1 : 假设生成 🔍
基于之前实验分析和领域专业知识生成并提出初步假设,附上充分的推理和金融依据。
步骤2:模型创建 ✨
将假设转化为任务。
开发、定义并实施一个量化模型,包括其名称、描述和公式。
步骤3:模型实施 👨💻
根据详细描述实现模型代码。
像开发者一样迭代演进模型,确保准确性和效率。
步骤 4 : 使用 Qlib 回测 📉
使用新开发的模型和从Qlib中的Alpha158提取的20个因子进行回测。
评估模型的有效性和性能。
数据集 |
模型 |
因子 |
数据拆分 |
||||||
---|---|---|---|---|---|---|---|---|---|
CSI300 |
RDAgent-dev |
20个因素 (Alpha158) |
|
步骤 5 : 反馈分析 🔍
分析回测结果以评估性能。
结合反馈来优化假设并改进模型。
步骤 6 : 假设优化 ♻️
根据回测反馈优化假设。
重复该过程以持续改进模型。
⚡ 快速开始¶
请参考 安装与配置 中的安装部分以准备您的系统依赖。
您可以通过运行以下命令尝试我们的演示:
🐍 创建一个 Conda 环境
创建一个新的conda环境,使用Python(3.10和3.11在我们的CI中经过良好测试):
conda create -n rdagent python=3.10
激活环境:
conda activate rdagent
📦 安装RDAgent
您可以从PyPI安装RDAgent包:
pip install rdagent
🚀 运行应用程序
您可以使用以下命令直接运行应用程序:
rdagent fin_model
🛠️ 模块的使用¶
环境配置
可以在`.env`文件中设置以下环境变量,以自定义应用程序的行为:
- pydantic settings rdagent.app.qlib_rd_loop.conf.ModelBasePropSetting¶
Show JSON schema
{ "title": "ModelBasePropSetting", "type": "object", "properties": { "scen": { "default": "rdagent.scenarios.qlib.experiment.model_experiment.QlibModelScenario", "title": "Scen", "type": "string" }, "knowledge_base": { "default": "", "title": "Knowledge Base", "type": "string" }, "knowledge_base_path": { "default": "", "title": "Knowledge Base Path", "type": "string" }, "hypothesis_gen": { "default": "rdagent.scenarios.qlib.proposal.model_proposal.QlibModelHypothesisGen", "title": "Hypothesis Gen", "type": "string" }, "hypothesis2experiment": { "default": "rdagent.scenarios.qlib.proposal.model_proposal.QlibModelHypothesis2Experiment", "title": "Hypothesis2Experiment", "type": "string" }, "coder": { "default": "rdagent.scenarios.qlib.developer.model_coder.QlibModelCoSTEER", "title": "Coder", "type": "string" }, "runner": { "default": "rdagent.scenarios.qlib.developer.model_runner.QlibModelRunner", "title": "Runner", "type": "string" }, "summarizer": { "default": "rdagent.scenarios.qlib.developer.feedback.QlibModelExperiment2Feedback", "title": "Summarizer", "type": "string" }, "evolving_n": { "default": 10, "title": "Evolving N", "type": "integer" } }, "additionalProperties": false }
- 配置:
env_prefix: str = QLIB_MODEL_
protected_namespaces: tuple = ()
- field coder: str = 'rdagent.scenarios.qlib.developer.model_coder.QlibModelCoSTEER'¶
编码器类
- field evolving_n: int = 10¶
进化次数
- field hypothesis2experiment: str = 'rdagent.scenarios.qlib.proposal.model_proposal.QlibModelHypothesis2Experiment'¶
实验类的假设
- field hypothesis_gen: str = 'rdagent.scenarios.qlib.proposal.model_proposal.QlibModelHypothesisGen'¶
假设生成类
- field runner: str = 'rdagent.scenarios.qlib.developer.model_runner.QlibModelRunner'¶
运行器类
- field scen: str = 'rdagent.scenarios.qlib.experiment.model_experiment.QlibModelScenario'¶
Qlib模型的场景类
- field summarizer: str = 'rdagent.scenarios.qlib.developer.feedback.QlibModelExperiment2Feedback'¶
总结类
- Qlib配置
- config.yaml 文件位于 model_template 文件夹中,包含在Qlib中运行开发模型的相关配置。默认设置包括关键信息,如:
market: 指定市场,设置为 csi300。
fields_group: 定义字段组,值为 feature。
col_list: 使用的列列表,包括各种指标,如 RESI5、WVMA5、RSQR5 等。
start_time: 数据的开始日期,设置为 2008-01-01。
end_time: 数据的结束日期,设置为 2020-08-01。
fit_start_time: 拟合模型的开始日期,设置为 2008-01-01。
fit_end_time: 拟合模型的结束日期,设置为 2014-12-31。
- 配置中使用的默认超参数如下:
n_epochs: 迭代次数,设置为 100。
lr: 学习率,设置为 1e-3。
early_stop: 提前停止标准,设置为 10。
batch_size: 批量大小,设置为 2000。
metric: 评估指标,设置为 loss。
loss: 损失函数,设置为 mse。
n_jobs: 并行作业的数量,设置为 20。