【Skill 创作】QDII-fund-scout —— QDII 基金全方位数据追踪,申购限额一眼看清

1、Skill 简介

它解决的核心问题是:QDII 基金限购频繁且每日额度很小(10 元~200 元/天不等),投资前需要快速知道哪些基金还能买、还能买多少、收益如何、费率高低、持仓投向哪里。

申购限额:实时跟踪限额状态,自动标记"实质暂停"(绝不误判)
收益率排行:近 1 年收益从高到低排列,一目了然
持仓分析:证监会季报 PDF 原文解析,地区/行业分布精确到百分比
费率对比:管理费 + 托管费 + 销售服务费全拆解
多渠道推送:飞书卡片、企业微信、终端多格式输出

适合基金投资者、理财博主、数据研究者使用


2、使用场景

真实背景:我平时会定投纳斯达克 100 指数基金,但 QDII 额度太紧张了——今天这只暂停申购、明天那只限购 10 元。每天手动打开天天基金一个个查太麻烦,而且查到的信息很分散,通用llm查询的信息也可能不精准。
自己用trae 实现了这个 Skill,每天都可以一键对比多支只纳斯达克 100 指数基金的限额、收益率、费率等数据,一目了然。并且在自媒体账户连续发布一个月后得到不错的反馈,所以想把这个 Skill 分享给大家。

做这个 Skill 之后:

  • 多格式输出:JSON / CSV / Markdown。需要使用自媒体的同学可以根据自己的需求选择不同的输出格式。以下是我通过open design 制作

  • 一键对比多支只纳斯达克 100 指数基金,限额、收益率、费率一眼看清

  • 多渠道推送:支持飞书卡片(Grid 布局 + 红涨绿跌)、企业微信 Markdown
    飞书卡片

    企业微信 Markdown

  • 定制化配置,用户可以根据自己的需求选择对比的基金、时间范围等,基金代码通过搜索或 config.json 传入。

  • 数据校验:4 层校验(Schema → 范围 → 一致性 → 跨源),QDII 专项 profile

  • 可集成:Python API + CLI + 配置文件,配合 SOLO Schedule / GitHub Actions 实现定时自动化
    SOLO Schedule 配置演示:


3、创作过程

3.1 设计思路

基于最近获取数据的经验,开始我画了一个管道图:

基金数据源 → 获取引擎 → 校验器 → 格式化器 → 适配器(飞书/微信)

四个核心约束(我称之为"四条铁律"):

  1. 禁止硬编码基金代码 — 每只基金必须通过搜索或配置文件传入
  2. 禁止伪造数据 — 只信抓回来的 HTML/PDF,决不拿模型常识补全
  3. 关键字段必须显式校验 — 四层校验(Schema → 范围 → 一致性 → 跨源)
  4. 请求间隔不低于 0.5s — 尊重数据源,不并发

3.2 关键提示词摘录

第一轮:搭建基础架构

帮我 brainstorm 一下如何实现一个基金数据获取 Skill,要去开源。
背景:小红书理财博主/互联网从业人员
目标用户:基金爱好者、自媒体创作者
约束:必须遵循 aegnt skills spec,独立于已有 skill

经过脑暴,确定了管道式架构 + 天天基金 + 证监会双数据源方案。

3.2 目录结构(最终版)

QDII-fund-scout/
├── SKILL.md              # Agent 入口
├── README.md
├── scripts/
│   ├── cli.py            # 命令行入口
│   ├── core/
│   │   ├── models.py     # 数据模型(32 字段)
│   │   ├── validate.py   # 4 层校验
│   │   ├── fetcher.py    # 调度器(限速 0.5s+)
│   │   └── sources/
│   │       ├── eastmoney.py  # 天天基金(HTML + API)
│   │       └── csrc.py       # 证监会(PDF 解析)
│   ├── formatters/       # JSON / CSV / Markdown
│   └── adapters/         # 飞书 / 微信推送
└── references/
    ├── data-sources.md
    ├── field-glossary.md
    └── validation-rules.md

4、使用步骤

方式一:在 TRAE / SOLO 中直接对话(推荐)

安装好 Skill 后,在 TRAE 或者其他 Agent 直接输入自然语言需求,Agent 会自动路由到此 Skill 执行:

