GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

深度技术分析:KittenCN/stock_prediction

项目背景与痛点

在这个波动不定的股市中,准确的股票预测能力显得尤为重要。许多投资者不仅依赖于传统的技术分析,还在探索更先进的工具,试图提高股票预测的准确性。KittenCN/stock_prediction项目应运而生,它提供了一个基于神经网络的通用股票预测模型,试图为投资者解开市场的复杂性。

股票市场常常充满了不确定性,有效的预测工具可以帮助投资者做出更加明智的决策。然而,传统的预测模型往往依赖于大量的历史数据和复杂的算法,这给许多中小型投资者带来不小的挑战。借助于深度学习的强大功能,这款预测模型在提高预测准确性的同时,还简化了操作流程,降低了使用门槛。

核心技术揭秘

该模型的核心在于神经网络技术的应用。深度学习的力量使其能够从海量数据中提取关键特征,进而提升模型的预测能力。下面我们将深入探讨其技术架构:

graph TD A[原始数据] --> B[数据预处理] B --> C[特征工程] C --> D[神经网络训练] D --> E[模型评估] E --> F{"模型性能?"} F -->|"通过"| G[模型部署] F -->|"失败"| H[调整参数]

技术架构

  1. 原始数据:项目首先从各大金融数据源获取历史股票数据。
  2. 数据预处理:对数据进行清洗、归一化等预处理操作,去除异常值。
  3. 特征工程:提取与预测目标紧密相关的特征。例如,交易量、股票价格的涨跌等。
  4. 神经网络训练:使用深度学习框架(如 TensorFlow 或 PyTorch)训练模型,一般采用多层感知机或 LSTM 等网络架构。
  5. 模型评估:通过验证集评价模型的准确性。
  6. 调整参数:如果模型性能不佳,需调整网络结构或超参数。
  7. 模型部署:最终将训练好的模型部署到生产环境,实时预测股票价格变动。

关键数据流

在这个流过程中,重要的一步是特征工程,因为精确的特征提取能够显著影响模型的准确性和鲁棒性。神经网络训练则依赖于高效的 GPU 加速。值得注意的是,模型评估部分需要使用交叉验证等方法,确保模型泛化能力强。

功能亮点与差异

与其他股票预测模型相比,KittenCN/stock_prediction 主要有以下几个方面的独特优势:

  • 高精度:神经网络技术能够自学习强大的预测能力。
  • 灵活性:模型能够适应多种不同业务场景下的需求变化。
  • 易用性:项目提供了简单的 API 接口,使得即使是非专业的金融投资者也能方便地使用。

在数据分析和特征选择上,该项目使用了自动化工具,大大简化了用户操作流程,同时保证模型的有效性和灵活性。其优势在于它不仅仅是一款工具,更是能够有效帮助投资者运筹帷幄,把握时机的利器。

应用场景与落地建议

在实际使用场景中,该模型适用于多种金融交易决策。鉴于模型的实时预测能力,它可以在快速变化的股票市场中辅助投资者做出快速决策。然而,在生产环境使用时,也需注意以下几个方面:

  • 数据更新:模型的准确性依赖于数据的时效性,必须确保数据源的实时性。
  • 性能监控:实时监测模型的运行状态和性能,及时做出调整或优化。
  • 风险管理:注意止损和风险管理,减少市场风险带来的负面影响。

此外,实际应用时需结合评估模型的性能指标(如准确率等),不断调整优化,以适应市场变化。

综合评价

KittenCN/stock_prediction 是一款基于深度学习的强大股市预测模型,它利用神经网络技术提升了预测的精确度。借助自动化数据处理和特征工程,使得其易于使用,兼具高效与灵活性。不过,其性能高度依赖于数据更新的实时性,必须在生产环境中严格进行维护与监控。对于投资者而言,它是降低市场波动风险,做出精准决策的有效工具。

关于

GitHub 原始描述(英文)

基于神经网络的通用股票预测模型 A general stock prediction model based on neural networks

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
559
价值分
251
活跃状态
活跃

语言占比

Batchfile
Makefile
Python

贡献者

README

stock_prediction

A PyTorch-based stock price prediction project covering the full workflow from data collection, preprocessing, model training, to inference. The project focuses on multi-scale hybrid models (TemporalHybridNet) and PTFT + Variational SSM combinations.

Features

  • Market Data Collection: Supports tushare, akshare, and yfinance as data sources.
  • Data Preprocessing: Aggregates daily CSVs into pkl_handle/train.pkl, supports repeated loading.
  • Feature Engineering: Automatically generates log returns, differences, macro/industry/sentiment exogenous variables, supports per-symbol normalization and stock embedding.
  • Model Training: Unified entry, supports LSTM, Transformer, TemporalHybridNet, PTFT_VSSM, Diffusion, Graph, etc., with built-in trainer and early stopping.
  • Inference: Consistent feature processing and embedding as in training, outputs prediction charts and metrics.
  • Evaluation Metrics: Automatically collects RMSE, MAPE, quantile coverage, VaR, CVaR, etc., and saves results to output/metrics_*.json.
  • Technical Indicators: Built-in MACD, KDJ, DMI, ATR, and more.

