当前位置: 首页 > news >正文

开源项目_强化学习股票预测

1 项目介绍

  • 项目地址:https://github.com/wangshub/RL-Stock

  • 我修改后的地址:https://github.com/xieyan0811/RL-Stock-XY

  • 我修改的内容:

    • 更新了工具链和相关 API

    • 添加参数以支持只下载指定的股票

    • 对空数据进行了插补

    • 为强化学习部分添加了更多注释

2 代码说明

  • 代码只有几百行,比我想象中简单得多,没想到强化学习工具如此易用。

  • 下载数据:get_stock_data.py

  • 训练模型入口:main.py(stock_trade 函数),包括训练和测试功能。

  • 逻辑核心:StockTradingEnv0.py,负责处理股票数据、定义状态空间和动作空间等。

3 用后感

股票数据集来源于 baostock,可直接下载 1990 年起的数据,无需注册,K 线数据除了开盘、收盘、最高、最低,还包含 市盈率、市争率等等。。

使用强化学习的方法并不复杂,项目中使用的是 stable_baseline 强化学习库,无需深入 PPO 和深度学习库,仅需几句代码即可训练。只需定义状态、动作、奖励,进行数据转换,并实现 step() 函数。整体难度类似于操作 gbm(如 xgboost/lightgbm),关键在于如何定义问题和处理数据。

在无 GPU 机器上,对每支股票训练的模型运行速度依然很快。测试了少量股票,预测效果一般,但结构设计良好。该项目本质是将股票数据与强化学习结合的演示,并非直接用于股票操作的工具,不建议直接用于股票操作!!!

建议添加参数 adjustflag = 1 以进行复权。

4 原理

4.1 数据

  • 训练数据为股票 XX 从 1990 到 2025 年的日 K 线数据,每行代表一天的市场信息。

  • 在强化学习环境中,每一步(step)代表一天,智能体根据当前状态(如价格、持仓、资金等)执行操作(买/卖/持有)。

4.2 状态空间

  • 当前状态通常包括当天的市场数据和账户信息(如持仓、资金)。仅使用当天数据,智能体只能基于这一天做决策。

  • 若将“过去几天的数据”(如最近 5 天的 K 线)纳入状态,智能体可利用历史信息进行更具上下文的决策。

4.3 决策逻辑

  • 智能体在每一步只依据当前状态生成动作。

  • 环境根据动作和新市场数据更新状态,让智能体继续决策。

  • 通过试错,强化学习模型学习在不同状态下的最佳动作,以获得更高的长期收益。

4.4 扩展:强化学习如何学习“多步策略”?

我们希望强化学习模型在预测股票时,能够像围棋模型一样具备全局视角。

围棋 RL 模型通过累计奖励和复杂状态空间实现长视决策,智能体不仅关注当前,还能进行多步配合。以下是围棋模型的实现方式:

  • 状态设计:棋局状态包含所有历史落子,智能体能“看到”全局。

  • 策略网络:深度神经网络(如卷积网络 + LSTM)自动学习“多步配合”的模式。

  • 回溯奖励:即使某步无直接奖励,智能体也可通过“回溯”识别其对最终胜负的贡献,从而形成策略。

当前方法仅关注单步,无异于 xgboost 模型:状态 ≈ 特征,奖励 ≈ 目标,智能体学的是“当前状态下的最优动作”,不具备历史记忆。

要实现多步策略,需要:

  • 在状态中包含历史信息
    如加入过去 N 天的 K 线数据和账户变化,让模型“看到”历史。

  • 在奖励函数中考虑一段时间的收益
    将奖励设计为一段时间内的累计收益、回撤、风险等,而非单步利润。

  • 使用有记忆的神经网络
    如 RNN/LSTM 策略网络,使模型能自动记住并利用历史序列。

5 相关工具

5.1 stable_baselines 库

Stable Baselines 是一个 Python 强化学习库,提供多种经典与先进的 RL 算法实现,简化了智能体的训练和评估过程。

  • 支持的算法包括 DQN、DDPG、PPO、A2C、SAC、TD3 等。

  • 完美兼容 Gym 环境,可在 OpenAI Gym 或自定义环境中使用。

由于原版 stable_baselines 已停止维护,推荐使用更稳定、文档更加完善并兼容 PyTorch 的 stable_baselines3。

此外,像 batch_size 网络大小等参数在使用算法时都可以自定义设置。

5.2 gym/gymnasium

Gym 是强化学习环境库,是 OpenAI Gym 的官方继任者和升级版。它提供标准化的环境接口(如 step、reset、render 方法),支持多种经典和自定义环境,包括游戏、控制、金融等场景,使智能体能够在这些环境中进行训练和测试。


文章转载自:

http://SEY2RZlV.tsLwz.cn
http://PiicTjuN.tsLwz.cn
http://PKqj92Qh.tsLwz.cn
http://IEVTpCAs.tsLwz.cn
http://k6EECSyX.tsLwz.cn
http://shupl3vM.tsLwz.cn
http://JoBECVR0.tsLwz.cn
http://8bZA85Jr.tsLwz.cn
http://BNYeGHHW.tsLwz.cn
http://XDzzr9SN.tsLwz.cn
http://21mVDEF1.tsLwz.cn
http://ONr9KQcB.tsLwz.cn
http://HJu9fSoS.tsLwz.cn
http://d17MdwFm.tsLwz.cn
http://Gn6Ww1h5.tsLwz.cn
http://dBSV9tlU.tsLwz.cn
http://TIimRVLm.tsLwz.cn
http://1tYDBSYW.tsLwz.cn
http://LX3lOHZI.tsLwz.cn
http://Q7CIYKmA.tsLwz.cn
http://713W9QXt.tsLwz.cn
http://BFWUl5XA.tsLwz.cn
http://UVANnNMA.tsLwz.cn
http://3Fo8MAEB.tsLwz.cn
http://L5B5aE2x.tsLwz.cn
http://JiJbFFFU.tsLwz.cn
http://FO7COx3z.tsLwz.cn
http://0G71KvfF.tsLwz.cn
http://vfO3R9QW.tsLwz.cn
http://Fe4gJtET.tsLwz.cn
http://www.dtcms.com/a/375842.html

相关文章:

  • Shell 脚本基础:从语法到实战全解析
  • Nginx如何部署HTTP/3
  • 解一元三次方程
  • A股大盘数据-20250909分析
  • 05-Redis 命令行客户端(redis-cli)实操指南:从连接到返回值解析
  • shell函数+数组+运算+符号+交互
  • 群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书
  • 照明控制设备工程量计算 -图形识别超方便
  • Matlab通过FFT快速傅里叶变换提取频率
  • iis 高可用
  • 有趣的数学 贝塞尔曲线和毕加索
  • 基于STM32的智能宠物小屋设计
  • STM32之RS485与ModBus详解
  • DCDC输出
  • GitHub 项目提交完整流程(含常见问题与解决办法)
  • Day39 SQLite数据库操作与文本数据导入
  • python常用命令
  • 广东省省考备考(第九十五天9.9)——言语、资料分析、判断推理(强化训练)
  • MySQL问题8
  • 【AI】Jupyterlab中关于TensorFlow版本问题
  • Java 运行时异常与编译时异常以及异常是否会对数据库造成影响?
  • CosyVoice2简介
  • 新机快速搭建java开发环境过程记录
  • std::enable_shared_from_this
  • Spring Boot--Bean的扫描和注册
  • Pytorch基础入门3
  • ARM-指令集全解析:从基础到高阶应用
  • ARM 汇编学习
  • 今天继续昨天的正则表达式进行学习
  • Mysql集群——MHA高可用架构