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

基于XGBoost+LSTM双模型的股票预测系统——“智语析金”智能投研平台

1. 从理论到实践的量化探索

项目背景:传统的股票技术分析依赖人工盯盘与形态识别,主观性强且效率低下。随着AI技术的下沉,我们能否让机器自动学习历史数据中的规律,辅助我们进行投资决策?这便是本项目——“智语析金”智能投研平台的初衷。

本项目是一个全栈式的金融AI应用。它不仅包含了XGBoost(传统机器学习)和LSTM(深度学习)双模型进行股价涨跌预测,还结合了LangChain框架和智谱AI大模型,实现了基于RAG(检索增强生成)的年报智能问答。前端采用Streamlit快速搭建,交互体验流畅。

项目特点总结:

  1. 双核驱动:XGBoost负责捕捉特征间的非线性关系,LSTM负责捕捉时间序列的长期依赖,两者融合提升预测稳健性。

  2. 智能交互:支持自然语言查询行情数据(如“最近一个月涨了多少?”),自动出图。

  3. RAG知识库:上传PDF年报,即可针对文档内容进行AI问答。

  4. 全链路可视化:从数据采集、模型训练到回测评估,全部在Web端完成。


2. 核心技术栈与架构设计

为了让大家对系统有一个宏观的了解,下面列出本项目使用的核心库和技术方案。

2.1 开发环境

  • 语言:Python 3.8+

  • 框架:Streamlit 1.28 (快速构建Web UI)

  • 数据库/向量库:ChromaDB (用于RAG检索)

2.2 核心算法库

  • 数据处理:Pandas, Numpy

  • 传统模型:XGBoost (集成学习,作为基模型)

  • 时序模型:TensorFlow 2.x / Keras (构建LSTM网络)

  • 特征工程:TA-Lib (技术指标计算,如RSI, MACD, 布林带)

2.3 AI与大模型

  • 大模型接口:智谱AI (GLM-4-Flash)

  • RAG框架:LangChain (文档加载、文本分割、向量化检索)

2.4 系统架构流程图

数据流:Tushare/AkShare数据源->技术指标计算->特征工程(25维降为7维)->XGBoost+LSTM训练->Streamlit前端展示与交互

3. 核心模块实现详解

由于篇幅有限,这里仅展示最关键的核心逻辑,完整代码可在文末获取。

3.1 数据采集与容灾(双数据源)

为了确保程序在任何网络环境下都能运行,我们实现了Tushare与AkShare的自动切换机制。

# core.py 核心代码片段 import tushare as ts import akshare as ak def fetch_stock_data(symbol="300274", start_date="20200101", end_date="20241231"): # 优先使用Tushare Pro (专业版) try: df = pro.daily(ts_code=ts_code, ...) if len(df) > 0: return df except: # 失败则自动降级到AkShare (免费开源) df = ak.stock_zh_a_hist(symbol=symbol, ...) return df

数据示例:

原始数据结构示例:

加载出来的文件保存在同目录下的data文件夹,如图所示。

3.2 特征工程:构建技术指标

我们计算了RSI、MACD、布林带、ATR等25个候选特征,并通过VIF(方差膨胀因子)筛选出7个核心特征以避免多重共线性。

  • 核心特征open,high,low,volume,pct_change,rsi,macd_signal

  • 预测目标Target(未来5日收盘价 > 当前收盘价 ? 1 : 0)。

3.3 双模型融合策略

本项目采用软投票机制,结合了两种不同原理的模型:

模型名称原理优势权重
XGBoost对表格数据极其敏锐,能处理特征间的复杂交互,泛化能力强。60%
LSTM (长短期记忆网络)专门处理时间序列,能记住过去60天的“记忆”来判断未来趋势。40%

融合代码逻辑:

# 获取预测概率 xgb_prob = xgb_model.predict_proba(X_test)[0, 1] lstm_prob = lstm_model.predict(X_test_seq)[0, 0] # 加权融合 final_prob = 0.6 * xgb_prob + 0.4 * lstm_prob print(f"综合上涨概率: {final_prob:.2%}")

4. 系统界面展示与功能导览

4.1 AI智能诊断仪表盘

在“AI诊断”页面,系统会可视化展示当前股票的上涨概率。本系统结合了技术面指标(如RSI超买超卖)与大模型分析,生成详细的诊断报告。

4.2 行情驾驶舱