列举所有纳斯达克被动C类QDII基金的近一年收益率和申购限额
帮我查一下易方达纳斯达克100ETF联接C的最新数据,推送到飞书
搜索标普500指数基金,按近1年收益率从高到低排序,输出Markdown表格

Agent 会自动:搜索基金 → 调用抓取引擎 → 格式化输出 → 按需推送。不需要记任何命令行参数。

对话示例

用户输入:

按照要求获取所有纳斯达克被动C类基金,并推送到飞书

  • 近一年收益率
  • 截止目前时间的限额

Agent 执行:

  1. 搜索"纳斯达克100" + “被动” + “C类” → 返回 11 只基金代码
  2. 批量抓取每只基金的收益率和限额数据
  3. 按收益率从高到低排序
  4. 调用飞书适配器,自动设置标题"纳斯达克被动C类基金限额对比"
  5. 飞书卡片推送完成

方式二:CLI 命令行

适合想直接跑脚本、配合定时任务或 GitHub Actions 的用户。

安装

pip install requests pdfplumber
git clone git@github.com:hangliuc/QDII-fund-scout-skill.git
cd QDII-fund-scout-skill/scripts

场景一:查看单只基金详情

python3 cli.py detail 012870

输出内容(JSON 格式,32 个字段):

基金: 易方达纳斯达克100ETF联接(QDII-LOF)C
近1年收益: +32.72%
申购状态: 暂停
限额: 0
近1年回撤: -12.50%
费率: 管理0.50% + 托管0.10% + 服务0.30% = 综合0.90%

场景二:批量对比所有纳斯达克基金

python3 cli.py compare 012870,006479,008971 --format md

生成对比表格,一眼看出哪只收益最高、哪只还有额度。

场景三:推送到飞书

export FEISHU_WEBHOOK_URL="https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
python3 cli.py compare 012870,006479 --push feishu

场景四:使用配置文件管理持仓

// ~/.fund-scout/config.json
{
  "my_funds": [
    {"code": "012870", "name": "易方达纳指100C"},
    {"code": "006479", "name": "广发纳指100C"}
  ],
  "push": {
    "feishu_webhook": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
  }
}
python3 cli.py compare --config ~/.fund-scout/config.json

5、效果展示

终端输出:17 只纳斯达克 100 基金限额对比

按照要求获取所有纳斯达克被动C类基金,并推送到飞书
- 近一年收益率
- 截止目前时间的限额

飞书卡片推送效果

数据准确性验证

实际抓取 17 只基金,数据与天天基金官网逐一手动比对,字段完全一致。


6、Skill 链接


7、总结与思考

最满意的地方

1、精准获取,帮助用户快速获取有用的信息,例如证监会季报 PDF(市场/行业分布)

2、多格式输出,满足不同用户的需求(尤其是自媒体)

后续优化计划

  • 渲染更简约美观的卡片布局
  • 增加更多用户需求的字段,例如QDII实时估值等

如果你也买 QDII 基金,欢迎 clone 试一下:

git clone git@github.com:hangliuc/QDII-fund-scout-skill.git
cd QDII-fund-scout-skill/scripts
python3 cli.py compare 012870,006479

有任何建议或问题,欢迎在 GitHub 提 issue,或者直接在帖子里留言~

5 个赞

6 个赞

多谢多谢 :grin:

5 个赞

一点个人感受和建议,供参考:

我对这方面稍微有点见解,有几点小忧虑和改进建议,希望对你后续优化有帮助:

  1. 数据源的单点风险
    目前完全依赖天天基金和证监会,一旦对方改版或增加反爬机制,工具就可能直接瘫痪。建议考虑:

· 增加至少一个备用数据源做交叉验证(比如
好买基金、晨星等)
. 在解析代码里多留些异常捕获,出现问题时
能降级给用户一个“数据暂不可用”的提示,而
不是直接崩溃

  1. 数据验证的方式可以更严谨

帖子提到用天天基金官网人工比对来验证,但这>只能保证抓取过程没出错,无法发现数据源本身>的延迟或错误。如果未来接入多源,可以做一个>自动交叉校验,比如某只基金的收益率在两个源>之间差异超过阈值就自动标记。

  1. 安装和推送的门槛对普通用户偏高

git clone 和 pip install 对非技术用户>真的很不友好,飞书 Webhook 配置对不少基
民来说也是障碍。未来如果能打包成一个更简单
的方式(比如一个配置好的一键启动脚本,或者>配套一个极简 UI),会让用户群扩大很多。

  1. 合规性最好提前留心

大规模抓取和 PDF 持仓再分发,在商业化和用>户量上来后可能有合规隐患,建议提前咨询下法>务,至少把数据用途和免责声明做得更明确一
些。

总的来说,你这个质量很高,期待持续迭代!已经在 GitHub 上 star 了,后续有具体使用体验再来提 issue。

6 个赞

虽然我在这方面没有什么见解,但是感觉很厉害。已经在 GitHub 上 star 了!提不出来什么issue

7 个赞


长见识了,完全不懂,投一票,

7 个赞

感谢感谢,太给力了铁铁

4 个赞

感谢投票 :speak_no_evil_monkey:

5 个赞

感谢这么用心的回复 :heart:对我来说很有帮助

5 个赞

主要是希望能越做越好,哈哈

5 个赞

感谢投票 :speak_no_evil_monkey:

4 个赞

已经增加的新功能:

数据校准

  • 多源交叉验证:天天基金主页面 + NAV API 独立计算 + 好买基金对比,三路确认数据准确;
  • 主备自动切换:如果主数据源不可用,自动自动切换到备用数据源,确保数据获取的连续性。

用户体验

  • 一键安装脚本(无需 git)

  • 交互式运行菜单

  • 本地可视化 UI(数据都在本地,保护用户隐私和数据安全)

  • 定时推送:需要电脑开机/也可搭配trae solo Schedule(非技术用户)、GitHub Actions/服务器(技术用户)

  • 已经增加了更为详细的免责声明(在这里也不建议作为商业用途)

未来探索

  • 增加基金估值预测:由于QDII 特殊的T+2结算机制,提前算出基金的估值,方便用户在15:00 之前做出参考。(通过多种估值模型对比,选出最准方案)
  • 有任何建议或问题也可以补充
4 个赞

trae solo nb :speak_no_evil_monkey:自己一行代码都不写的
大赛运营帅哥美女看看我 :heart_eyes:

7 个赞

t+2这个不错继续顺着这个方向往下聊。

T+2结算机制下做估值预测,参考现有金融科技的做法,可以考虑两条路:

  1. 指数拟合法:找相关性高的基准指数(比如纳斯达克100、恒生科技),用实时涨跌幅加权估算。误差控制在±0.5%以内就算可用。
  2. 持仓反推法:根据基金季报披露的前十大持仓,用实时股价滚动计算。缺点是季报有滞后,调仓期误差会放大。

技术上,建议先把历史回测做出来,看看模型在不同市场环境下的偏差分布。实测跑通前,在UI上标注“估算值仅供参考”会更稳妥。

5 个赞

大佬,你对这真挺有研究,一语就道破了关键处。
估算的难点:

  • 持仓季报更新滞后
  • 长尾不明确(仅仅公布了10大持仓)

你说的方案加上我的理解
1、纯前十大持仓加权(这个估计误差会很大)
2、根据证监会公布地区EFT比例估算
3、前十持仓计算 + 行业地区残余补全(同第二步)
… 上面方面可以考虑加上自校准机制

后续拉出季报公布一个月的历史数据做对比,取最优的模型

6 个赞

你提到的这几个技术点,确实有开源项目已经实现了:xalpha 针对 QDII 基金提供 T-1 和 T-0 净值预测能力,底层用 shipan.get_stock_holdings() 等函数解析复杂持仓;FundVal-Live 走“透明持仓穿透+实时行情加权计算”路线,拒绝估值黑箱。

你更看重的那一步——用季报公布后一个月的数据做回测对比——这个思路非常重要。实时估值本质上就是个“先预测后验证”的闭环,没有持续的回测校准,模型误差会随调仓和风格漂移逐步放大。自校准机制的核心就在于让系统定期用历史真实数据反向优化权重,只有这样,模型才不会在一两个月后失效。

三种方法的权重分配可以放在自校准模块里一起解决。期待你跑通这套回测闭环。

5 个赞

这个是相当于用 AI 来干投资吗?也算是进攻投资业了。

5 个赞

帮助一些理财需要的同学输出一些有用的信息,提高个人效率。
不建议做其他的用途哈 :grimacing:

5 个赞

老乡牛还在

3 个赞

:speak_no_evil_monkey: :speak_no_evil_monkey: :speak_no_evil_monkey:

2 个赞