Skip to content

sjkncs/2025-eco-machine-learning

Repository files navigation

🚀 智能金融分析平台:AI驱动的实时投资决策系统

GitHub stars Python Flask Chart.js License

🎯 多功能金融智能平台:量化选股 + 实时新闻分析 + AI情绪判断 + 可视化Dashboard
📊 量化策略: 训练期 2010-2015 | 预测期 2016-2025 | 年化夏普率 2.46
🌐 Web应用: 实时搜索 | 多模型AI | 情绪可视化 | 论坛协作


📌 项目简介

本项目已从课程大作业扩展为完整的智能金融分析平台,整合了:

  • 📊 量化投资引擎:基于LightGBM的A股选股策略(年化夏普2.46)
  • 🌐 实时Web应用:财经新闻搜索、多AI模型分析、情绪可视化
  • 🤖 多Agent协作:DeepSeek/Claude/GPT-4/Qwen多模型论坛讨论
  • 🎨 交互式Dashboard:Web原生图表,6维度情绪因子分析

⭐ 核心特点

📊 量化策略部分

  • 预测目标创新: 次年12个月夏普率(收益+风险双重优化)
  • 严格时间对齐: 财务特征延迟一年,杜绝未来信息泄露
  • 文本信息融合: DeepSeek提取MD&A、公告、新闻的16个结构化特征
  • 长期样本外验证: 10年回测(2016-2025),真实可靠
  • 卓越业绩表现: 年化夏普2.46,最大回撤仅0.65%
  • 多模型对比: 整合10+种机器学习模型(线性/树/神经网络/集成)

🌐 Web应用部分

  • 🚀 实时新闻搜索: 基于Tavily API的真实财经新闻检索
  • 🤖 多模型AI分析: 4个大语言模型(DeepSeek/Claude/GPT-4/Qwen)
  • 📊 情绪可视化: Chart.js原生图表,6维度Dashboard(情感分布、投资指数、关键因子等)
  • 🎙️ 论坛协作机制: 多Agent讨论、观点汇总、共识识别
  • 🎨 现代化UI: 深色主题、渐变设计、响应式布局
  • 无乱码: Web原生图表,完美中文显示

🆕 多模型分析框架

本项目现已扩展为多模型对比框架,整合了课程PPT中学习的所有机器学习模型:

类别 模型 来源
线性模型 线性回归、Ridge、Lasso、ElasticNet ML3, ML4
非线性模型 SVM(线性核/RBF核) ML5
神经网络 单层MLP、深度MLP ML5
树模型 决策树 ML6
集成学习 随机森林、GBDT、AdaBoost、XGBoost、LightGBM ML6
模型集成 Voting、Stacking ML6
降维技术 PCA(可选) ML7

使用方式

  • 运行 notebooks/multi_model_analysis.ipynb 进行全面的模型对比
  • 查看 docs/multi_model_guide.md 获取详细使用说明
  • 结果保存在 results/model_comparison/ 目录

📂 项目结构

2025-eco-machine-learning/
│
├── 📄 核心配置文件
│   ├── README.md                      # 项目说明文档
│   ├── requirements.txt               # Python依赖包
│   ├── environment.yml                # Conda环境配置
│   ├── .gitignore                     # Git忽略规则
│   └── Consolidated_Assignment.ipynb  # 主分析笔记本⭐
│
├── 📁 web_interface/                  # Web智能分析应用 🌐
│   ├── backend_v2.py                  # Flask后端API
│   ├── index_v2.html                  # 现代化前端界面
│   ├── sentiment_visualizer.py        # 情绪可视化模块
│   ├── forum_adapter.py               # 多Agent论坛协作
│   ├── 集成说明.md                    # 完整集成文档
│   └── Web可视化使用说明.md           # 可视化指南
│
├── 📁 demos/                          # 演示和测试脚本 🎮
│   ├── deepseek_demo.py               # DeepSeek API演示
│   ├── search_maotai.py               # 茅台新闻搜索
│   ├── 茅台文本因子可视化_修复版.py   # 文本因子可视化
│   ├── DeepSeek_Text_Feature_Engineering.py  # 文本特征工程
│   └── README.md                      # 演示脚本说明
│
├── 📁 docs/                           # 项目文档 📚
│   ├── Google_LangExtract对比分析.md  # 技术对比
│   ├── LangExtract集成说明.md         # 集成指南
│   ├── PR协作说明.md                  # GitHub协作
│   ├── 真实爬取版本说明.md            # 数据爬取说明
│   └── README.md                      # 文档导航
│
├── 📁 scripts/                        # 工具脚本 🛠️
│   ├── organize_files.py              # 文件整理工具
│   ├── update_script_paths.py         # 路径更新工具
│   ├── organize_root_files.py         # 根目录整理
│   └── README.md                      # 脚本使用说明
│
├── 📁 src/                            # 核心源代码 💻
│   ├── multi_model_framework.py       # 多模型对比框架
│   ├── deepseek_analysis.py           # DeepSeek文本分析
│   ├── quantitative_assignment.py     # 量化策略
│   └── fill_report_template.py        # 报告生成
│
├── 📁 notebooks/                      # Jupyter笔记本 📓
│   ├── main_analysis.ipynb            # 主分析(核心)
│   ├── multi_model_analysis.ipynb     # 多模型对比
│   └── detailed_report.ipynb          # 详细报告
│
├── 📁 FinanceSpider/                  # 金融爬虫模块 🕷️
│   ├── real_search_engine.py          # Tavily搜索引擎
│   └── spider_utils.py                # 爬虫工具
│
├── 📁 MultiAgentAnalysis/             # 多Agent分析 🤖
│   ├── agents/                        # Agent模块
│   │   ├── media_agent.py
│   │   ├── query_agent.py
│   │   └── insight_agent.py
│   └── forum_engine.py                # 论坛引擎
│
├── 📁 reports/                        # 研究报告 📄
│   ├── main_report.tex                # 主报告(LaTeX)
│   └── data_description.tex           # 数据说明
│
├── 📁 results/                        # 实验结果 📊
│   ├── figures/                       # 图表(PNG)
│   └── data/                          # 数据(Excel)
│
├── 📁 data/                           # 数据文件 💾
│   ├── raw/                           # 原始数据
│   ├── processed/                     # 处理后数据
│   └── cache/                         # 缓存文件
│
└── 📁 backups/                        # 备份文件 🗄️
    └── _旧文件备份/                   # 历史版本

📖 详细使用指南

🌟 完整的中英文使用指南已准备就绪!

查看详细教程:USAGE_GUIDE.md 📘

包含内容:

  • 🔧 环境配置 - Conda/pip安装步骤,API密钥配置
  • 🌐 Web应用使用 - 实时新闻分析,情绪Dashboard,模型选择
  • 📊 量化策略分析 - Jupyter笔记本运行,结果查看,多模型对比
  • 🎮 演示脚本 - DeepSeek/茅台文本分析示例
  • 常见问题 - API错误,启动问题,内存优化
  • 🇬🇧 English Version - Complete bilingual documentation

快速导航


🚀 快速开始

方式一:Web智能分析应用(推荐⭐)

# 1. 进入Web应用目录
cd web_interface

# 2. 设置API密钥
$env:OPENAI_API_KEY="your-api-key"
$env:OPENAI_BASE_URL="https://xh.v1api.cc/v1"

# 3. 启动后端
py backend_v2.py

# 4. 新终端启动前端
py -m http.server 8090

# 5. 打开浏览器访问
http://localhost:8090/index_v2.html

功能演示

  • 🔍 搜索"比亚迪"或"小米" → 查看实时财经新闻
  • 🤖 切换不同AI模型 → DeepSeek/Claude/GPT-4/Qwen
  • 📊 向下滚动 → 查看6维度情绪可视化Dashboard
  • 🎙️ 可选启用多模型论坛讨论

方式二:量化策略分析

# 1. 克隆仓库
git clone https://github.com/sjkncs/2025-eco-machine-learning.git
cd 2025-eco-machine-learning

# 2. 安装依赖
pip install -r requirements.txt

# 3. 启动Jupyter Notebook
jupyter notebook

# 4. 打开并运行
notebooks/main_analysis.ipynb

方式三:查看预生成结果

所有结果已预生成在 results/ 文件夹中:

  • 图表: results/figures/ - 8张PNG图表
  • 数据: results/data/ - 19个Excel文件

📊 核心业绩指标

指标 机器学习策略 沪深300基准
累计收益率 32.42% 2.46%
年化收益率 3.25% 0.27%
年化夏普率 2.46 0.15
最大回撤 0.65% 28.14%
月胜率 65.14% 51.38%

🎯 核心功能

1. 数据处理与特征工程

  • 财务特征: 盈利能力、偿债能力、营运效率、现金流质量
  • 市场特征: 动量因子、波动率、市值、流动性
  • 文本特征: DeepSeek提取的情感、主题、风险披露指标

2. 模型训练与预测

  • 模型: LightGBM梯度提升树
  • 目标: 次年12个月滚动夏普率
  • 训练期: 2010-2015(6年)
  • 预测期: 2016-2025(10年)

3. 策略回测与评估

  • 选股规则: 每月选择预测夏普率TOP 20股票
  • 权重方案: 等权配置
  • 再平衡: 每月月初调仓

🌟 DeepSeek加分项

本项目创新性地集成了DeepSeek大语言模型进行财经文本分析,详见 docs/deepseek_bonus.md

文本特征体系

类别 特征数 说明
MD&A情感分析 5个 情感得分、置信度、主题标签等
公司公告分析 5个 重大事件数量、类型、情绪等
新闻舆情分析 6个 媒体关注度、正负面新闻等

📖 使用说明

Jupyter Notebooks说明

文件 说明 运行时间
notebooks/main_analysis.ipynb 主分析代码,包含完整建模流程 ~1.5小时
notebooks/detailed_report.ipynb 详细实验报告与诊断分析 ~30分钟
notebooks/exercises_solution.ipynb 课程练习解答 ~15分钟

Python脚本说明

文件 说明
src/deepseek_analysis.py DeepSeek API调用与文本特征提取
src/quantitative_assignment.py 策略的脚本版本(可独立运行)
src/fill_report_template.py 自动生成报告工具

📝 研究报告

完整的研究报告(LaTeX格式)位于 reports/main_report.tex

编译报告

cd reports
xelatex main_report.tex
xelatex main_report.tex  # 生成交叉引用需要编译两次

或在Overleaf上直接编译(推荐)。


🔬 方法论

特征工程

  • 300+维度特征
  • 三大类别: 财务、市场、文本
  • 可观测性约束: 财务数据延迟一年使用

模型训练

  • LightGBM超参数: 150棵树,深度6,学习率0.05
  • 交叉验证: 5折时间序列交叉验证
  • 特征选择: 基于重要性得分

回测策略

  • 选股池: 沪深300成分股
  • 选股数量: TOP 20
  • 权重方案: 等权配置
  • 交易成本: 考虑0.3%双边成本

📈 可视化成果

所有图表位于 results/figures/

  1. ML_Equity_Curve.png - 策略与基准资金曲线对比
  2. Feature_Importance_Top20.png - TOP 20特征重要性
  3. Annual_Return_Comparison.png - 逐年收益率对比
  4. Consolidated_Backtest.png - 综合回测诊断(多面板)
  5. Strategy_Variants_Comparison.png - 策略变体业绩对比
  6. TA_Strategy_Curves.png - 与技术分析策略对比
  7. TA_Strategy_Bars_CumReturn.png - 累计收益率条形图
  8. TA_Strategy_Bars_Sharpe.png - 夏普率条形图

💡 创新点

  1. 目标变量创新: 预测次年12个月夏普率,同时优化收益与风险
  2. 文本特征融合: DeepSeek提取的结构化文本指标
  3. 严格时间对齐: 避免未来信息泄露的黄金法则
  4. 长期样本外验证: 10年真实回测,避免过拟合
  5. 多维度对比: 与基准指数、技术分析策略全面对比

🛠️ 技术栈

  • 语言: Python 3.8+
  • 数据处理: pandas, numpy
  • 机器学习: LightGBM, scikit-learn
  • 可视化: matplotlib, seaborn
  • 文本分析: DeepSeek API (OpenAI-compatible)
  • 报告: LaTeX (XeLaTeX)
  • 环境: Jupyter Notebook

📦 数据说明

项目使用的原始数据包括:

  • 月个股回报率: 1999-2025年中国A股月度收益数据
  • 财务三表: 上市公司资产负债表、利润表、现金流量表
  • 公司信息: 行业分类、上市日期、基本信息

注意: 原始数据文件较大(>100MB),不包含在本仓库中。请从课程资料获取。


🤝 贡献指南

欢迎提交Issue和Pull Request!

开发流程

  1. Fork本仓库
  2. 创建feature分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交Pull Request

📄 许可证

本项目采用 MIT License - 详见 LICENSE 文件


👥 作者

  • 项目负责人: sjkncs
  • 课程: 量化金融与机器学习
  • 学期: 2025秋季

📬 联系方式


🙏 致谢

特别感谢

  • @Culaccino00 - 学姐提供的代码审查和PR贡献
    • 优化项目依赖配置(pyarrow、fastparquet)
    • 改进.gitignore规则
    • 提供宝贵的代码优化建议

团队协作

  • 感谢小组其他同学在项目开发过程中的讨论与帮助
  • 感谢课程提供的数据支持和指导

开源社区

  • 感谢所有开源项目的贡献者:
    • scikit-learn、XGBoost、LightGBM - 机器学习框架
    • Flask、Chart.js - Web应用开发
    • OpenAI、Anthropic、DeepSeek、Qwen - AI模型API
    • Tavily - 实时新闻搜索API

📚 参考文献

  1. Chen, T., & Guestrin, C. (2016). XGBoost: A scalable tree boosting system.
  2. Ke, G., et al. (2017). LightGBM: A highly efficient gradient boosting decision tree.
  3. Fama, E. F., & French, K. R. (1993). Common risk factors in the returns on stocks and bonds.
  4. Jegadeesh, N., & Titman, S. (1993). Returns to buying winners and selling losers.

📅 更新日志

v2.0.0 (2025-12-26) 🎉

重大更新:项目扩展为完整的智能金融分析平台!

🌐 Web应用

  • ✅ 创建实时新闻搜索Web应用(Tavily API)
  • ✅ 集成4个大语言模型(DeepSeek/Claude/GPT-4/Qwen)
  • ✅ 实现6维度情绪可视化Dashboard(Chart.js)
  • ✅ 添加多Agent论坛协作机制
  • ✅ 现代化深色主题UI设计
  • ✅ 解决中文乱码问题(Web原生图表)

📊 新增文件

  • web_interface/backend_v2.py - 增强版Flask后端
  • web_interface/index_v2.html - 现代化前端界面
  • web_interface/sentiment_visualizer.py - 情绪可视化模块
  • web_interface/forum_adapter.py - 论坛协作适配器
  • web_interface/集成说明.md - 完整使用文档
  • web_interface/Web可视化使用说明.md - 可视化指南

🔧 技术栈扩展

  • Flask 2.3+ (Web框架)
  • Chart.js 4.4+ (数据可视化)
  • Tavily API (实时新闻搜索)
  • 多LLM支持(统一API接口)

v1.0.0 (2025-12-25)

  • ✅ 完成项目重构,优化文件结构
  • ✅ 创建清晰的目录分类(notebooks/, src/, reports/, results/, docs/)
  • ✅ 更新所有路径引用
  • ✅ 添加完整的README文档
  • ✅ 创建requirements.txt
  • ✅ 集成DeepSeek文本分析
  • ✅ 完成10年样本外回测
  • ✅ 生成完整研究报告

⭐ 如果这个项目对您有帮助,请给个Star!

🌐 在线演示: 克隆仓库后运行 web_interface 查看实时Web应用!

About

内容很多,请进入课堂练习数据浏览您需要的文件。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published