利用强化学习进行股票操作实战(四)

2023-11-12

本次实战代码仍是在之前基础上进行了一些修改。之前只在一支股票上进行训练,这次我将模型放在多支股票上训练,并在多支股票上进行了测试。对于多支股票的训练策略,没有参考过别人的训练方案(做这个的比较少)。我按自己的理解去训练,每一轮训练,都将每支股票从头到尾走一次。核心代码如下:
在这里插入图片描述
结果:
股票1:
不加均线的回测结果:
在这里插入图片描述
加均线的回测结果:
在这里插入图片描述
股票2:
不加均线的回测结果:
在这里插入图片描述
加均线的回测结果:
在这里插入图片描述
股票3:
不加均线的回测结果:
在这里插入图片描述
加均线的回测结果:
在这里插入图片描述
从上图可以发现,加了均线系统限制股票买卖效果不一定好,但是可以从一定程度上规避风险。在下跌趋势比较明显的股票中,均线系统能够很好的保护账户,减少损失。(如股票3)我这个均线策略设计的比较粗糙,如果细化一点,效果应该会好一些。

我本想依靠强化学习实现自动加减仓的功能,但发现这个似乎不太好做。

我最开始尝试了DDPG模型(ActorCritic中的一种),想利用Critic进行评价当前动作能够得到的收益(或是当前动作有多优秀),但是我发现critic很难训练,可能跟我使用的姿势不太对。我是将当前状态和当前动作当做特征输入critic网络中进行评价,这样输入可能很难让神经网络从中学到,应该输入当前状态,评价不同状态的得分。(现在才想到可以这么做,也有可能是神经网络需要精心设计过才好)

然后我又尝试了强制每次交易不满仓,只买入1/5仓位或只买入1/3仓位,每次卖出也同样。但我发现多数情况下这种分批次加减仓操作的效果都不如每次满仓操作效果好。我尝试了两种训练方式:1、在训练中满仓操作单,回测时分批买入;2、在训练中分批买入或卖出,回测同样。这两种训练方式效果都表现不好。

于是我就放弃了加减仓的设计。其实加减仓也可以结合大盘和个股的走势情况进行一个判断,可以通过建模得到当前风险状况来评估仓位设置。(这个后期再考虑了)

最后我再说下我对强化学习用在股票交易上的看法,我个人觉得强化学习用在股票交易上就是大材小用。强化学习适合当前动作对于之后影响没法立刻体现的任务,而在股票交易上,你今天买入或卖出第二天就知道当前操作是否正确。当然可以看一个长期的收益,但如果看一个长期的收益,似乎就不需要强化学习了,可以利用传统的机器学习算法或因子模型等。可能确实可以用强化学习,但我个人还是觉得有些大材小用,有监督学习就可以较好的解决股票交易这个问题。

代码github:
https://github.com/wbbhcb/stock_market

对量化、数据挖掘、深度学习感兴趣的可以关注公众号,本人不定期分享有关这些方面的研究。
在这里插入图片描述

个人知乎:
https://www.zhihu.com/people/e-zhe-shi-wo/activities

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用强化学习进行股票操作实战(四) 的相关文章

  • Java面试——缓存

    一 什么是缓存 1 缓存就是数据交换的缓冲区 称作 Cache 当某一硬件要读取数据时 会首先从缓存汇总查询数据 有则直接执行 不存在时从内存中获取 由于缓存的数据比内存快的多 所以缓存的作用就是帮助硬件更快的运行 2 缓存往往使用的是RA

