← 返回 Skill 列表
extension
分类: 数据与分析无需 API Key

A股国家队

估计中国 A 股"国家队"(中央汇金)的宽基 ETF 持仓变动趋势——追踪上交所沪深300/上证50/中证500/中证1000/中证A500/科创50 的 ETF 份额变化,叠加各自指数走势,生成六合一总图与各指数单图。Estimates China's "national team" (Central Huijin) broad-base ETF positioning by tracking Shanghai Stock Exchange ETF share changes. Use when the user asks about 国家队持仓 / 国家队仓位 / 中央汇金持仓 / 国家队加仓 / 国家队减仓 / ETF份额变化 / 看看国家队 / national team holdings / Central Huijin positions.

person作者: u_34c446dfhubenterprise

国家队持仓估计(全宽基版 · Pay Skill)

通过追踪上交所核心宽基 ETF 的份额变化,估计国家队(中央汇金)的持仓变动与结构轮动, 并为每个宽基叠加其对应指数走势生成可视化图表。

当用户提到以下任何场景时必须触发:国家队持仓、国家队仓位、中央汇金持仓、ETF份额变化、 国家队加仓、国家队减仓、看看国家队、国家队最近在干嘛。

本 Skill 为 Pay Skill:每次完整分析需先完成微信支付验证,再执行本地 Python 脚本生成图表。


付费前置检查

调用本 Skill 前,检查当前 Agent 是否已安装 weixinpay 插件:

  • 已安装:可继续提供付费服务
  • 未安装:向用户提示「当前 Agent 暂不支持微信支付付费能力」,终止流程

付费工作流程(⚠️ 必须先于本地脚本执行)

第一步:请求付费网关

向 Pay Skill 网关发起 POST 请求(invoke_url 见 frontmatter):

POST https://pay-skill-nat-4198535-1341112664.ap-shanghai.run.tcloudbase.com/api/skill/invoke
Content-Type: application/json

{
  "query": "用户的原始查询内容(如:看看国家队最近在干嘛)",
  "skill_id": "national-team-position",
  "skill_version": "1.0.0",
  "amount_fen": 5
}

第二步:处理 402 响应

若收到 HTTP 402,从响应中提取并保存以下信息(Header 与 Body 均可能出现):

  • WeixinPay-Required:支付码(payment_code)
  • X-Out-Trade-No:商户订单号

将 WeixinPay-Required 的值作为 paymentCode,调用 微信支付官方技能skill(weixinpay-pay),若遇系统繁忙等支付失败,调用mcp__weixinpay__weixinpay_retry_pay 把 paymentCode 回传给系统拉起卡片 向用户申请支付授权。

第三步:支付成功后重新请求(⚠️ 必须执行,不可跳过)

支付成功后,必须用与第一步完全一致的 JSON body 重新 POST 同一接口,并在 Header 中携带第二步保存的值:

POST https://pay-skill-nat-4198535-1341112664.ap-shanghai.run.tcloudbase.com/api/skill/invoke
Content-Type: application/json
WeixinPay-Required: <payment_code>
X-Out-Trade-No: <out_trade_no>

{
  "query": "用户的原始查询内容(与第一步完全一致)",
  "skill_id": "national-team-position",
  "skill_version": "1.0.0",
  "amount_fen": 5
}

注意:body 与第一步完全一致,不要修改 body 中的任何字段。支付信息通过 Header 传递。

第四步:确认 access_granted 后执行本地 Skill

仅当第三步返回 HTTP 200 且 "access_granted": true 时,才继续执行下方「本地分析工作流」。

若返回 "code": "NOT_PAID",说明支付尚未完成,等待后重试第三步。 若返回 "code": "REFUNDED",向用户说明:"抱歉,该服务暂时无法提供内容,已自动退款至原支付账户。"并终止流程,不要再次尝试支付或重新请求。 若返回 "code": "FULFILL_AND_REFUND_FAILED",说明服务异常且退款失败,建议用户联系客服。


原理

  • 中央汇金是宽基 ETF 的绝对控盘方,追踪 ETF 份额(而非规模)可准确反映买卖行为
  • 在沪深300 基础上覆盖全部上交所核心宽基,能区分「真减仓」与「换仓轮动」
  • 数据来源:上海证券交易所官网 ETF 份额接口(AKShare fund_etf_scale_sse,一次返回当日全部 ETF)
    • AKShare 指数日线

覆盖的宽基指数

