FinRL / Architecture
FinRL 架构详解:三层架构与生态四件套
FinRL 围绕三层核心架构组织:市场环境(Market Environments)、DRL 智能体(DRL Agents)、金融应用(Financial Applications)。一个交易任务里,智能体与市场环境交互、学习序贯决策策略。这套架构支撑了 FinRL 生态四件套——FinRL-Meta、FinRL、ElegantRL、FinRL-X。
三层架构拆解
三层各司其职、可单独替换,避免把数据、算法和应用耦合在一起。
| 层 | 职责 | FinRL 里的落点 |
|---|---|---|
| 市场环境 | Gym 风格金融环境:定义状态、动作、奖励,模拟行情与交易约束 | finrl/meta/env_stock_trading、env_portfolio_allocation、env_cryptocurrency_trading |
| DRL 智能体 | 强化学习算法实现,学习买卖决策策略 | finrl/agents(elegantrl、stablebaseline3、rllib) |
| 金融应用 | 具体交易任务:训练、回测、实盘 | finrl/applications(stock_trading、portfolio_allocation、cryptocurrency_trading、high_frequency_trading 等) |
FinRL 生态四件套
官方把生态按「定位 → 目标用户 → 仓库」分层,经典 FinRL 只是其中一环。
| 仓库 | 定位 | 目标用户 | 说明 |
|---|---|---|---|
| FinRL-Meta | 市场环境 | 从业者 | Gym 风格金融市场环境与基准 |
| FinRL | 经典端到端框架 | 学习者/开发者/研究者 | 原始 train-test-trade 管线(本仓库) |
| ElegantRL | 算法层 | 研究者/专家 | 轻量优雅的 DRL 算法实现 |
| FinRL-X / FinRL-Trading | 下一代 / 生产级 | 专业交易者/机构/对冲基金 | AI-native 模块化、面向部署的量化交易基础设施 |
train-test-trade 工作流
FinRL 用三个文件把「训练 → 测试 → 交易」串起来,是理解整个框架的关键。
train.py
在训练集上训练 DRL 智能体,保存训练好的模型。
test.py
在测试集上评估模型,输出回测指标。
trade.py
用训练好的模型在(模拟/实盘)环境里做交易决策。
目录结构速览
主目录 finrl 下三个子目录 applications / agents / meta,外加 config 与 train/test/trade。
FinRL ├── finrl │ ├── applications # 股票/加密/高频/组合/模仿学习 │ ├── agents # elegantrl / rllib / stablebaseline3 │ ├── meta # 数据处理器 + 各市场环境 │ ├── config.py / config_tickers.py │ └── train.py / test.py / trade.py ├── examples # 教程脚本 ├── unit_tests ├── setup.py / requirements.txt └── README.md
经典版与下一代差异
官方 README 明确对比了 FinRL(Stage 1.0)与 FinRL-X(Stage 3.0)的能力差异。
| 能力 | FinRL(经典) | FinRL-X |
|---|---|---|
| 范式 | 深度强化学习 | AI-Native(ML + DRL + LLM-ready) |
| 架构 | 三层耦合单体 | 完全解耦的模块化层 |
| 策略 | DRL 智能体(A2C/DDPG/PPO/SAC/TD3) | ML 选股 + DRL 择时 + 可扩展基座 |
| 回测 | 手写评估循环 | 专业 bt 库引擎 |
| 实盘 | 基础 Alpaca 支持 | 多账户集成 + 风控 |
| 目标用户 | 研究者/学生 | 量化/机构/生产部署 |
常见问题
FinRL 的三层架构分别是什么?
市场环境(Market Environments)、DRL 智能体(DRL Agents)、金融应用(Financial Applications)。智能体与市场环境交互,学习序贯决策策略,应用层承载具体交易任务。
FinRL 和 FinRL-X 有什么区别?
FinRL 是经典端到端研究框架(三层耦合、DRL 算法、手写回测);FinRL-X/FinRL-Trading 是下一代生产级框架(模块化解耦、专业 bt 回测、多账户实盘)。生产级建议用 FinRL-X。
FinRL-Meta 和 ElegantRL 是干什么的?
FinRL-Meta 提供 Gym 风格的市场环境与基准;ElegantRL 是轻量 DRL 算法库。它们与 FinRL 共同构成生态四件套。
train-test-trade 是什么意思?
用 train.py 训练智能体、test.py 回测评估、trade.py 做交易决策的三步管线,是 FinRL 的核心工作流。