随机推荐

  • MMRotate:旋转框检测实现过程

    MMRotate 旋转框检测实现过程 MMRotate地址 https github com open mmlab mmrotate 文档地址 https mmrotate readthedocs io en latest 一 环境搭建 1
  • Raspberry Pi Zero 单板配置手记(四)调整 TF 卡分区大小的不同方式

    RPi Zero 调整 TF 卡分区大小的不同方式 本文章为系列文章 Raspberry Pi Zero 单板配置手记 的第四篇 上一篇为 Raspberry Pi Zero 单板配置手记 三 使用 NetworkManager 管理网络连
  • 启动httpd服务:SSLCertificateFile: file ‘/var/www/miq/vmdb/certs/server.cer‘ does not exist or is empty

    启动httpd服务 SSLCertificateFile file var www miq vmdb certs server cer does not exist or is empty 启动httpd服务 失败 复制代码 root te
  • UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

    文章目录 1 什么是Assembly 2 PCG部分 2 1 Assembly变换 2 2 Point变换 2 2 1 SG CopyPointsWithHierachy 2 2 2 过滤及点变换 2 2 3 ApplyHierachy 3
  • python 获取控制台输出内容 解决中文乱码

    Python获取控制台输出 1 使用subprocess库 非实时读取 import subprocess xe subprocess run iperf3 c 127 0 0 1 p 5668 J stdout subprocess PI
  • shell实现嵌入式软件看门狗

    shell实现嵌入式软件看门狗 长时间运行的嵌入式程序 有时会因为莫名其妙的原因挂掉 这时就需要有其他的程序来一直监控我们的程序 由于监控程序属于软件层面 因此这种程序被称为 软件看门狗 这里用一个shell脚本实现该功能 这个脚本会一直监
  • Nginx Lua 实战

    在 nginx conf 中配置 在 http 节点中配置 location staticitem get default type text html content by lua file lua staticitem lua 创建 s
  • vue中axios的参数位置整理

    每次在进行前后端联调的时候 总是因为参数放不对而影响进度 我人都麻了 真的记不住 还是整理一下以便后续开发 一 vue2和vue3的接口请求头 vue 2 const res await this axios get vue 3 const
  • 数据结构课程设计——客运订票系统

    目录 2需求分析 2 1系统功能 3总体设计 3 1功能模块图 4详细设计 4 1 详细的设计思路 车次设置 订票模块的功能 退票模块的功能 管理员模块的功能 4 2 算法流程图 5编码 5 1数据结构定义 1 乘客信息 2 候补队列乘客信
  • JAVA代码审计从入门到精通2-JAVA WEB动态调试

    动态调试 在代码开发和代码分析的过程中需要对代码进行动态调试 动态调试是指利用集成环境 IDE 自带的调试器跟踪软件运行 协助解决和分析软件的bug 动态调试需要对程序设置断点 通过对程序的某行代码设置断点 当程序运行到此代码处会自动停止
  • Qt:自定义信号变量类型

    1 定义变量类型 struct User STRUCT 预测结果 2 在定义后面添加声明 告知所有用到该信号变量的对象 建议1 2 3 放在一个头文件 供所有类包含 Q DECLARE METATYPE User STRUCT 3 incl
  • ajax实验,基于Ajax技术的实验管理系统

    摘要 本文的研究来源于常州纺织服装职业技术学院实验教学管理系统 是常州纺织服装职业技术学院教务管理系统的子系统 该系统主要完成制定实验教学计划 网上选课 三方互动 在深入研究Ajax技术原理和工作流程的基础上 提出一个基于Ajax技术的实验
  • 自定义类型-结构体

    注 本文为C语言初阶内容 目录 1 结构体 1 1结构体的基础知识 声明和自引用 1 2结构体变量的定义和初始化 1 3结构体内存对齐和修改默认对齐数 1 4结构体传参 1 结构体 1 1结构体的基础知识 声明 初始化和自引用 结构体是一些
  • js实现高德地图实现科技感3d建筑模型显示示例

  • java创建数组的方式_Java创建数组的几种方式总结

    1 一维数组的声明方式 type arrayName 或 type arrayName 附 推荐使用第一种格式 因为第一种格式具有更好的可读性 表示type 是一种引用类型 数组 而不是type类型 建议不要使用第二种方式 下面是典型的声明
  • 如何从Process维度评估芯片面积

    如何从Process维度评估芯片面积 文章右侧广告为官方硬广告 与吾爱IC社区无关 用户勿点 点击进去后出现任何损失与社区无关 最近在小编知识星球上有不少星友问到工艺 Metal Stack 的相关问题 今天小编将从最基础的 Metal S
  • R语言中的t分布函数:学生t分布实践

    R语言中的t分布函数 学生t分布实践 学生t分布是统计学中常用的概率分布之一 在数据分析和假设检验中具有重要的应用 本文将介绍如何在R语言中使用学生t分布函数进行实践 并提供相应的源代码 首先 我们需要了解学生t分布的基本特性和应用场景 学
  • 华为OD机试 - 五子棋迷(Java)

    题目描述 张兵和王武是五子棋迷 工作之余经常切磋棋艺 这不 这会儿又下起来了 走了一会儿 轮张兵了 对着一条线思考起来了 这条线上的棋子分布如下 用数组表示 1 0 1 1 1 0 1 0 1 1 棋了分布说明 1代表白子 0代表空位 1
  • 华为OD机试 - 比较两个版本号的大小(Java )

    题目描述 输入两个版本号 version1 和 version2 每个版本号由多个子版本号组成 子版本号之间由 隔开 由大小写字母 数字组成 并且至少有一个字符 按从左到右的顺序比较子版本号 比较规则如下 子版本号前面的0不参与比较 比如
  • 利用强化学习进行股票操作实战(四)

    本次实战代码仍是在之前基础上进行了一些修改 之前只在一支股票上进行训练 这次我将模型放在多支股票上训练 并在多支股票上进行了测试 对于多支股票的训练策略 没有参考过别人的训练方案 做这个的比较少 我按自己的理解去训练 每一轮训练 都将每支股