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

基于XGBoots预测A股大盘《上证指数》(代码+数据+一键可运行)

 对AI炒股感兴趣的小伙伴可加WX:caihaihua057200(备注:学校/公司+名字+方向)

另外我还有些AI的应用可以一起研究(我一直开源代码)

1、引言

在这期内容中,我们回到AI预测股票,转而探索人工智能技术如何应用于另一个有趣的领域:预测A股大盘。

2、AI与股票的关系

在股票预测中,AI充当着数据分析和模式识别的角色。虽然无法确保百分之百准确的结果,但它为增加预测的洞察力和理解提供了全新的途径。

3、数据收集与处理(akshare爬实时上证指数)

import akshare as ak
import numpy as np
import pandas as pd
from pandas.tseries.offsets import CustomBusinessDay
from datetime import datetime
import xgboost as xgbdf = ak.stock_zh_index_daily_em(symbol='sh000001')  

数据预处理:时间特征转换及时间特征结合K线特征


today = datetime.today()
date_str = today.strftime("%Y%m%d")
base = int(datetime.strptime(date_str, "%Y%m%d").timestamp())
change1 = lambda x: (int(datetime.strptime(x, "%Y%m%d").timestamp()) - base) / 86400
change2 = lambda x: (datetime.strptime(str(x), "%Y%m%d")).day
change3 = lambda x: datetime.strptime(str(x), "%Y%m%d").weekday()df['date'] = df['date'].str.replace('-', '')
X = df['date'].apply(lambda x: change1(x)).values.reshape(-1, 1)
X_month_day = df['date'].apply(lambda x: change2(x)).values.reshape(-1, 1)
X_week_day = df['date'].apply(lambda x: change3(x)).values.reshape(-1, 1)
XX = np.concatenate((X, X_week_day, X_month_day), axis=1)[29:]
FT = np.array(df.drop(columns=['date']))
min_vals = np.min(FT, axis=0)
max_vals = np.max(FT, axis=0)
FT = (FT - min_vals) / (max_vals - min_vals)window_size = 30
num_rows, num_columns = FT.shape
new_num_rows = num_rows - window_size + 1
result1 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.mean(window, axis=0)result1[i] = window_meanresult2 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.max(window, axis=0)result2[i] = window_meanresult3 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.min(window, axis=0)result3[i] = window_meanresult4 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.std(window, axis=0)result4[i] = window_mean
result_list = [result1, result2, result3, result4]
result = np.hstack(result_list)XX = np.concatenate((XX, result), axis=1)

4、预测模型(XGboots)


y1 = df['open'][29:]
y2 = df['close'][29:]
y3 = df['high'][29:]
y4 = df['low'][29:]
models1 = xgb.XGBRegressor()
models2 = xgb.XGBRegressor()
models3 = xgb.XGBRegressor()
models4 = xgb.XGBRegressor()
models1.fit(XX, y1)
models2.fit(XX, y2)
models3.fit(XX, y3)
models4.fit(XX, y4)

5、应用及画图


