⚠️ 本仓库已归档(Python 版 final-python tag)正在用 Go 重写的新版本:sanhu-go —— 原生 Windows/macOS exe,双击即用,支持自动更新。
普通人买基金的决策助手。帮你看懂、帮你比较、帮你模拟 —— 最终由你决定。
支付宝里买了几只基金,但不知道买得好不好?每次追涨杀跌,事后总是后悔?
sanhu 是一个本地运行的基金投资辅助工具,连接公开数据,帮普通投资者做三件事:
- 看懂自己的持仓 — 当前盈亏、仓位分布、各基金综合评分
- 做决策前先模拟 — 虚拟建仓观察,策略回测验证,不花真钱先试
- 生成 AI 分析 Prompt — 把你的真实持仓数据整理成结构化 Prompt,发给 Claude / ChatGPT 获取分析
工具不替你下单,不接入任何 AI 后端,不存储你的账户信息。
如果你有使用 Claude Code、Codex 或其他 AI Agent 的习惯,推荐用这个方式安装。
还没有 Claude / ChatGPT 订阅?可以先到 ai.unaive.com 自查常见订阅问题,也提供国内可用的订阅方案。
为什么推荐 AI Agent 安装?
- 安装报错时 Agent 可以自动诊断并修复(如 Python 版本不对、依赖冲突、权限问题)
- 不需要自己判断错误原因,Agent 会读取日志并给出解决方案
- 适合不熟悉命令行的用户
安装启动 Prompt(复制后发给 Agent):
帮我在本机安装并启动这个项目:https://github.com/pakoo/sanhu
步骤:
1. 确认 Python 3.9+ 已安装,如果没有请提示我安装
2. git clone https://github.com/pakoo/sanhu.git 并 cd 进入目录
3. 执行 pip install -r requirements.txt
4. 执行 python scripts/init_db.py
5. 执行 python app.py 启动服务
6. 确认 http://localhost:8000 可以正常访问
如果任何步骤报错,请直接诊断并修复,不要只是告诉我错误信息。
- 下载或 clone 本仓库
- 双击
install.command— 自动安装依赖、初始化数据库、启动服务、打开浏览器 - 以后每次启动:双击
start.command
首次运行 macOS 可能提示"无法验证开发者",右键 → 打开 → 确认即可
- 下载或 clone 本仓库
- 双击
install.bat— 同上 - 以后每次启动:双击
start.bat
需要预先安装 Python 3.9+,安装时勾选 Add Python to PATH
git clone https://github.com/pakoo/sanhu.git
cd sanhu
pip install -r requirements.txt
python scripts/init_db.py
python app.py浏览器打开 http://localhost:8000
打开支付宝 → 基金账户 → 持有页面截图,上传即可自动识别。
第一步:上传支付宝持仓截图
第二步:核对识别结果
OCR 自动提取基金名称、持有金额、持有收益,可手动修正后确认导入。
第三步:总览一目了然
自动计算持仓波动率、相关系数热力图,多级预警提示集中风险。
穿透基金包装,看底层持股重叠情况和真实行业分布。
诊断当前配置缺口,问卷式引导,从 8000+ 只基金中推荐候选,附综合评分和建议仓位。
一键生成结构化持仓分析 Prompt,复制后发给 Claude / ChatGPT 获取专业解读。数据不离开本机。
设置 DCA 定投等策略,用历史真实净值验证效果,或从今天开始前向模拟。
| 模块 | 功能 |
|---|---|
| 持仓总览 | 总市值、盈亏、资产配置饼图、各基金7天/1月/3月走势 |
| 关注列表 | 自选基金跟踪,30天走势迷你图,综合评分徽章 |
| 风险分析 | 持仓相关性热力图、波动率分析、多级预警 |
| 持仓透视 | 穿透基金看底层重叠持股和行业暴露 |
| 调仓建议 | 对照目标配置,自动识别超配/低配 |
| 选基向导 | 问答式引导,从 8000+ 基金中筛选候选 |
| 策略模拟 | DCA定投等策略,历史回测 + 前向模拟 |
| 决策记录 | 记录买入计划,支持虚拟建仓(假钱观察真结果) |
| AI 入口 | 生成数据丰富的持仓分析 Prompt |
| 市场估值 | 沪深300 / 中证500 PE百分位实时显示 |
详细的功能说明和操作教程请查看 使用手册,涵盖所有功能模块的用法和常见问题。
- 后端:Python + FastAPI + SQLite
- 前端:原生 HTML/CSS/JS(无框架依赖)
- 图表:ECharts
数据全部本地存储,不上传任何个人信息。
- 工具辅助,用户执行:工具帮你分析,买卖由你决定,不接入任何自动交易接口
- 可达性不降级专业深度:术语旁有 ⓘ 说明,但原始数据不被简化替换
- 无后端 AI:不调用任何 LLM API,AI 功能通过生成 Prompt 让用户自己去问
首次安装时自动加载,无需联网:
| 数据表 | 内容 | 行数 |
|---|---|---|
fund_profile |
基金档案:类型、风格、主题标签、规模 | ~28,000 条 |
fund_peer_ranks |
同类百分位排名 | ~18,000 条 |
index_pe_history |
沪深300 / 中证500 近10年 PE/PB 历史 | ~9,700 条 |
nav_history |
部分基金净值历史 | ~6,300 条 |
fund_holdings |
部分基金持仓穿透数据 | ~200 条 |
fund_profile中的分类数据大部分由本地规则推断生成(profile_source: inferred),并非全部来自实时接口。
点击右上角「刷新数据」后,工具会通过公开接口补充:
- 你关注和持仓的基金最新净值
- 市场 PE/PB 估值数据
净值数据按需拉取(只拉你关注的基金),不会全量下载全市场数据。
所有数据保存在本机 data/ 目录的 SQLite 文件中,不上传任何个人信息或持仓数据。
功能优化
-
OCR 引擎替换(#1):将截图识别从 easyocr 切换至 OCR.space 云端 API
- 安装体积从 ~724MB 降至 ~150MB,减少约 80%
- 移除 PyTorch / scipy / opencv 大型依赖,仅保留轻量 HTTP 调用
- 中文识别效果与原方案相当,支持支付宝持仓截图逐行输出格式
-
Windows 编码兼容(#2):修复 Windows cmd.exe(cp936)环境下的乱码和崩溃问题
install.bat/start.bat新增PYTHONIOENCODING=utf-8环境变量- 替换
scripts/init_db.py中的 emoji 状态符(✓ ✗ ○→[OK] [--] [-]),消除UnicodeEncodeError - 替换
install.bat中的 emoji 提示符,避免 cp936 控制台解码失败
cannot import name '_imaging' from 'PIL'
Pillow 的 C 扩展与当前 Python 版本不匹配,通常发生在多 Python 环境或混用 conda/homebrew 时。解决方法:
pip install --force-reinstall Pillowpython: command not found / pip: command not found
Python 未加入系统 PATH。Windows 用户重新运行 Python 安装程序,勾选 Add Python to PATH;macOS 用户尝试用 python3 / pip3 替代。
截图上传后提示"未能识别到基金数据"
确认上传的是支付宝「基金 → 持有」列表页截图(不是详情页或其他 App),且图片清晰、文字未被截断。
更多问题
详见 使用手册 或扫码加微信反馈。
移动端版本正在开发中,功能将大部分对齐桌面版,随时随地查看持仓、做决策。
![]() |
![]() |
感兴趣参与测试的朋友,扫下方二维码加微信联系:
有任何问题、建议或想法,欢迎扫码加微信交流:
MIT










