行业融资余额监控(望京博格版)
这个 skill 做什么
把「杠杆资金在各行业之间怎么搬」这件事,做成一张能直接发的图。
口径:申万 31 个一级行业,每个行业成分股的融资余额加总,取每月最后一个交易日,看最近 12 个月的月度变化。核心是那张 31 行 × 11 列的热力图——红的是当月加杠杆,绿的是还钱离场,一眼看出钱在往哪条产业链上挤。
一句话理解融资余额:它是杠杆资金留在场内的仓位,不是估值,也不是点位预测。 涨=还在加仓,跌=在还钱走人。
⚠️ 先决条件:MCP 能不能按行业取融资余额
这个 skill 自己不带数据。核心能力只有一条,缺了就用不了:
> 一次调用,按申万一级行业分组,返回该日 31 个行业的融资余额合计。
Wind 系列 MCP 实测可用路径:wind-analytics-data 的 get_financial_data,问句写「统计<日期>申万一级行业融资余额排名」。具体措辞、哪些路走不通、QPS 限制,全在 references/data-sourcing.md,第一次用必读。
没连通的表现:问句返回「没找到数据」,或者只返回全市场一个总数。遇到这种情况先解决 MCP,不要改用个股逐只加总硬凑(5000 只 × 12 个月,跑不完),更不要凭印象编数。
装完先跑自检:
python scripts/check_env.py
它查文件、数据口径、运行时;MCP 那条要人工确认——随手问一句「统计2026年10月30日申万一级行业融资余额排名」,能回来 31 行(电子 4,145.50 亿在第一位)才算通。
硬规则:先读这段再动手
- 口径是「融资余额」,不是「融资融券余额」。 后者含融券,量级差一个零。问句里别写混。
- 必须有排名关键词。 问句里带「融资余额排名」才会触发分组统计,去掉就容易退化成「没找到数据」。这是本 skill 最省时间的一条经验。
- 串行取数,别并发。 并发 3 条必然撞 QPS 上限报错,12 个月就老老实实一条一条来,一条几秒。
- 优先给明确日期。 「2026年2月最后一个交易日」这种表述会失败;直接写具体日期最稳。用「最后一个交易日」时,必须核对返回的日期列(2026-07 实际给的是 07-30)。
- 采样日记录工具实际取到的那天,不是你打算取的那天。差一天不影响趋势,但库里的日期必须真。
- 31 个行业一个都不能少。 少一个,合计、占比、排名全错。
history.py add会自动拒收缺行业的输入。 - 行业合计 ≠ 全市场融资余额。 31 行业合计比全市场少约 5–6%,差额是 ETF 两融、北交所和未分类标的。这个差额正常,别去抹平,也别拿行业合计当「两市两融余额」引用。
- 颜色按变化率着色,数字写变化额。 用变化额着色的话电子永远最深、小行业永远白板;用变化率才看得出谁在加速。数字仍写亿元变化额,读者要的是"搬了多少钱"。
博格的固定偏好(2026-11 定版,别自己改回去)
| 项目 | 定版 |
|---|---|
| 页头标题 | 行业融资余额监控,副标「申万31个一级行业 · 近12个月月度变化 · 望京博格版」 |
| 默认窗口 | 最近 12 个月(当月未走完就用最新交易日;--months 可改) |
| 主视觉 | 31 行业 × 11 个月环比热力图,红涨绿跌,格子写变化额(亿元) |
| 行业排序 | 按最新月余额降序,第一名在最上 |
| 胀色 | 涨 #d93a33 红、跌 #17994f 绿——中国习惯,别反过来 |
| 产物 | 默认 2160 宽高清 PNG(视口 1080、2x),约 2160×8416 |
| 表格列 | 序 / 行业 / 起点 / 最新 / 12个月变化 / 变化率 / 占比 / 最近一月 |
工作流
Step 0 · 定采样日与缺口
python scripts/fetch_plan.py # 近12个月,自动只列库里缺的月份
python scripts/fetch_plan.py --months 24
python scripts/fetch_plan.py --all # 不看缺口,全列
输出每个月一条可以直接发给 MCP 的问句,照抄即可,不用自己拼。
采样日规则:每月最后一个交易日;当月没走完用最新交易日。脚本按「月末最后一个周一~周五」推算,碰上法定节假日会算错——取不到就往前挪一天。
Step 1 · 取数(唯一的联网环节)
按计划里的问句,串行取。每月一条,返回 31 行(行业 + 融资余额 + 排名,有时带日期列)。
清洗三条:剔掉行业名为空的那行(未分类脏数据,约 0.02 亿)、核对 31 个行业齐不齐、单位确认是亿元。
抽检锚点(2026-10-30):电子 4,145.50、非银金融 1,774.36、医药生物 1,385.70、美容护理 54.32。对不上就是口径错了。
Step 2 · 入库
把取回的值写成一个 JSON(单月平铺或多月嵌套都行):
{"电子": 4145.4997, "电力设备": 1830.6306, "...": 0}
python scripts/history.py add 值.json --date 2026-10-30
python scripts/history.py stat # 确认月份、合计、31 行业齐全
- 库在
data/margin-history.json,可以无限累积;同月重复写会覆盖,改坏点不用先删。 - 它是资产不是缓存:删了就得重取全部月份。
build.py默认只画最近 12 个月,库里有 20 个月也只画 12 个。
Step 3 · 出图
python scripts/build.py --out ./output
打印行业数、月份区间、合计、累计变化,输出 行业融资余额监控_<日期>.html。
不要重新设计版式。 这套版式踩过的坑(热力图列数错位、榜单容器串列、行业名列对不齐、+0 噪声)都写在 references/rendering.md,重画会重踩一遍。
Step 4 · 导出长图
python scripts/runtime.py # 先看 node / playwright / 浏览器探测结果
node scripts/export_long.js <html> <输出png> # 2160×8416 高清,标准产物
node scripts/export_long.js <html> <输出png> 1080 1080 # 小体积降级版
只有明确要小体积(微信预览)才降级。发小红书/公众号用高清版。
Step 5 · 交付
先把 HTML 和 PNG 都放到 present_files,再说结论。话术见文末。
月更四步(标准动作)
python scripts/fetch_plan.py→ 拿到缺口月份的问句- 串行取数 → 写成 JSON
python scripts/history.py add 值.json --date <实际取数日>→ 入库python scripts/build.py --out ./output→ 出 HTML,再export_long.js出 PNG
第 3、4 步不依赖 MCP,换机器、离线重出图都能跑。
数据长什么样(2026-10-30 实际跑出来的)
| 观察 | 数值 |
|---|---|
| 31 行业合计 | 21,845.5 亿(12 个月前 23,328.9 亿,-6.4%) |
| 12 个月最高 | 2026-06,28,714.4 亿 |
| 峰值后回落 | 6,869 亿(-23.9%) |
| 电子占比 | 19.0%,第一大行业,峰值时曾到 6,445 亿 |
| 加杠杆行业 | 7 个(电子 +568、有色金属 +100、机械设备 +54…) |
| 减杠杆行业 | 24 个(计算机 -364、电力设备 -336、医药生物 -259…) |
这组数字可以当回归测试:跑出来差太多,先怀疑取数口径,别怀疑代码。
文件索引
| 文件 | 什么时候读 |
|---|---|
references/data-sourcing.md |
取数前必读:有效问句、走不通的路、QPS、清洗、校验锚点 |
references/rendering.md |
改页面时读:区块结构、热力图着色规则、字号基线、已踩的坑 |
data/margin-history.json |
月度数据底座,history.py 读写 |
assets/page_template.html |
单文件看板模板(JS 渲染,注入 DATA 即用) |
scripts/fetch_plan.py |
生成取数计划(月份 + 问句),只列缺口 |
scripts/history.py |
历史库 stat / add / print |
scripts/build.py |
读库 → 计算 → 注入模板 → 出 HTML |
scripts/export_long.js |
整页长图导出(自动探测 playwright + 浏览器) |
scripts/runtime.py |
运行时探测:node / playwright-core / Chromium |
scripts/check_env.py |
环境自检:文件、数据口径、时效、运行时 |
交付时说什么
- 先给结论:总水位怎么变、谁在加、谁在撤、集中度有没有变化。
- 强调这是仓位指标不是估值指标:融资余额涨说明杠杆资金还在里面,跌说明在还钱,跟贵不贵没关系。
- 提一句口径差异:31 行业合计比全市场少 5–6%(ETF 两融 + 北交所),行业间可比,不能当两市两融总额引用。
- 不构成投资建议。
更新日志
- 1.0.0 / 2026-11-04:定版。申万 31 行业 × 近 12 个月;热力图按变化率着色、格内记变化额;加/减杠杆双榜按正负过滤;明细表 8 列;2160×8416 高清长图;月度库只补新点,
build.py固定 12 个月窗口可--months调。