Normalization Parameters

  • When saving models, writes *_norm_params*.json (includes mean_list, std_list, show_list, name_list).
  • If global mean/std is missing, automatically computes from pkl_handle/train.pkl.
  • test()/predict() will load the corresponding norm_params file before loading weights to ensure consistent denormalization.

Quick Start

conda activate stock_prediction
pip install -r requirements.txt
python scripts/train.py --mode train --model ptft_vssm --pkl 1 --epoch 2
python scripts/predict.py --model ptft_vssm --test_code 000001

For first-time use, run:

python scripts/getdata.py --api akshare --code 000001.SZ
python scripts/data_preprocess.py --pklname train.pkl

Directory Structure

project-root/
├─ src/stock_prediction/      # Core code
├─ scripts/                   # CLI scripts
├─ tests/                     # Test cases
├─ docs/                      # Documentation
├─ models/                    # Trained models
├─ stock_daily/               # Raw market data
├─ pkl_handle/                # Preprocessed queues
└─ CHANGELOG.md               # Change log

Supported Models

Argument Structure Scenario
lstm 3-layer LSTM Baseline
attention_lstm LSTM + Attention Key time segments
bilstm Bidirectional LSTM Enhanced context
tcn Temporal Convolutional Network Local patterns
multibranch Dual-branch LSTM Multi-feature families
transformer Custom Transformer Long sequences
cnnlstm CNN + LSTM + Attention Multi-step prediction
hybrid Conv/GRU + PTFT/VSSM/Diff/Graph Multimodal fusion
ptft_vssm PTFT + Variational SSM Probabilistic forecast
diffusion DiffusionForecaster Scenario generation
graph GraphTemporalModel Multi-asset modeling

Common Commands

python scripts/getdata.py --api akshare --code 000001.SZ
python scripts/data_preprocess.py --pklname train.pkl
python scripts/train.py --mode train --model transformer --epoch 2
python scripts/predict.py --model transformer --test_code 000001 --predict_days 3
pytest -q

Testing & Quality

  • pytest covers feature engineering, regime adaptation, stock embedding, etc.
  • Run pytest -q before commit; use ruff/black/mypy as needed.

Documentation Index

  • docs/system_design.md: Architecture & decisions
  • docs/model_strategy.md: Model design & recommendations
  • docs/user_guide.md: CLI/module usage
  • docs/maintenance.md: Structure changes & fixes

FAQ

Issue Solution
queue.Queue deserialization Python 3.13+ attribute change, fallback provided, re-gen pkl
SystemExit on import CLI now uses default args, can be imported directly
AMP warning on CPU Auto fallback, can be ignored
Model save blocking Now saves state_dict and moves to CPU
Empty norm param file Run python scripts/fix_norm_params.py, new models auto-patch
30 vs 46 dim mismatch Symbol index unified, ensure *_Model_args.json is loaded

Contribution Guide

  1. Add new models in src/stock_prediction/models/ and register entry.
  2. Update tests and docs accordingly.
  3. Follow PEP8 + type hints, run pytest before commit.

Tips for Viewing Chinese (Windows)

  • In cmd, run chcp 65001 to switch to UTF-8 and avoid garbled text.
  • Use VS Code Markdown preview for best results.

For more background and future plans, see docs/model_strategy.md and docs/system_design.md.

  • docs/user_guide.md:命令行/模块用法├─ stock_daily/ # 原始行情数据

  • docs/maintenance.md:结构调整与修复记录├─ pkl_handle/ # 预处理后的队列文件

└─ CHANGELOG.md # 变更记录

