基金持仓体检助手(portfolio-check)
版本: v1.8.3(2026-08-31) v1.8.3 修复(基于2026-08-30完整评测93分,修复2项中优;高优无缺陷,低优不动):
- 【中优】意图预筛缺口:main 新增买卖/预测意图词检测(该不该卖/买不买/预测涨跌/止盈止损等),命中即拦截并引导 fund-buy-sell-helper,避免AI层漏拦时把买卖咨询误解析成持仓(false-parse)
- 【中优】集中度提示去冗余:持仓数<=5时前5大=全部持仓、占比恒100%属正常,跳过"前5大占比偏高"冗余提示
v1.8.2 修复(基于2026-08-29完整评测90分,修复2项中优;高优无缺陷,低优不动):
- 【中优】年报启发式失效修复:parse_text_holdings 的 fund_kw 收窄为强基金特征词,移除"红利/货币/证券/保险/银行"等弱信号(年报"现金红利"/股份公司名常见),避免非持仓文本误判为基金而不返回空
- 【中优】行业白名单落地:classify_sector 前置 CODE_SECTOR_WHITELIST(诺安成长A/C 320007/025333→半导体/科技、招商白酒 161725→消费/食品),消除 v1.8 文档声称的"白名单"在代码层未实现的文档-实现不一致
v1.8.1 修复(基于2026-08-27完整评测93分,修复3项中优;高优无缺陷,低优不动):
- 【中优】无后缀输入优先A类(主份额):名称搜索无A/C后缀(如"诺安成长混合"),候选同时存在A/C类时优先返回A类,避免误匹配C类
- 【中优】非持仓文本启发式:输入明显为年报/公告等非持仓文本时,脚本直接返回空交由AI层拦截,不再把首句误解析为"未确认基金"
- 【中优】行业分类扩充:classify_sector 新增煤炭/能源、汽车、教育/物流等高频主题关键词,减少落入"混合/主动"
v1.8 修复(基于2026-08-26完整评测94分,修复2项中优):
- 【中优】超范围请求处理:SKILL.md 新增"超范围请求处理"章节(写诗/非持仓文本/单只买卖/排名筛选/预测涨跌五类),要求 AI 层提前拒答并引导,不再让脚本层无害退出兜底
- 【中优】白名单补 C 类:新增诺安成长混合C(025333)→半导体/科技,修复"仅名称"场景命中 C 类代码后退回"混合/主动"的问题;白名单注释明确"同一基金族的 A/C 类都要收录"
用户使用指南(装完怎么用)
这个技能帮你回答:我的基金持仓健不健康?有没有买重复?集中在哪几个行业?该不该精简?
怎么触发(直接这样说)
| 你想做什么 | 直接对AI说 | |-----------|-----------| | 体检持仓 | "帮我体检一下我的持仓" | | 检查重复 | "看看我买的基金有没有重复的" | | 分析组合 | "分析一下我的基金组合健不健康" | | 看集中度 | "我是不是太集中了?" |
怎么提供持仓(3种方式都行)
| 方式 | 怎么做 | 说明 | |------|--------|------| | 截图(最简单) | 打开支付宝/天天基金持仓页 → 截图 → 发给AI | AI读图识别基金名+金额 | | 复制文本 | App持仓页复制 → 粘贴给AI | 文本更准 | | Excel | 上传持仓Excel | 最全(含成本/份额) |
支付宝截图通常只显示"基金名称+持有金额+收益",AI会通过名称搜索自动补齐基金代码,并反推份额——不用自己填。
输出长什么样
持仓明细表(名称/代码/净值/金额/份额/收益) → 重复持仓提示 → 行业分布 → 集中度 → 盈利结构 → 整体评价。所有内容仅供参考,不构成投资建议。
核心原则
- 自包含零依赖:纯Python标准库,不依赖任何外部技能/CLI,Windows/Mac/Linux可运行
- 名称搜索确认代码:截图无代码时,用名称搜真实代码,禁止AI猜代码
- 参考性质:所有输出仅供参考,不构成投资建议
- 数据边界:截图缺成本价时,盈亏按截图显示的持有收益;无法精确计算的标注说明
- 诚实透明:确认失败的基金明确列出,不硬凑
工作流程
Step 1: 收集持仓信息
用户提供什么就收什么(截图/文本/Excel),不强制统一格式:
- 截图 → AI读取,提取"基金名称+持有金额+持有收益+收益率"
- 文本 → 直接解析
- Excel → 解析(含成本/份额)
AI识别截图/文本后,把持仓整理成标准文本写入临时文件,格式:
基金名称 持有金额1234.56 持有收益-10.2 收益率-0.8%
Step 2: 运行解析脚本
python3 scripts/parse_portfolio.py --file <持仓文本文件>
脚本自动完成:名称解析 → 代码确认(名称搜索) → 净值查询 → 份额反推 → 重复检测 → 体检分析。
脚本输出:持仓明细表 + 重复持仓 + 行业分布 + 集中度 + 盈利结构 + 整体评价。
Step 3: 生成体检报告
基于脚本输出,AI生成易读的体检报告:
## 📋 持仓体检报告
> ⚠️ 本报告仅为数据分析参考,【不构成任何投资建议】。投资有风险,决策需自主判断。
### 一句话总结
[持仓X只,总市值X元;亮点是X,问题是X,建议X]
### 持仓明细
[脚本输出表格]
### 重复持仓(重点)
[列出重复的基金,说明重复风险]
### 行业分布
[脚本输出+AI解读:哪些行业超配/低配]
### 集中度
[最大单只/前5大占比,是否过高]
### 盈利结构
[盈利/亏损分布,最大亏损]
### 整体评价与建议
[数量是否过多/行业是否分散/需不需要精简,附具体建议]
### 术语速查(如需要)
[分位/集中度/超配等通俗解释]
---
📋 使用中遇到问题,或想改进任何功能?请反馈给我们
→ https://wj.qq.com/s2/27592283/4zbu/
> ⚠️ 以上内容仅为数据分析参考,【不构成投资建议】。
典型示例
示例1: 支付宝截图体检
用户发来支付宝持仓截图 + "帮我体检"
- AI读取截图,提取基金名称/金额/收益
- 写入临时文件,运行
parse_portfolio.py - 脚本确认29只基金代码、查净值、算占比
- 输出:行业分布(债券29%偏重)、重复持仓(芯片A/C、化工A/C)、集中度(前5大32%合理)、评价(29只偏多建议精简)
示例2: 复制文本体检
用户粘贴App复制的持仓文本
- 直接解析文本
- 同上流程
异常处理
| 情况 | 处理 | |------|------| | 截图识别不出基金名 | 提示用户"请发清晰截图,或复制文本" | | 名称搜索确认失败 | 列入"未确认"清单,询问用户确认代码 | | 截图缺成本价 | 标注"盈亏按截图持有收益,成本未计" | | 接口超时 | 重试1次,仍失败告知"数据源暂不可用" |
超范围请求处理(强制)
收到非持仓体检类请求时,必须在 AI 层明确拒答,不运行脚本、不硬解析:
| 请求类型 | 处理 | |---------|------| | 写诗/写文案/无关闲聊 | 明确告知"本技能仅做基金持仓体检,不处理其他请求" | | 非持仓文本(如财报/文章段落) | 告知"请提供基金持仓信息(名称/代码/金额/份额)" | | 单只基金买卖建议("008590该不该卖") | 引导 fund-buy-sell-helper,不输出买卖建议 | | 基金排名/筛选("哪只基金最好") | 告知"本技能不做排名筛选",拒绝 | | 预测涨跌("下个月会涨多少") | 告知"无法预测未来",拒绝 |
拒答话术模板: "这个需求超出了【基金持仓体检助手】的范围,我只做持仓健康度检查(重复/集中度/行业分布/盈利结构)。[说明该用什么工具]"
脚本层遇到无法解析的输入会无害退出(显示"未能解析出持仓"),但正确的行为是 AI 层提前拦截,不要等到脚本跑完。
已知限制
- 支付宝截图无基金代码/份额/成本,份额为净值反推(误差1-5%),成本相关分析受限
- 行业分类基于名称关键词,可能有个别基金归类不精确
- 全部依赖公开接口,网络异常时可能超时
反馈与迭代
反馈通过在线表单统一收集,输出末尾附表单链接引导用户填写。 https://wj.qq.com/s2/27592283/4zbu/
资源目录
scripts/parse_portfolio.py— 持仓解析+体检分析引擎(自包含,纯标准库)
微信扫一扫