1. 从理论到实践的量化探索
项目背景:传统的股票技术分析依赖人工盯盘与形态识别,主观性强且效率低下。随着AI技术的下沉,我们能否让机器自动学习历史数据中的规律,辅助我们进行投资决策?这便是本项目——“智语析金”智能投研平台的初衷。
本项目是一个全栈式的金融AI应用。它不仅包含了XGBoost(传统机器学习)和LSTM(深度学习)双模型进行股价涨跌预测,还结合了LangChain框架和智谱AI大模型,实现了基于RAG(检索增强生成)的年报智能问答。前端采用Streamlit快速搭建,交互体验流畅。
项目特点总结:
双核驱动:XGBoost负责捕捉特征间的非线性关系,LSTM负责捕捉时间序列的长期依赖,两者融合提升预测稳健性。
智能交互:支持自然语言查询行情数据(如“最近一个月涨了多少?”),自动出图。
RAG知识库:上传PDF年报,即可针对文档内容进行AI问答。
全链路可视化:从数据采集、模型训练到回测评估,全部在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. 项目运行与部署指南
如果你想在本地运行此项目,请按以下步骤操作:
克隆/下载项目:
git clone [你的仓库地址] cd financial_copilot安装依赖:
pip install -r requirements.txt(注意:若提示tensorflow报错,可单独下载CPU版本)
启动应用:
streamlit run app.py配置API(可选):
如果要启用AI报告生成,请在侧边栏填入智谱AI的
API Key。
6. 总结与心得体会
通过这次项目的开发,我对“AI+金融”的落地有了更深的理解:
特征工程是关键:再复杂的模型,输入垃圾数据也只能输出垃圾结果。如何提取有效的技术指标(特征)比调参更重要。
模型融合是王道:单一模型容易过拟合,将XGBoost的“稳健”与LSTM的“记忆”结合,确实能平滑预测曲线,提升置信度。
RAG赋能传统报表:将LangChain引入投研系统,使得非结构化的PDF文档(年报)变成了可交互的知识库,极大地提升了信息获取效率。
免责声明:本项目仅用于学术研究与技术交流,所有预测结果不构成投资建议。股市有风险,入市需谨慎。
7. 附录:演示视频
演示视频:点击下方链接观看运行效果(视频包含数据加载、模型训练、AI分析全过程)
“智语析金”智能投研平台演示视频
如果觉得这篇文章对你有帮助,请点赞、收藏、关注三连支持一下!