金融相关的强化学习工具
在金融强化学习中,我们既可以自己实现环境,也可以利用现有工具快速搭建实验平台。本文重点介绍如何使用现成工具来简化金融 RL 实践。
1 选择金融的 RL 库
| 方式 | 代码量 | 学习成本 | 复用性 | 回测功能 | 适用场景 | 
|---|---|---|---|---|---|
| FinRL / gym-anytrading | 低 | 低 | 高 | 完善 | 教学、快速实验、科研 | 
| 自写 gym.Env 极简环境 | 中 | 低 | 低 | 需自写 | 简单实验 | 
| 完全自研环境和回测 | 高 | 高 | 低 | 需自写 | 高度定制的金融研究 | 
现成工具推荐:
- gym-anytrading:适合快速上手和教学实验,带示例数据(如 Open/High/Low/Close/Volume)。
- FinRL:适合多资产、真实市场数据回测、科研和产业应用。
- quantgym:适合专业衍生品市场建模,需要金融衍生品基础。
新手建议使用 gym-anytrading,快速完成实验,降低开发成本。
2 gym-anytrading 简介
gym-anytrading (https://github.com/AminHP/gym-anytrading) 2.3k star,主要支持股票和外汇市场,提供三种环境:TradingEnv、ForexEnv、StocksEnv。默认动作仅包含买入(1)和卖出(0)。
优势:
- 简单易用,代码量少,上手快
- 支持数据处理、回测和可视化
- 内置时序信息,只需设置 window_size
- 可扩展和集成,适合 RL 实验和策略验证
3 gym-anytrading 回测示例
| 1 | import gymnasium as gym | 
通过控制
action,可以切换 RL 模型策略、手写规则策略或实盘操作。
4 可视化示例
| 1 | import matplotlib.pyplot as plt | 

- env.render()或- env.unwrapped.render_all()可用于可视化回测结果。 
5 自定义环境类示例
| 1 | import pandas as pd | 
5.1 核心方法和说明
| 方法 | 说明 | 
|---|---|
| __init__ | 初始化环境,传入 df、window_size、frame_bound | 
| _process_data | 决定 observation 特征(如 OHLCV) | 
| step | 执行动作,返回 observation、reward、done 等 | 
| reset | 重置环境,返回初始 observation | 
| _calculate_reward | 根据当前价格或特征计算 reward | 
| _update_profit | 累计总利润,计算 RL 代理的收益 | 
observation 是
(window_size, feature_dim)的二维数组,reward 与当前步_current_tick同步。
5.2 附加功能
- 可设置交易费率 trade_fee_bid_percent/trade_fee_ask_percent
- 可获取最大可能利润 max_possible_profit
6 总结
- 使用 gym-anytrading 可以快速搭建金融 RL 实验环境,节省大量重复代码
- 支持回测和可视化,同时保留自定义空间
- 非常适合教学、实验和快速原型开发
 
7 参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
