基金组合穿透与重复配置排雷
你以为买了 5 只基金就分散了?穿透到底层持仓看看——可能 5 只都在买茅台和宁德时代。让 Cue 帮你找到藏在组合里的集中度风险,真正分散才叫分散。
适用范围与场景(先看这个,别用错了)
可以查:
| 维度 | 覆盖 | |------|------| | 市场 | 全市场 A 股公募基金(股票型、混合型、指数型、ETF 联接) | | 穿透深度 | 基金→前十大重仓股→行业分布→风格暴露→交叉重叠 | | 分析维度 | 个股重叠、行业集中度、风格偏向、基金经理持仓重合度 |
适用场景:
| 场景 | 解决的问题 | |------|-----------| | 组合健康度诊断 | 我手里的基金到底持有了哪些股票?有没有严重的重复配置? | | 调仓决策支持 | 想减仓一只基金,减哪只对分散度影响最大? | | 基金筛选去重 | 看了 3 只新能源基金都不错,它们本质上是不是同一只? | | 定投组合优化 | 每月定投 4 只基金,3 年后发现它们重仓高度重合——现在改还来得及 |
不能查:
- 非公募基金产品(私募、专户、信托计划——非公开持仓)
- 基金实时盘中持仓(公募只披露季报/年报的前十大重仓,无法做到 T+0)
- 单只基金的未来业绩预测
- 基金经理个人账户持仓
简单判断:这只基金会在季报里公开前十大重仓股吗? 会 → 能穿透。不会 → 用不了。
快速判断:你是否需要这个 Skill?
你的需求是?
├─ 我买了多只基金,想知道它们是不是买了一样的股票 → ✅ 用这个
├─ 我的基金组合看起来分散,但不知道行业集中度有多高 → ✅ 用这个
├─ 我想从组合里减掉一只基金,不知道减哪只对分散度最好 → ✅ 用这个
├─ 我在选新能源基金,3 只候选想看哪只跟我现有持仓重叠最少 → ✅ 用这个
├─ 我是理财经理,要给客户做组合诊断报告 → ✅ 用这个
├─ 我想知道某只基金明天会涨还是会跌 → ❌ 用不了,去问市场
├─ 我想看某只私募基金的具体持仓 → ❌ 用不了,非公开信息
└─ 我想知道基金经理现在的实时仓位 → ❌ 用不了,季报有滞后
试试这样问
推荐问法(直接对 Agent 说即可触发本 Skill):
- "帮我用基金组合穿透技能,分析一下我持有的 5 只基金持仓有没有重叠"
- "用 Cue 基金穿透,看看我的基金组合行业集中度是不是太高了"
- "帮我诊断一下定投组合:易方达蓝筹 + 中欧医疗 + 富国天惠 + 兴全合润,重复配置严重吗"
- "我在考虑加仓一只新能源基金,帮我对比华夏能源革新和汇丰晋信低碳先锋,哪个跟我现有持仓重叠更少"
- "用基金穿透,帮我生成一份客户组合诊断报告,看看集中度风险在哪里"
对应到命令行 query:
# 组合穿透分析
--query "基金组合 持仓穿透与重复配置排雷:逐只穿透前十大重仓→交叉重叠检测→行业集中度分析"
# 基金对比去重
--query "基金对比 持仓重叠度分析:华夏能源革新 vs 汇丰晋信低碳先锋,行业分布与重仓股交叉对比"
# 定投组合诊断
--query "定投组合 穿透诊断:易方达蓝筹+中欧医疗+富国天惠+兴全合润,持仓重叠度与风格暴露"
模板:
"<基金组合/基金名称> 持仓穿透与重复配置排雷:<你想重点分析的方向>"
适用人群
| 角色 | 典型问题 | |------|---------| | 个人基金投资者 | 买了 5 只基金以为分散了,穿透一看全是白酒新能源——我现在该怎么调? | | 基金投顾 / 理财经理 | 给客户做组合诊断,证明他的持仓集中度太高,需要引入低相关性的品种 | | 定投用户 | 每月扣款 4 只基金,两年后发现重仓股高度重合——哪些该留哪些该换? | | FOF 研究员 | 筛选子基金时快速排除持仓同质化严重的标的 |
Agent 执行摘要
| 顺序 | 做什么 | 禁止 |
|------|--------|------|
| 1 | 确认 Cue runner 就绪 | 禁止跳过 |
| 2 | 告知用户耗时 2-15 分钟(穿透多只基金时更久,见下方性能说明) | 禁止中途取消 |
| 3 | 一条命令,--template-id template__Fp3N7k,传入基金组合或基金名称 | 禁止连发多条 |
| 4 | [cue-research] RESULT ok = 完成 | 禁止编造 |
| 5 | 原样交付,标注数据截止日期(季报披露时间) | 禁止概括 |
核心能力
- 组合持仓穿透 — 逐只基金拆解前十大重仓,汇总为组合层面的完整持股清单
- 重复配置检测 — 自动标记被多只基金共同持有的股票,计算重叠度和集中度
- 行业集中度分析 — 穿透到行业层面,看组合整体超配/低配了哪些行业
- 风格暴露诊断 — 大盘/中小盘、成长/价值风格的暴露比例,是否存在风格押注
- 调仓优化建议 — 给出降低集中度的调仓方向建议(如前十大重仓中有哪些股票重叠过载)
输出形式
结构化诊断报告:组合概览 → 逐只基金穿透明细 → 重仓股交叉重叠矩阵 → 行业集中度热力图 → 风格暴露分析 → 集中度风险评级 → 调仓优化建议 → 来源链接。
性能预期
查询耗时取决于穿透的基金数量和 Cue 服务端负载:
| 维度 | 预期耗时 | 说明 | |------|---------|------| | 单只基金穿透 | 1-3 分钟 | 只穿透一只基金的前十大重仓 | | 组合穿透(3-5 只) | 3-8 分钟 | 正常负载 | | 组合穿透(6-10 只) | 5-15 分钟 | 交叉计算量增大 | | 财报季(1-4月 / 7-8月) | 5-15 分钟 | 基金季报集中披露,数据源更新密集 |
如果超过 15 分钟没返回,说明可能超时或队列拥堵——不要取消重试,跑一下健康检查的三合一诊断(见下文),确认服务状态后再决定是等还是换时段。中途中断时用相同命令续接,Cue 会从 session 断点继续,不重复计费。Session 状态存储在
~/.cue/session/task,不要手动删除。
环境要求
Runner 来源:GitHub - sensedeal/cue-skills(Gitee 镜像)。
依赖:git + python3 + curl(macOS 自带,Linux apt install git python3 curl)。Python 仅用标准库,无额外 pip 依赖。
Cue API Key:cuecue.cn 注册获取。新账号送免费积分,每天再免费送 10 分。
调用说明
python3 ~/.cue/cue-skills/cue-research/scripts/research_run.py \
--query "基金组合 持仓穿透与重复配置排雷:易方达蓝筹+中欧医疗+富国天惠+兴全合润,交叉重叠检测与行业集中度" \
--template-id template__Fp3N7k \
--output ~/cue-reports/$(date +%Y-%m-%d-%H%M)-fund-penetration.md
| 参数 | 说明 |
|------|------|
| --query | 基金组合或单个基金名称,必填。可指定分析维度(如行业集中度、风格暴露) |
| --template-id | 固定为 template__Fp3N7k |
| --output | 落盘路径 |
格式转换
Cue 输出 Markdown。安装 pandoc 后可转换为 Word 或 PDF:
# .md → .docx(Word)
pandoc report.md -o report.docx
# .md → .pdf
pandoc report.md -o report.pdf --pdf-engine=xelatex
输出文件与输入同目录、同名、不同后缀。
依赖安装
| 目标格式 | 依赖 | macOS | Ubuntu |
|----------|------|-------|--------|
| Word (.docx) | pandoc | brew install pandoc | sudo apt install pandoc |
| PDF (.pdf) | pandoc + LaTeX | brew install --cask basictex | sudo apt install texlive-xetex |
架构说明
本 Skill 不在本地执行检索。流程是 Agent → Cue API(cuecue.cn)→ 外部数据源(基金季报/年报公开披露)。穿透结果的质量和时效取决于基金季报的披露完整性和 Cue 服务端状态。
| 环节 | 谁控制 | 出问题时 | |------|--------|---------| | API Key 鉴权 | 你 | 重新生成 Key,更新 ~/.cue/config.json | | Cue 服务端 | Cue 运维 | 等恢复,或走降级方案 | | 基金季报数据源 | 基金公司公开披露 | 季报披露后 1-2 周数据最全,Cue 用缓存兜底 |
健康检查
跑研究前先验证三件事。一键诊断:
CUE_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.cue/config.json'))['api_key'])" 2>/dev/null || echo "$CUE_API_KEY")
echo "=== 1/3 API Key ===" && [ -n "$CUE_KEY" ] && echo "已配置" || echo "未配置!"
echo "=== 2/3 Cue 服务 ===" && curl -sS --max-time 10 "https://cuecue.cn/api/health" -H "Authorization: Bearer $CUE_KEY"
echo "=== 3/3 搭子 ===" && curl -sS --max-time 10 "https://cuecue.cn/api/playbook" -H "Authorization: Bearer $CUE_KEY" | python3 -c "import sys,json;scenes=json.load(sys.stdin).get('data',{}).get('scenes',[]);buddy=[b for s in scenes for b in s.get('buddies',[]) if b.get('title')=='基金组合穿透与重复配置排雷'];print(f'可用:{len(buddy)}个') if buddy else print('暂不可用')"
| 检查 | 预期 | 异常处理 |
|------|------|---------|
| API Key | 已配置 | cuecue.cn/api-key 重新生成 |
| 服务 | {"status":"healthy"} | 等 5 分钟重试 |
| 搭子 | 可用:>0个 | 等 1h 或网页端手动跑 |
自救指引
错误速查
Cue 返回结构化错误,包含 code(错误码)、retryable(是否可重试)、user_action(操作建议)。
| 错误码 | 现象 | 可重试? | 处理 |
|--------|------|---------|------|
| AUTH_FAILED | 401 / Key 无效 | ❌ | 重新生成 Key,更新 ~/.cue/config.json |
| TIMEOUT | 超时 >30s 无响应 | ✅ | 等 5 分钟,跑诊断确认服务在线后重试,最多 3 次 |
| BUDDY_UNAVAILABLE | 搭子临时下线 | ✅(延迟) | 等 1h 或网页端直接跑 |
| INSUFFICIENT_CREDITS | 积分不足 | ❌ | cuecue.cn 充值或等次日免费额度 |
| SESSION_INTERRUPTED | 中途中断 | ✅ | 不换 prompt,相同命令续接——Cue 从 session 断点继续,不重复计费 |
| FUND_NOT_FOUND | 基金名称无法识别 | ❌(需改输入) | 检查基金全称是否正确,尝试用基金代码替代 |
| HOLDINGS_OUTDATED | 最新季报尚未披露 | ❌(需等待) | 季报披露窗口(每季度结束后 15 个工作日)后再查 |
| RESULT_EMPTY | 无匹配结果 | ❌(需改条件) | 缩小基金范围、用基金代码替代名称 |
| CONFIG_PARSE_ERROR | config.json 报错 | ❌ | 修复 JSON 格式:{"api_key": "sk..."} 无多余逗号 |
中断恢复机制
Cue 的调研任务是有状态的。如果中途超时或网络波动导致中断:
中断 ≠ 失败,cancel 才 = 失败
├─ 超时 → 等一会,相同命令续接(session 存在 ~/.cue/session/task)
├─ 网络波动 → 同上,相同命令续接
├─ 手动 cancel → 无法恢复,需要重新发起
└─ 恢复后 → Cue 从断点继续,已查过的阶段不会重复计费
关键规则:中断后不要换 prompt、不要删 session 文件、不要 cancel。三个"不要"记住了就不会白跑。
重试决策
收到错误
├─ retryable = true → 按 user_action 建议操作后重试
│ ├─ 超时/网络类 → 等 5min,跑诊断,最多 3 次
│ └─ 搭子下线 → 等 1h 或换网页端
├─ retryable = false → 不要重试,改了条件再说
│ ├─ Key/基金名问题 → 修正输入后重试
│ ├─ 季报未出 → 等披露后再查
│ ├─ 积分不足 → 充值或等次日
│ └─ 结果空 → 换基金代码 / 缩小范围
└─ 重试 3 次仍失败 → 记下 request_id,走降级方案
调度建议
| 时段 | 建议 | |------|------| | 工作日 10:00-16:00 | 最佳时段,3-8 分钟完成 | | 工作日 9:00-10:00 / 16:00-18:00 | 高峰期,穿透 5 只以上基金大查询避开 | | 季报披露后一周(1/4/7/10 月下旬) | 数据最新鲜,但查询量可能增加 | | 夜间/周末 | 可能有维护,跑前先诊断 | | 连续失败 ≥2 次 | 停 15 分钟,记下 request_id 后重试 |
降级方案
Cue 长时间不可达时的手动替代渠道:
| 渠道 | 覆盖 | 费用 | |------|------|------| | 天天基金 | 单只基金前十大重仓 + 行业分布 | 免费 | | 晨星中国 | 基金持仓与组合 X 光 | 部分免费 | | 东方财富基金 | 基金持仓对比 | 免费 | | 手动 Excel 交叉比对 | 下载各基金季报,手工做重叠矩阵 | 免费但耗时 |
输出示例
示例报告待补充,请通过 cuecue.cn 实际运行后获取。
FAQ
Q: 基金穿透用的是什么时候的数据? A: 公募基金季报/年报披露的前十大重仓股。季报每季度结束后 15 个工作日内披露,所以数据存在 1-2 个月的滞后。对于长期配置型组合诊断,这个滞后影响不大;如果你是做短线交易,穿透的时效性不够。
Q: 只能穿透前十大的话,分析结果完整吗? A: 对股票型和偏股混合型基金(仓位 >60% 股票),前十大重仓通常占股票市值的 50%-80%,重叠检测和行业集中度分析的结论已经足够可靠。债券型基金和灵活配置型(仓位低)穿透效果有限。
Q: 怎么知道该用这个还是 cue-deep-research? A: 本搭子聚焦"组合维度"——多只基金之间的持仓关系和集中度风险。cue-deep-research 是"个股维度"——单只股票或单家公司的深度尽调。先穿透发现问题("原来我的组合 40% 都在买茅台"),再去 deep-research 深挖重仓股是否值得持有。
Q: 能分析私募基金或专户吗? A: 不能。私募基金没有公开持仓披露义务,本搭子只覆盖公募基金季报/年报公开数据。
Q: ETF 也算基金吗,能穿透吗? A: 能。ETF 同样按季报披露前十大重仓,可以穿透。但 ETF 跟踪指数,持仓和指数高度一致。如果要研究 ETF 产品本身(跟踪误差、费率对比、指数编制方法),建议用 热门赛道与ETF深度投研搭子。
Q: 我的基金组合超过 10 只会不会跑不动? A: 可以跑,但耗时会增加到 10-15 分钟。建议按投资主题分组分批穿透(比如先穿透权益类基金,再单独看固收类),效率更高。
Q: 穿透发现重复配置严重,然后呢? A: Cue 的调仓优化建议会给出去重方向(如"减少新能源主题基金的暴露,引入消费或红利类基金降低相关性")。具体要换哪只、换多少,可以结合 cue-asset-allocation 的大类配置建议和 cue-deep-research 的个股/基金深研来做最终决策。
Scan to join WeChat group