常见问题```

| 问题 | 解决方式 |

| ---- | -------- |## 支持模型 (--model)

| queue.Queue 反序列化报错 | Python 3.13+ 属性变更,已兜底,必要时重生成 train.pkl || 参数 | 结构概述 | 场景 |

| 导入触发 SystemExit | CLI 已改为默认参数对象,可直接导入 || ---- | -------- | ---- |

| CPU 模式 AMP 提示 | 自动降级,可忽略 || lstm | 3 层 LSTM + 全连接 | 基线验证 |

| 模型保存阻塞 | 已改为保存 state_dict 并迁移到 CPU || attention_lstm | LSTM + 注意力 | 关注关键时间片段 |

| 归一化参数文件为空 | 对历史模型执行 python scripts/fix_norm_params.py,新模型自动回填 || bilstm | 双向 LSTM | 加强上下文建模 |

| 推理时 30 vs 46 维度不匹配 | 已统一注入 symbol 索引,确保 predict/test 读取 *_Model_args.json || tcn | 时序卷积网络 | 捕捉局部模式 |

| multibranch | 价格/指标双分支 LSTM | 面向多特征族 |

贡献指南| transformer | 自定义 Transformer 编解码结构 | 长序列建模 |

  1. 新增模型请在 src/stock_prediction/models/ 实现,并注册入口。| cnnlstm | CNN + LSTM + Attention | 多步预测(需 predict_days > 0)|

  2. 同步更新测试和文档。| hybrid | Hybrid Aggregator(卷积/GRU + PTFT/VSSM/Diffusion/Graph 总线)| 多模态特征融合 |

  3. 遵循 PEP8+类型注释,提交前请运行 pytest。| ptft_vssm | PTFT + Variational SSM 双轨组合 | 概率预测与风险评估 |

| diffusion | DiffusionForecaster(扩散式去噪解码) | 情景生成、尾部风险分析 |

查看中文的小贴士(Windows)| graph | GraphTemporalModel(自适应图结构) | 多资产关联建模 |

  • cmd 下可先执行:chcp 65001 切换到 UTF-8,避免乱码。

  • 建议在 VS Code 预览 Markdown。批量对比可执行 scripts\run_all_models.bat(默认运行训练+测试模式)。

—## 特征工程配置

更多背景与未来计划请见 docs/model_strategy.md、docs/system_design.md。- 所有特征加工策略由 config/config.yaml 的 features 节定义:

  • target_mode=log_return、return_kind=log:默认对收盘价生成对数收益率标签。
  • difference_columns、volatility_columns:控制差分与滑动窗口统计字段。
  • external_sources:白名单式引入宏观/行业/舆情 CSV,按 trade_date 对齐并支持前向填充。
  • multi_stock: true:默认在多股票场景聚合训练样本,自动生成方向标签。
  • 若自定义外生特征,保持日期列为八位字符串(如 20241203),并放置在 config/external/ 下即可。

常用命令

# 抓取行情
python scripts/getdata.py --api akshare --code 000001.SZ

# 数据预处理
python scripts/data_preprocess.py --pklname train.pkl

# 训练示例
python scripts/train.py --mode train --model transformer --epoch 2

# 推理示例
python scripts/predict.py --model transformer --test_code 000001 --predict_days 3

# 运行测试
pytest -q

# 查看训练指标(训练后自动生成)
type output\metrics_*.json

测试与质量

  • pytest:覆盖特征工程、Regime 自适应以及股票嵌入相关单元测试(Diffusion/Graph/Hybrid/PTFT 等),当前 30+ 项均通过。
  • 建议在提交前执行 pytest -q,并按需运行 ruff / black / mypy。
  • 暴露 create_predictor() 帮助脚本或测试快速构造推理器。

文档索引

  • docs/system_design.md:架构拓扑与关键决策
  • docs/model_strategy.md:模型方案设计与推荐组合
  • docs/user_guide.md:命令行/模块用法、运维与多模型测试
  • docs/maintenance.md:结构调整、修复记录与改进建议

常见问题

问题 原因 解决方式
queue.Queue 反序列化报错 Python 3.13+ 属性变更 已在 common.ensure_queue_compatibility() 兜底;必要时重新生成 train.pkl
导入触发 SystemExit CLI 在导入阶段解析命令行参数 predict.py / train.py 已改为默认参数对象,可直接导入
CPU 模式出现 AMP 提示 GradScaler 默认针对 CUDA 推理与训练会自动降级,可忽略或关闭 AMP
模型保存阻塞 weight_norm 与深拷贝冲突 thread_save_model 已改为保存 state_dict 并迁移到 CPU
归一化参数文件为空(旧模型) 早期版本未保存/计算 mean/std 对历史模型执行一次 python scripts\fix_norm_params.py;新训练的模型在保存时会自动从 PKL 回填并写出 *_norm_params*.json
推理时 30 vs 46 维度不匹配 启用 symbol embedding 后需要 _symbol_index 训练/测试/推理已统一在数据管线中注入 symbol 索引;确保 predict/test 读取到了 *_Model_args.json 以复现训练配置

贡献指南

  1. 新增模型请在 src/stock_prediction/models/ 中实现,并在训练/推理入口注册。
  2. 同步更新测试(tests/test_models.py)与文档(尤其是 docs/model_strategy.md、CHANGELOG.md)。
  3. 遵循编码规范(PEP8 + 类型注释),提交前请运行 pytest。

查看中文的小贴士(Windows)

  • 在 cmd 窗口中可先执行:chcp 65001 切换到 UTF-8 代码页,避免中文显示为乱码。
  • 建议在 VS Code 中查看 Markdown(预览自动使用 UTF-8)。

更多背景与未来计划,请参阅 docs/model_strategy.md 与 docs/system_design.md。 | cnnlstm | CNN + LSTM + Attention | 多步预测(需 predict_days > 0)|

| hybrid | Hybrid Aggregator(卷积/GRU + PTFT/VSSM/Diffusion/Graph 总线)| 多模态特征融合 |

评论

暂无评论