| 指数 | 代表 ETF | 价格 symbol | 信号干净度 | |------|----------|-------------|------------| | 沪深300 | 510300/510310/510330… | sh000300 | ⭐⭐⭐ 汇金绝对主力 | | 上证50 | 510050/510710/510850… | sh000016 | ⭐⭐⭐ 护盘核心 | | 中证500 | 510500/512500… | sh000905 | ⭐⭐ 含较多散户 | | 中证1000 | 512100/560010 | sh000852 | ⭐⭐ 散户/对冲盘多 | | 中证A500 | 名称含 "A500" 的全部 | sh000510 | ⭐⭐ 2024末新发,汇金基石 | | 科创50 | 588000/588080… | sh000688 | ⭐ 散户/杠杆重,噪音大 |

创业板等 ETF 全在深交所,本接口取不到,未纳入。 科创50/中证500 散户底仓重,绝对值会高估"国家队持仓",解读时建议参考增量(相对早期基线)。

依赖

pip install akshare matplotlib pandas

本地分析工作流(付费验证通过后执行)

# 默认:2024-01-01 至今,按周采样
python <skill-path>/scripts/national_team_position.py --output-dir ./

# 指定日期范围(推荐看 2023 至今,能完整覆盖建仓→轮动→撤离)
python <skill-path>/scripts/national_team_position.py --start 2023-01-01 --output-dir ./

# 仅获取数据不画图
python <skill-path>/scripts/national_team_position.py --data-only --output-dir ./

<skill-path> 替换为此 SKILL.md 所在目录的实际路径。

参数说明

| 参数 | 必填 | 说明 | |------|------|------| | --start | 否 | 起始日期,格式 YYYY-MM-DD,默认 2024-01-01 | | --end | 否 | 结束日期,格式 YYYY-MM-DD,默认今天 | | --output-dir | 否 | 输出目录,默认当前目录 | | --data-only | 否 | 仅输出 JSON 数据,不画图 | | --freq | 否 | 采样频率:weekly(默认)或 monthly |

输出文件

| 文件 | 说明 | |------|------| | national_team_overview.png | 六合一总图(2x3,每格 = 该宽基份额 + 对应指数价格双轴) | | national_team_hs300.png | 沪深300 单图(份额 + 指数价格双轴) | | national_team_sse50.png | 上证50 单图 | | national_team_csi500.png | 中证500 单图 | | national_team_csi1000.png | 中证1000 单图 | | national_team_csiA500.png | 中证A500 单图 | | national_team_star50.png | 科创50 单图 | | national_team_position.json | 各宽基份额时间序列 + 全宽基合计 JSON |

推荐工作流

  1. 完成付费验证(见上方四步流程)
  2. 运行脚本获取数据并生成全部图表
  3. 先发总图(national_team_overview.png)给用户,再按需发单图
  4. 解读:各宽基的建仓/减仓时间点、份额变化量、与指数走势的对应关系; 重点区分「真减仓」与「轮动换仓」(如沪深300 见顶后资金是否流向新发的 A500)
  5. 如用户有后续问题,读取 JSON 做进一步分析(如增量口径、轮动窗口拆解)

注意事项

  • 必须先通过「付费前置检查」确认 weixinpay 插件已安装,否则不要进入支付流程
  • 收到 402 响应时,支付由 weixinpay 插件完成,Skill 无需关心支付细节
  • 支付成功后必须主动发起重试请求,body 保持不变,通过 Header X-Out-Trade-No 传递订单号
  • 如果返回 "NOT_PAID",说明支付尚未完成,请等待后重试
  • 如果返回 "REFUNDED",说明服务异常已退款,告知用户并终止流程
  • 如果返回 "FULFILL_AND_REFUND_FAILED",说明服务异常且退款失败,建议用户联系客服
  • 上交所 API 部分日期(节假日/周末)无数据,脚本会自动尝试前几个交易日
  • AKShare 请求频率不宜过高,脚本内置间隔
  • 首次运行较慢(按周采样 2-3 年约需 2-3 分钟,每个采样日仅 1 次份额接口调用)
  • 图表使用中文字体,macOS 上使用 Arial Unicode MS / PingFang SC;Linux 需自备中文字体(如 Noto Sans CJK)
  • 份额变化含非国家队的散户/机构申赎,尤其科创50/中证500/A500 噪音较大,结论需打折看趋势
  • 本工具仅用于数据可视化与研究,不构成任何投资建议