# stock-simple-predict **Repository Path**: lmxxff/stock-simple-predict ## Basic Information - **Project Name**: stock-simple-predict - **Description**: 单纯依靠历史上每天的股价来预测明天的股价 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-07 - **Last Updated**: 2026-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Stock-GPT:金融AI的ChatGPT时代 - V2.0.0 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![TensorFlow 2.20+](https://img.shields.io/badge/TensorFlow-2.20+-orange.svg)](https://tensorflow.org/) [![Stock-GPT](https://img.shields.io/badge/Stock--GPT-Phase%201-green.svg)](./STOCK_GPT_ROADMAP.md) 🚀 **重大升级** - 全球首个将Transformer架构应用于A股预测的开源系统!本项目实现了从传统时间序列到类ChatGPT架构的范式转换,集成了四种强大的预测引擎:**XGBoost**、**LSTM**、**RandomForest** 和革命性的 **Stock-GPT Transformer**。 **V2.0.0 里程碑版本:Stock-GPT Phase 1完成 - 将股票数据"语言化",开启金融AI新纪元!** ## 🎯 V2.0.0 革命性升级 ### 🚀 Stock-GPT Transformer:金融界的ChatGPT - **🔤 数据Token化**: 将股票数值转换为语义Token,如 `[STOCK_000001, PRICE_CLOSE_199, RSI_065]` - **🤖 Transformer架构**: 556K参数,8头注意力机制,4层编码器 - **🎯 双任务设计**: MLM预训练 + 价格预测,支持开盘价和收盘价双目标 - **⚡ 智能GPU/CPU**: 自动处理RTX 5090兼容性,CPU模式稳定运行 ### 💡 核心突破:从数字到语言的范式转换 ```python # 传统方式:数值序列 [11.72, 65.5, 0.15, ...] # Stock-GPT方式:Token序列 [STOCK_000001, DATE_2025_01_15, PRICE_CLOSE_199, RSI_065, MACD_053] ``` ### 🛠️ 新增命令 ```bash # 训练Stock-GPT Transformer模型 python3 run_technical_analysis.py train_transformer 000001 -f daily --force-cpu # 使用Stock-GPT进行预测 python3 run_technical_analysis.py predict_transformer 000001 -f daily --force-cpu ``` ### 📊 实测效果展示 **平安银行 (000001) 预测结果:** - 💰 当前价格: 11.72元 - 🔮 Stock-GPT预测: 开盘9.62元, 收盘8.62元 (看跌-26.46%) - 📈 模型收敛: 损失0.1358,训练稳定 ## ✨ 主要功能 (Core Features) - **四重预测引擎**: - **XGBoost**: 梯度提升树,速度快,性能优异,适合快速验证和基准测试(单目标:预测收盘价) - **LSTM**: 深度学习模型,专为时间序列设计,双目标预测**开盘价**和**收盘价** - **RandomForest**: 随机森林算法,集成学习,具备优秀的泛化能力和特征重要性分析 - **🚀 Stock-GPT**: 革命性Transformer架构,将股票数据"语言化",具备跨股票学习潜力 - **多时间周期支持**: 可在日线 (`daily`) 和60分钟线 (`hourly`) 周期之间轻松切换。 - **自动化流程**: 提供从数据获取、特征计算、模型训练到实时预测的端到端自动化命令行工具。 - **全历史数据**: 利用股票自上市以来的全部**日线**历史数据进行训练。 - **可视化分析**: 自动生成预测值与真实值的对比图,直观评估模型效果。新版图表可同时展示开盘价与收盘价的预测情况。 - **实验性小时级预测**: 系统代码支持60分钟线 (`hourly`) 周期,但受限于上游数据源,只能获取到极短期历史数据,因此**模型有效性不足,仅供技术研究参考**。 ## 🧠 关于模型 (About the Models) ### XGBoost (eXtreme Gradient Boosting) - **特点**: 基于决策树的集成学习算法,**高性能、高效率**和**较好的可解释性** - **适用场景**: 处理表格型数据,快速建立技术指标和价格间的非线性关系,系统的**基准模型** - **模型性能**: 贵州茅台测试 RMSE: 181.19 ### LSTM (Long Short-Term Memory) - **特点**: 专为时间序列设计的RNN,具备**"记忆单元"**,学习长期依赖关系 - **适用场景**: 应对**"概念漂移"**问题,在长期趋势行情中表现优于XGBoost - **模型性能**: 贵州茅台测试 RMSE: 96.59,**四个模型中表现最优** ### RandomForest (随机森林) - **特点**: 基于决策树的集成学习,通过Bagging减少过拟合,**稳定性好** - **核心优势**: - 🌳 **特征重要性**: 自动分析各技术指标对预测的贡献度 - 🎯 **抗过拟合**: 通过随机抽样降低方差,泛化能力强 - 🚀 **并行训练**: 支持多核CPU并行,训练效率高 - **适用场景**: 特征分析和稳定预测,适合风险厌恶场景 - **模型性能**: 贵州茅台测试 RMSE: 120.72,性能稳定 ### ⚡ TCN (Temporal Convolutional Network) ✨ **新增** - **特点**: Google验证的高性能时序预测方法,**训练速度比LSTM快10倍+** - **核心优势**: - 🔥 **性能突破**: 昊志机电测试 RMSE: 0.1076,**超越LSTM基线15.7%** - ⚡ **并行计算**: 支持并行训练,无RNN的梯度消失问题 - 🎯 **长期建模**: 膨胀卷积设计,理论接受域62个时间步 - 🛡️ **稳定训练**: Huber损失函数,对异常值更鲁棒 - **技术架构**: 2层堆叠,128个卷积核,L2正则化,优化学习率0.0005 - **适用场景**: **高精度时序预测**,特别适合追求极致预测精度的场景 - **模型性能**: 昊志机电测试 RMSE: 0.1076 (0.37%相对误差),**当前最佳模型** ### 🚀 Stock-GPT Transformer (突破性创新) - **特点**: **金融界的ChatGPT**!将股票数据Token化,使用注意力机制理解市场"语义" - **核心优势**: - 🔤 **数据语言化**: 将数值转换为Token,如`PRICE_CLOSE_199`、`RSI_065` - 🤖 **注意力机制**: 8头注意力,关注不同时间和指标的重要特征 - 🎯 **多任务学习**: 支持预训练 + 下游任务,为泛化能力奠定基础 - 🌍 **扩展潜力**: 为多股票联合训练、零样本预测提供技术基础 - **适用场景**: **下一代金融AI**,具备跨股票学习和模式泛化的革命性潜力 - **发展状态**: Phase 1完成,目前在数据预处理优化中 ## 🛠️ 系统架构 (System Architecture) ### 核心控制层 - **`run_technical_analysis.py`**: **主控脚本**,系统的唯一入口 ### 数据处理层 - **`01_fetch_data.py`**: 获取K线数据 - **`02_preprocess_data.py`**: 清洗数据 - **`03_calculate_indicators.py`**: 计算技术指标 ### 传统模型层 - **`04_train_model.py`**: 训练 **XGBoost** 模型(单目标) - **`04b_train_lstm.py`**: 训练 **LSTM** 模型(双目标) - **`04c_train_randomforest.py`**: 训练 **RandomForest** 模型(单目标) - **`04d_train_tcn.py`**: 训练 **TCN** 模型(双目标,Google验证)✨ **新增** - **`05_predict_next.py`**: 使用 **XGBoost** 模型预测 - **`05b_predict_lstm.py`**: 使用 **LSTM** 模型预测 - **`05c_predict_randomforest.py`**: 使用 **RandomForest** 模型预测 - **`05d_predict_tcn.py`**: 使用 **TCN** 模型预测 ✨ **新增** ### 🚀 Stock-GPT层 (V2.0新增) - **`stock_tokenizer.py`**: **数据Token化引擎**,将数值转换为语义Token - **`stock_transformer.py`**: **Transformer模型架构**,556K参数的金融GPT - **`06_train_transformer.py`**: **Stock-GPT训练脚本**,端到端训练流程 - **`06b_predict_transformer.py`**: **Stock-GPT预测脚本**,智能价格预测 ## 🚀 快速开始 (Quick Start) ### 1. 克隆仓库 ```bash git clone https://gitee.com/lmxxff/stock-simple-predict.git cd stock-predict ``` ### 2. 安装核心依赖:TA-Lib 本项目依赖于 `TA-Lib` C语言库。对于Linux系统,可以按照以下步骤编译安装: ```bash # 项目中已包含 ta-lib-0.4.0-src.tar.gz tar -xzf ta-lib-0.4.0-src.tar.gz cd ta-lib/ ./configure make sudo make install ``` 安装完成后,返回项目根目录。 ### 3. 安装 Python 依赖库 我们已经将所有Python库都列在了 `requirements.txt` 文件中。使用pip一键安装: ```bash pip install -r requirements.txt ``` ## 📁 文件组织结构 为保持项目整洁,所有生成的资源文件统一存放在 `output/` 目录中: ``` output/ ├── data/ # 数据文件 │ ├── stock_data_*_raw.csv # 原始股票数据 │ ├── stock_data_*.csv # 预处理后的数据 │ └── stock_data_*_with_indicators.csv # 包含技术指标的数据 ├── models/ # 模型文件 │ ├── xgb_model_*.json # XGBoost模型 │ ├── lstm_model_*.h5 # LSTM模型 │ ├── rf_model_*.pkl # RandomForest模型 │ ├── tcn_model_*.h5 # TCN模型 ✨ 新增 │ └── transformer_*.weights.h5 # Transformer模型权重 ├── plots/ # 图表文件 │ ├── prediction_vs_actual_*.png # 传统模型预测对比图 │ └── transformer_prediction_*.png # Transformer预测图表 └── scalers/ # 归一化器文件 ├── X_scaler_*.pkl # 特征归一化器 ├── y_scaler_*.pkl # 目标变量归一化器 ├── tcn_*_scaler_*.pkl # TCN归一化器 ✨ 新增 ├── price_scaler_*.pkl # 价格归一化器 └── tokenizer_*.pkl # Transformer tokenizer ``` **优势:** - ✅ **项目根目录整洁**:不再有散落的CSV、PNG、PKL等文件 - ✅ **文件分类清晰**:按功能分类存放,便于查找和管理 - ✅ **易于备份**:只需备份output目录即可保存所有生成文件 - ✅ **向后兼容**:现有命令无需修改,自动使用新结构 ## 💡 使用方法 (Usage) ### 🚀 Stock-GPT Transformer (推荐) **训练 Stock-GPT 模型 (革命性Transformer架构):** ```bash # CPU模式(推荐)- 稳定可靠 python3 run_technical_analysis.py train_transformer 000001 -f daily --force-cpu --epochs 50 # GPU模式 - 为未来大模型做准备 python3 run_technical_analysis.py train_transformer 000001 -f daily --epochs 50 ``` **使用 Stock-GPT 进行预测:** ```bash python3 run_technical_analysis.py predict_transformer 000001 -f daily --force-cpu ``` ### 传统模型训练 **训练 LSTM 模型 (双目标: 预测开盘价和收盘价):** ```bash python3 run_technical_analysis.py train_lstm 600519 -f daily ``` **训练 XGBoost 模型 (单目标: 预测收盘价):** ```bash python3 run_technical_analysis.py train 600519 -f daily ``` **训练 TCN 模型 (双目标: 预测开盘价和收盘价,Google验证高性能):** ✨ **新增** ```bash python3 run_technical_analysis.py train_tcn 300503 -f daily ``` **训练 RandomForest 模型 (单目标: 预测收盘价,具备特征重要性分析):** ```bash python3 run_technical_analysis.py train_rf 600519 -f daily ``` ### 传统模型预测 **使用 LSTM 模型:** ```bash python3 run_technical_analysis.py predict_lstm 600519 -f daily ``` **使用 XGBoost 模型:** ```bash python3 run_technical_analysis.py predict 600519 -f daily ``` **使用 RandomForest 模型:** ```bash python3 run_technical_analysis.py predict_rf 600519 -f daily ``` **使用 TCN 模型 (Google验证的高性能时序预测):** ```bash python3 run_technical_analysis.py predict_tcn 600519 -f daily ``` ### 清理生成的文件 (`clean`) `clean` 命令可以一键删除所有由本系统生成的产物文件,保持项目目录的整洁。 **清理范围:** - 🗂️ **output目录**: 完整清理新版本的分类文件结构 - 📄 **根目录**: 清理旧版本遗留的散落文件(向后兼容) **清理的文件类型:** - 📊 **数据文件**: `output/data/stock_data_*.csv` 及根目录旧文件 - 🤖 **传统模型**: `output/models/` 中的 XGBoost、LSTM、RandomForest 模型文件 - 🚀 **Stock-GPT文件**: `output/models/` 和 `output/scalers/` 中的 Transformer 相关文件 - 📈 **可视化图表**: `output/plots/` 中的所有预测对比图 - 🔧 **归一化器**: `output/scalers/` 中的所有归一化器和tokenizer文件 ```bash python3 run_technical_analysis.py clean ``` **清理效果示例:** ``` 将要删除以下文件: - output/data/stock_data_600519_daily_*.csv - output/models/rf_model_600519_daily.pkl - output/plots/prediction_vs_actual_600519_daily_*.png - output/scalers/*_scaler_*.pkl - 根目录旧文件(如有) ``` **注意**: 为防止误删,此命令会要求你进行确认。清理后需要重新训练模型。 ## 🗺️ 未来计划 (Roadmap) ### 短期计划 - 详细的开发路线图请参考 [`TODOLIST.md`](./TODOLIST.md) 文件 - GPU兼容性改进方案请参考 [`GPU_GUIDE.md`](./GPU_GUIDE.md) 文件 ### 🚀 Stock-GPT发展路线图 **Phase 1** ✅ **已完成** - Transformer基础架构 - Token化系统:将股票数据转换为语义Token - 单股票Transformer模型:556K参数,稳定收敛 - 完整训练预测流水线:端到端自动化 **Phase 2** 🔄 **准备中** - 多股票实验 - 20只不同行业股票联合训练 - 跨股票预测能力验证 - 零样本预测初步验证 **Phase 3** 📅 **规划中** - 中等规模扩展 - 100股票规模训练:参数量扩展至10M - Few-shot学习能力 - 市场环境识别 **Phase 4** 🎯 **愿景** - 全市场大模型 - 全A股4000+股票:参数量达1B级别 - 涌现能力验证:发现人工分析难以发现的规律 - 金融界真正的ChatGPT 详细规划请参考:[`STOCK_GPT_ROADMAP.md`](./STOCK_GPT_ROADMAP.md) ## 📚 详细文档 - **[GPU使用指南](./GPU_GUIDE.md)** - WSL + RTX 5090使用说明 - **[开发日志](./DEVELOPMENT_LOG.md)** - 详细技术修复记录 - **[Stock-GPT路线图](./STOCK_GPT_ROADMAP.md)** - 未来大模型规划 ## ⚠️ 重要声明 (Disclaimer) **本项目仅为开源技术研究和学习之用,不构成任何投资建议。** 金融市场充满风险,基于本项目的任何操作所导致的盈亏,本人概不负责。请在做出任何投资决策前,进行充分的研究和风险评估。**投资有风险,入市需谨慎。** ## 📄 授权许可 (License) 本项目采用 [MIT License](https://opensource.org/licenses/MIT) 授权。