start_date = pd.to_datetime(today)bday_cn = CustomBusinessDay(weekmask='Mon Tue Wed Thu Fri')
future_dates = pd.date_range(start=start_date, periods=6, freq=bday_cn)
future_dates_str = [date.strftime('%Y-%m-%d') for date in future_dates][1:]
future_dates_str = pd.Series(future_dates_str).str.replace('-', '')
X_x = future_dates_str.apply(lambda x: change1(x)).values.reshape(-1, 1)
X_month_day_x = future_dates_str.apply(lambda x: change2(x)).values.reshape(-1, 1)
X_week_day_x = future_dates_str.apply(lambda x: change3(x)).values.reshape(-1, 1)
XXX = np.concatenate((X_x, X_week_day_x, X_month_day_x), axis=1)
last_column = result[-1:, ]
repeated_last_column = np.tile(last_column, (5, 1))
result = repeated_last_columnXXX = np.concatenate((XXX, result), axis=1)
pred1 = models1.predict(XXX)
pred2 = models2.predict(XXX)
pred3 = models3.predict(XXX)
pred4 = models4.predict(XXX)y1 = np.array(df['open'][-30:])
y2 = np.array(df['close'][-30:])
y3 = np.array(df['high'][-30:])
y4 = np.array(df['low'][-30:])
YD = np.array(df['date'][-30:])data = {'open': np.concatenate([y1, pred1]),'close': np.concatenate([y2, pred2]),'high': np.concatenate([y3, pred3]),'low': np.concatenate([y4, pred4]),'date':np.concatenate([YD,np.array(future_dates_str)])
}df = pd.DataFrame(data)import mplfinance as mpf# df['date'] = pd.date_range(start=RQ, periods=len(df))
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
# mpf.plot(df, type='candle', title='Stock K-Line')
my_color = mpf.make_marketcolors(up='red',  # 上涨时为红色down='green',  # 下跌时为绿色# edge='i',  # 隐藏k线边缘# volume='in',  # 成交量用同样的颜色inherit=True)my_style = mpf.make_mpf_style(# gridaxis='both',  # 设置网格# gridstyle='-.',# y_on_right=True,marketcolors=my_color)mpf.plot(df, type='candle',style=my_style,# datetime_format='%Y年%m月%d日',title='Stock K-Line')

6、结果(预测下周上证:图中后五天是预测结果)

 总结图中所示:

1、周一到周三略微上涨一点点。

2、下周四五高开高走(令人惊讶)。

如果提前布局的话应该是选择在周四找最低点买入。

全代码,一件运行:

import akshare as ak
import numpy as np
import pandas as pd
from pandas.tseries.offsets import CustomBusinessDay
from datetime import datetime
import xgboost as xgbdf = ak.stock_zh_index_daily_em(symbol='sh000001')today = datetime.today()
date_str = today.strftime("%Y%m%d")
base = int(datetime.strptime(date_str, "%Y%m%d").timestamp())
change1 = lambda x: (int(datetime.strptime(x, "%Y%m%d").timestamp()) - base) / 86400
change2 = lambda x: (datetime.strptime(str(x), "%Y%m%d")).day
change3 = lambda x: datetime.strptime(str(x), "%Y%m%d").weekday()df['date'] = df['date'].str.replace('-', '')
X = df['date'].apply(lambda x: change1(x)).values.reshape(-1, 1)
X_month_day = df['date'].apply(lambda x: change2(x)).values.reshape(-1, 1)
X_week_day = df['date'].apply(lambda x: change3(x)).values.reshape(-1, 1)
XX = np.concatenate((X, X_week_day, X_month_day), axis=1)[29:]
FT = np.array(df.drop(columns=['date']))
min_vals = np.min(FT, axis=0)
max_vals = np.max(FT, axis=0)
FT = (FT - min_vals) / (max_vals - min_vals)window_size = 30
num_rows, num_columns = FT.shape
new_num_rows = num_rows - window_size + 1
result1 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.mean(window, axis=0)result1[i] = window_meanresult2 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.max(window, axis=0)result2[i] = window_meanresult3 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.min(window, axis=0)result3[i] = window_meanresult4 = np.empty((new_num_rows, num_columns))
for i in range(new_num_rows):window = FT[i: i + window_size]window_mean = np.std(window, axis=0)result4[i] = window_mean
result_list = [result1, result2, result3, result4]
result = np.hstack(result_list)XX = np.concatenate((XX, result), axis=1)y1 = df['open'][29:]
y2 = df['close'][29:]
y3 = df['high'][29:]
y4 = df['low'][29:]
models1 = xgb.XGBRegressor()
models2 = xgb.XGBRegressor()
models3 = xgb.XGBRegressor()
models4 = xgb.XGBRegressor()
models1.fit(XX, y1)
models2.fit(XX, y2)
models3.fit(XX, y3)
models4.fit(XX, y4)start_date = pd.to_datetime(today)bday_cn = CustomBusinessDay(weekmask='Mon Tue Wed Thu Fri')
future_dates = pd.date_range(start=start_date, periods=6, freq=bday_cn)
future_dates_str = [date.strftime('%Y-%m-%d') for date in future_dates][1:]
future_dates_str = pd.Series(future_dates_str).str.replace('-', '')
X_x = future_dates_str.apply(lambda x: change1(x)).values.reshape(-1, 1)
X_month_day_x = future_dates_str.apply(lambda x: change2(x)).values.reshape(-1, 1)
X_week_day_x = future_dates_str.apply(lambda x: change3(x)).values.reshape(-1, 1)
XXX = np.concatenate((X_x, X_week_day_x, X_month_day_x), axis=1)
last_column = result[-1:, ]
repeated_last_column = np.tile(last_column, (5, 1))
result = repeated_last_columnXXX = np.concatenate((XXX, result), axis=1)
pred1 = models1.predict(XXX)
pred2 = models2.predict(XXX)
pred3 = models3.predict(XXX)
pred4 = models4.predict(XXX)y1 = np.array(df['open'][-30:])
y2 = np.array(df['close'][-30:])
y3 = np.array(df['high'][-30:])
y4 = np.array(df['low'][-30:])
YD = np.array(df['date'][-30:])data = {'open': np.concatenate([y1, pred1]),'close': np.concatenate([y2, pred2]),'high': np.concatenate([y3, pred3]),'low': np.concatenate([y4, pred4]),'date':np.concatenate([YD,np.array(future_dates_str)])
}df = pd.DataFrame(data)import mplfinance as mpf# df['date'] = pd.date_range(start=RQ, periods=len(df))
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
# mpf.plot(df, type='candle', title='Stock K-Line')
my_color = mpf.make_marketcolors(up='red',  # 上涨时为红色down='green',  # 下跌时为绿色# edge='i',  # 隐藏k线边缘# volume='in',  # 成交量用同样的颜色inherit=True)my_style = mpf.make_mpf_style(# gridaxis='both',  # 设置网格# gridstyle='-.',# y_on_right=True,marketcolors=my_color)mpf.plot(df, type='candle',style=my_style,# datetime_format='%Y年%m月%d日',title='Stock K-Line')

相关文章:

基于XGBoots预测A股大盘《上证指数》(代码+数据+一键可运行)

对AI炒股感兴趣的小伙伴可加WX:caihaihua057200(备注:学校/公司名字方向) 另外我还有些AI的应用可以一起研究(我一直开源代码) 1、引言 在这期内容中,我们回到AI预测股票,转而探索…...

5G NR:PRACH频域资源

PRACH在频域位置由IE RACH-ConfigGeneric中参数msg1-FrequencyStart和msg1-FDM所指示,其中, msg1-FrequencyStart确定PRACH occasion 0的RB其实位置相对于上行公共BWP的频域其实位置(即BWP 0)的偏移,即确定PRACH的频域起始位置msg1-FDM的取值…...

设计模式——组合模式

什么是组合模式 组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以…...

get属性是什么?有什么用?在什么场景用?get会被Json序列化?

在JavaScript中,对象的属性不仅可以是数据属性(即常规的键值对),还可以是访问器属性(accessor properties)。访问器属性不包含实际的数据值,而是定义了如何获取(get)和设…...

这可能是你看过最详细的 [八大排序算法]

排序算法 前置知识 [排序稳定性]一、直接插入排序二、希尔排序三、直接选择排序四、堆排序五、冒泡排序六、快速排序七、归并排序八、计数排序(非比较排序)排序复杂度和稳定性总结 前置知识 [排序稳定性] 假定在待排序的记录序列中,存在多个…...

docker的安装

CentOS7 安装 Docker 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 添加下载源 yum-config-manager --add-repo http://mirrors.aliyun.com/…...

【业务功能篇75】微服务项目环境搭建docker-mysql-redisSpringCloudAlibaba

项目环境准备 1.虚拟机环境 我们可以通过VMWare来安装,但是通过VMWare安装大家经常会碰到网络ip连接问题,为了减少额外的环境因素影响,Docker内容的讲解我们会通过VirtualBox结合Vagrant来安装虚拟机。 VirtualBox官网:https:/…...

学习笔记|认识数码管|控制原理|数码管实现0-9的显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第九集:数码管静态显示

文章目录 1.认识数码管2.控制原理十进制转换为任意进制其它进制转十进制 3.数码管实现0-9的显示1.用数组定义0-9的内码段码跟位码的区别2.尝试用延时实现0-9的循环显示3.用按键控制数字的加或者减。 总结课后练习: 1.认识数码管 数码管按段数可分为七段数码管和八段…...

CentOS 7/8 firewall 转发端口

#开启系统路由模式功能 echo net.ipv4.ip_forward1>>/etc/sysctl.conf sysctl -p #开启firewalld systemctl start firewalld 打开防火墙伪装IP # 检查是否允许伪装IP,返回no表示没开启,反之开启伪装IP firewall-cmd --query-masquerade #设置…...

mysql自动备份脚本

备份脚本 #!/bin/bash #author cheng #mysql数据自动备份 mysql_user“root” mysql_password“passwprd” mysql_host“localhost” mysql_port“3306” mysql_charset“utf8mb4” #备份文件存放地址(根据实际情况填写) backup_location/usr/cheng/msg_manager/sql #是否删…...

VUE笔记(九)vuex

一、vuex的简介 1、回顾组件之间的通讯 父组件向子组件通讯:通过props实现 子组件向父组件通讯:通过自定义事件($emit)方式来实现 兄弟组件之间的通讯:事件总线($eventBus)、订阅与发布方式来实现 跨级组件的通讯…...

Webpack高频面试题

Webpack高频面试题 1 谈谈你对webpack的看法 现在的前端网页功能丰富,特别是SPA(single page web application 单页应用)技术流行后,JavaScript的复杂度增加和需要一大堆依赖包,还需要解决Scss,Less……新…...

数字基带传输系统

文章目录 前言一、数字基带系统基本组成二、基本码型1、数字基带信号2、6 种基本码型 三、数字基带信号的频谱特性四、数字基带信号选码1、原则2、常用的传输码型①、AMI 码(传号交替反转码)②、 H D B 3 HDB_3 HDB3​ 码(3 阶高密度双极性码…...

FPGA使用MIG调用SODIMM内存条接口教程,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、SODIMM内存条简介3、设计思路框架视频输入视频缓存MIG配置调用SODIMM内存条VGA时序视频输出 4、vivado工程详解5、上板调试验证6、福利:工程代码的获取 1、前言 FPGA应用中,数据缓存是一大重点,不管是图像处理还是A…...

深度学习数据预处理

参考文章:深度学习中的数据预处理方法总结 在深度学习中,数据预处理(preprocessing)的重要性体现在以下几个方面: 1、数据质量: 原始数据通常包含错误、缺失值、异常值和噪声。预处理能够检测和处理这些问…...

[C++] STL_vector 迭代器失效问题

文章目录 1、前言2、情况一:底层空间改变的操作3、情况二:指定位置元素的删除操作4、g编译器对迭代器失效检测4.1 扩容4.2 erase删除任意位置(非尾删)4.3 erase尾删 5、总结 1、前言 **迭代器的主要作用就是让算法能够不用关心底…...

C语言暑假刷题冲刺篇——day5

目录 一、选择题 二、编程题 🎈个人主页:库库的里昂 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C语言每日一练✨相关专栏:代码小游戏、C语言初阶、C语言进阶🤝希望作者…...

若依Cloud集成Flowable6.7.2

项目简介 基于若依Cloud的Jove-Fast微服务项目,集成工作流flowable(接上篇文章) 若依Cloud集成积木报表 项目地址:https://gitee.com/wxjstudy/jove-fast 后端 新建模块 目录结构如下: 引入依赖 前提:引入依赖之前先配置好maven的setting.xml &…...

动态不确定性的动态S过程(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

LoadRunner操作教程

日升时奋斗,日落时自省 目录 1、Virtual User Generator (VUG) 1.1、WebTours系统 1.1.1、WebTours启动 1.1.2、WebTours配置 1.2、脚本录制 1.3、编译 1.4、脚本运行 1.5、加强脚本 1.5.1、事务插入 1.5.2、插入集合点 1.5.3、参…...

本地部署 Open Claw 保姆教程,同事还在手动整理文件,我已经让 AI 全搞定了

前言 2026 年开源圈热门的「数字员工」OpenClaw(昵称小龙虾),GitHub 星标超 28 万,凭「本地运行 零代码操作 自动干活」的优势圈粉无数!很多人误以为它是普通聊天 AI,实则是能真正操控电脑的自动化神器 …...

谷歌“反重力”工具更新强行替换软件,用户恢复工作困难重重!

谷歌“反重力”工具更新强行替换软件,用户恢复工作困难重重!2026年5月21日,原本打算用“反重力”工具工作的用户,遭遇了谷歌的意外安排。前一天,谷歌在2026年I/O开发者大会上推出“反重力”工具新版本,将其…...

大模型稀疏激活:MoE架构的工程实践与负载均衡

1. 这不是参数堆砌,而是“动态稀疏激活”的工程革命你可能已经看到过那条刷屏的推文:“GPT-4有1.8万亿参数,但每生成一个token只用其中2%。”——这句话像一道闪电劈开了大模型圈的认知惯性。它背后没有玄学,没有营销话术&#xf…...

C++ Kafka实战:用librdkafka手写一个带自定义分区和事件回调的生产者

C Kafka实战:构建高性能生产者客户端的深度实践 在分布式系统架构中,消息队列作为解耦生产者和消费者的关键组件,其重要性不言而喻。而Apache Kafka凭借其高吞吐、低延迟和水平扩展能力,已成为现代实时数据管道和流处理应用的首选…...

80C166/C167芯片内部RAM执行代码技术详解

1. 80C166/C167芯片内部RAM执行代码的技术解析在嵌入式系统开发中,有时我们需要将特定代码从ROM复制到芯片内部RAM执行。这种需求常见于需要改变总线模式的场景,比如在Siemens 80C166/C167微控制器上切换8位/16位模式或改变总线复用配置。根据Siemens官方…...

通用人工智能(AGI)完整技术方案:以字序生命模型(WOLM)为认知内核的双脑协同架构

一、AGI的终极定义在讨论技术方案之前,先定义什么是AGI。当前主流的AGI定义,强调一个系统能在绝大多数人类能做的智力任务上达到或超越人类水平。这个定义隐含了一个假设:AGI的核心是“智力”——逻辑推理、知识储备、创造力。我们的定义不同…...

通过curl命令快速测试Taotoken上不同大模型的响应效果

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令快速测试Taotoken上不同大模型的响应效果 对于开发者而言,在集成大模型能力时,快速验证接口连…...

昇腾CANN ops-blas:GEMM 在 NPU 上为什么可以快到极致

矩阵乘是所有深度学习计算的根。Attention、全连接、卷积展开——归根到底都是矩阵乘。ops-blas 是 CANN 里专门做高性能 GEMM(General Matrix Multiply)的算子库,核心目标是把昇腾 NPU 的 Cube 单元利用率拉到 90% 以上。 ops-blas 和 ops-n…...

Ender-3固件配置终极指南:5步简单快速性能优化

Ender-3固件配置终极指南:5步简单快速性能优化 【免费下载链接】Ender-3 The Creality3D Ender-3, a fully Open Source 3D printer perfect for new users on a budget. 项目地址: https://gitcode.com/gh_mirrors/en/Ender-3 Ender-3固件配置是解锁3D打印机…...

如何将微信聊天记录转化为你的数字记忆宝藏?

如何将微信聊天记录转化为你的数字记忆宝藏? 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg …...