基于 LLM 的智能金融数据分析工具,支持 A 股和 ETF 的技术分析与可视化
- 🤖 自然语言交互: 用自然语言描述分析需求,Agent 自动调用工具完成分析
- 📊 多数据源支持: 集成 AKShare,支持 A 股、ETF 等金融产品
- 📐 专业技术指标: 自动计算 MA、MACD、RSI、布林带等常用技术指标
- 📉 精美可视化: 生成专业 K 线图,支持中文显示和 Markdown 渲染
- 🔧 模块化设计: Core-Logic 分离,易于扩展和维护
- 🎨 交互式开发: 基于 Jupyter Notebook 的可视化调试环境
- 🧩 Skill 模式架构(v1.4.0): 模块化技能系统 + 混合模式(Skills 优先,失败回退传统)
金融数据分析助手/
├── core/ # 核心基础设施
├── skills/ # Skill 模式(v1.4.0)
├── docs/ # 📚 项目文档
│ ├── ARCHITECTURE.md
│ ├── DOCS_UPDATE_WORKFLOW.md
│ ├── PROJECT_SUMMARY.md
│ ├── akshare.md
│ ├── docs.md
│ ├── spec.md
├── optimization/ # 🔬 优化与评估框架
│ ├── ...
├── .git-hooks/ # 🪝 Git 自动化钩子
│ ├── ...
├── outputs/ # 🚧 Agent 运行时输出
├── README.md
├── CHANGELOG.md
├── requirements.txt
├── agent_logic.py
├── financial_agent_demo.ipynb
# 克隆项目(如果还未克隆)
cd "My Agents/金融数据分析助手"
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的 API Keys# 启动 Jupyter Notebook
jupyter notebook financial_agent_demo.ipynbfrom agent_logic import analyze_stock
# 分析贵州茅台最近 60 天的走势
result = analyze_stock(
symbol="600519",
days=60,
model="gpt-4o-mini"
)
if result["success"]:
print(result["final_answer"])from agent_logic import run_agent
query = "帮我分析一下贵州茅台(600519)最近三个月的走势"
result = run_agent(query, model="gpt-4o-mini", verbose=True)query = "分析沪深300ETF(510300)的技术指标,重点看 MACD 和 RSI"
result = run_agent(query, model="gpt-4o-mini")from core.data_fetcher import fetch_stock_daily
from core.indicators import add_all_indicators
from core.visualization import plot_comprehensive_chart
from datetime import datetime, timedelta
# 获取数据
end_date = datetime.now().strftime("%Y%m%d")
start_date = (datetime.now() - timedelta(days=90)).strftime("%Y%m%d")
df = fetch_stock_daily("600519", start_date, end_date)
# 计算指标
df_with_indicators = add_all_indicators(df)
# 生成图表
chart_path = plot_comprehensive_chart(
df_with_indicators,
title="贵州茅台技术分析"
)Agent 内置以下工具:
| 工具名称 | 功能 | 参数 |
|---|---|---|
fetch_stock_data |
获取 A 股历史数据 | symbol, start_date, end_date |
fetch_etf_data |
获取 ETF 历史数据 | symbol, start_date, end_date |
analyze_and_plot |
分析数据并生成图表 | data_id, chart_type |
- MA (Moving Average): 移动平均线(5日、10日、20日、60日)
- MACD: 异同移动平均线(快线、慢线、柱状图)
- RSI: 相对强弱指标(14日)
- Bollinger Bands: 布林带(上轨、中轨、下轨)
- Volume MA: 成交量均线
- Markdown 自动渲染: AI 输出自动识别并美化显示(标题、列表、代码、引用)
- 中文字体支持: 自动检测系统字体(macOS: STHeiti/PingFang SC)
- 嵌套列表处理: 智能规范化缩进,完美渲染复杂列表
- 精美卡片样式: 统一渐变边框,响应式布局
- 每个次版本提供 2 个 Notebook:
notebooks/v1.4.0_release_demo.ipynb:端到端功能演示(Skills 混合模式、数据获取、指标、图表)notebooks/v1.4.0_performance_compare.ipynb:与上一稳定版本的性能对比(运行时长、可视化耗时、Token 参考)
- 运行后产物位于
optimization/outputs/releases/v1.4.0/,包含figures/、metrics.json - 可选脚本:
optimization/outputs/collect_release_metrics.py生成当前版本性能指标
本项目通过统一的 llm_client 支持多种 LLM:
- OpenAI: GPT-4, GPT-4o, GPT-3.5
- 阿里云: 通义千问(Qwen)
- 智谱 AI: GLM-4
- DeepSeek: DeepSeek-Chat
- Moonshot AI: Kimi
只需在 .env 文件中配置相应的 API Key 即可。
README.md: 项目介绍、快速开始、使用示例docs/docs.md: 功能特性、技术栈、开发路线docs/spec.md: 系统角色、工具接口、数据结构docs/ARCHITECTURE.md: 架构设计与模块导入规范docs/ARCHITECTURE_CLAUDE_SKILLS.md: Skill 模式架构设计(v1.4.0)docs/PROJECT_SUMMARY.md: 项目搭建完成报告optimization/README.md: 🆕 优化框架使用指南(v1.1.1)optimization/ITERATION_GUIDE.md: 🆕 迭代工作流程(v1.1.1)
- 🐛 修复: LLM 日期推算错误(基于训练截止日期而非当前日期)
- ✅ 效果: 所有相对时间查询("最近两个月"等)准确无误
本项目包含完整的性能优化与评估框架,支持系统化的性能提升。
- 可视化性能: 图表生成速度提升 30%+ ✅(已达成 31.2%)
- 数据准确性: 日期解析正确率 100% ✅(v1.1.2 已修复)
- LLM 调用优化: Token 使用量减少 20%(规划中)
- 数据获取优化: 缓存命中率 > 80%(规划中)
# 进入优化目录
cd optimization/
# 运行可视化优化实验
jupyter notebook optimize_visualization.ipynb
# 查看性能对比报告
jupyter notebook benchmarks/comparison_report.ipynb- 混合迭代模式: 轻量级快速迭代 + 实验驱动深度探索
- 自动质量检查: Git Hook 自动运行 7 项检查(Black、MyPy、语法、导入、测试)
- 性能基准管理: 自动记录和对比多版本性能数据
- 实验追踪: 标准化实验记录模板,记录所有优化尝试
每个核心模块都包含测试代码,可独立运行:
# 测试数据获取
python core/data_fetcher.py
# 测试指标计算
python core/indicators.py
# 测试图表生成(含中文字体)
python core/visualization.py
# 测试 Agent 逻辑
python agent_logic.py
# 测试 UI 工具(Markdown 渲染)
python core/ui_utils.py在 core/indicators.py 中添加计算函数:
def calculate_custom_indicator(df: pd.DataFrame) -> pd.DataFrame:
# 你的指标计算逻辑
df['custom_indicator'] = ...
return df在 agent_logic.py 中定义工具函数并注册:
def tool_custom_analysis(**kwargs):
# 你的工具逻辑
return result
TOOLS["custom_analysis"] = tool_custom_analysis然后在 SYSTEM_PROMPT 中添加工具说明。
- 数据仅供参考: AKShare 数据来源于公开网站,不保证实时性和准确性
- 非投资建议: 本工具生成的分析报告仅用于学习研究,不构成投资建议
- API 限流: 部分数据源可能有访问频率限制,请合理使用
- 环境变量: 不要将
.env文件提交到版本控制系统 - 中文显示: 图表自动配置系统中文字体,若显示异常请检查字体安装
- 智能缩进规范化: 自动将 LLM 输出的 2-3 空格缩进规范化为标准 4 空格
- 标准 Markdown 库: 使用 Python
markdown库替代自定义解析器,支持完整语法 - 跨平台字体支持: 自动检测 macOS/Windows/Linux 系统字体
- mplfinance 字体传递: 通过
rc参数将字体配置传递给 mplfinance - 专业图表样式: 参考新浪财经设计,优化线条粗细、颜色对比、网格线透明度(v1.2.0)
- 智能标题生成: 自动查询股票/ETF 名称,生成专业标题格式(v1.2.0)
- v1.4.0 (2025-12-15): Skill 模式架构重构 + 混合模式集成 + 端到端测试(8/8 通过)
- v1.2.0 (2025-12-14): 视觉优化 + 智能标题生成
- v1.1.2 (2025-12-14): 修复 LLM 日期推算错误
- v1.1.1 (2025-12-14): 优化框架 + 文档自动化
- v1.1.0 (2025-12-14): Markdown 渲染 + 美化显示
- v1.0.0 (2025-12-13): 初始版本
详见 CHANGELOG.md
欢迎提交 Issue 和 Pull Request!
本项目采用 MIT License 开源协议。
Happy Analyzing! 📈✨