交互式K线图,支持缩放查看细节,集成布林带、MACD、成交量副图,帮助进行技术分析。

4.3 RAG智能问答(亮点功能)

系统支持上传PDF年报(如阳光电源年报)。程序会将PDF切片向量化存入ChromaDB。当用户提问“公司主营业务收入如何?”时,系统会先检索相关段落,再交给大模型组织语言回答,有效避免“幻觉”。

4.4 策略回测与评估

在“模型评估”模块,我们可以看到模型在测试集上的表现。经过测试,双模型融合后的AUC达到了0.60,准确率约为 55.45%,相比单一模型有显著提升。

5. 项目运行与部署指南

如果你想在本地运行此项目,请按以下步骤操作:

  1. 克隆/下载项目

    git clone [你的仓库地址] cd financial_copilot
  2. 安装依赖

    pip install -r requirements.txt

    (注意:若提示tensorflow报错,可单独下载CPU版本)

  3. 启动应用

    streamlit run app.py
  4. 配置API(可选)

    • 如果要启用AI报告生成,请在侧边栏填入智谱AI的API Key

6. 总结与心得体会

通过这次项目的开发,我对“AI+金融”的落地有了更深的理解:

  1. 特征工程是关键:再复杂的模型,输入垃圾数据也只能输出垃圾结果。如何提取有效的技术指标(特征)比调参更重要。

  2. 模型融合是王道:单一模型容易过拟合,将XGBoost的“稳健”与LSTM的“记忆”结合,确实能平滑预测曲线,提升置信度。

  3. RAG赋能传统报表:将LangChain引入投研系统,使得非结构化的PDF文档(年报)变成了可交互的知识库,极大地提升了信息获取效率。

免责声明:本项目仅用于学术研究与技术交流,所有预测结果不构成投资建议。股市有风险,入市需谨慎。


7. 附录:演示视频

  • 演示视频:点击下方链接观看运行效果(视频包含数据加载、模型训练、AI分析全过程)

“智语析金”智能投研平台演示视频


如果觉得这篇文章对你有帮助,请点赞、收藏、关注三连支持一下!

http://www.cnnetsun.cn/news/3359369.html

相关文章:

  • VC++机器视觉实战:从OpenCV集成到工业级算法优化
  • 【提示词工程 03 对话模型对齐】从基础模型到可用助手的演进
  • 21-缓存越用越脏-给本地数据加版本过期和重建策略
  • AI Token工厂爆发:清华师生创业半年融资10亿,背后是门什么生意
  • 现代C++软件架构设计:从核心原则到工程实践
  • AI 前沿日报 | 2026年7月13日
  • RAG中PDF文档的处理和存储(二):Markdown文档的分块处理与入库
  • 运算符与表达式
  • 工业信号采集:FOD4216光耦与PIC18F25J11的抗干扰方案
  • HybridCLR热更新开发中UnityLinker.exe报错的系统性排查与解决方案
  • 施工企业合同管控工具测评:蓝燕云全生命周期管理能力
  • Visual C++控制台编程实战:CmdTool工具包设计与实现
  • C#贪吃蛇实战:从零到8KB的零分配与Native AOT优化
  • 爬虫监控与告警系统——成功率/延迟/异常监控与Prometheus+Grafana实战
  • Helloagent chapter8 ragmemory
  • gdb调试基础
  • C++封装libpng与SDL2实现轻量PNG图像处理类
  • C盘清理全攻略:从基础操作到进阶技巧,安全释放30G+空间
  • 项目实战:从零构建Java+MySQL图书借阅系统(Swing版)
  • 智能代理技能(Agent Skills)开发指南与技术解析
  • 企业级AI Agent落地:从模型能力到工程体系的跨越
  • 单片机DAY_2
  • L9958与TM4C1294NCZAD电机控制方案解析
  • Chapter 2 The Well: Navigating Parasitics and Performance in CMOS Fabrication
  • Lua C接口封装设计:构建安全高效的C/C++与Lua双向通信桥梁
  • RoPE旋转位置编码原理与工程实践:从数学本质到CUDA优化
  • 本地AI音乐生成实战:为游戏开发打造史诗级战斗配乐
  • Mythos:AI原生安全时代的数字安全分析师
  • 通义灵码(阿里云)配置和streamlit实现小交互聊天界面
  • Unity插件缺失报错全解析:从编译错误到运行时依赖的完整解决方案