← Back to skills
extension
Category: Data & AnalyticsNo API key required

量化指增基金周度业绩分析报告

【指增基金周度业绩分析报告】从 IMA「点睛焱究所」共享知识库逐周采集指增业绩榜,累积成周度超额收益序列,按 300/500/1000/2000/A500 五个板块分别生成自包含交互式 HTML 报告(区间超额、区间超额回撤、超额波动率/跟踪误差、信息比率、聚类气泡图、管理人定位按钮),支持滚动窗口与每周自动更新。Invoke when the user asks for 指增/指数增强基金周度业绩分析、超额收益与超额回撤报告、超额波动率/跟踪误差/信息比率、板块聚类与管理人定位,或需要每周一自动生成指增周报。

personAuthor: user_186b4ea5hubcommunity

指增基金周度业绩分析报告

| 项 | 值 | |---|---| | 中文名 | 指增基金周度业绩分析报告 | | 英文名 | index-enhance-weekly-report | | 技能目录 | C:/Users/HT/.workbuddy/skills/index-enhance-weekly-report | | 产物 | 单文件自包含 HTML(内置 ECharts,可离线打开) |

跑完得到一份按板块分章的交互式报告:300 / 500 / 1000 / 2000 / A500 各一章,每章含 KPI 卡、聚类气泡图、管理人定位按钮、聚类结果表、各簇特点、板块分析、产品明细表。


何时使用

  • 用户要分析「指增 / 指数增强」基金的周度业绩:超额收益、超额回撤、超额波动率、跟踪误差、信息比率。
  • 要求分板块分析(不要把 5 个板块混在一张排名里)。
  • 要求气泡图(纵轴超额收益、横轴超额回撤、气泡大小=超额波动)+ 聚类分簇 + 管理人维度定位。
  • 需要每周自动更新(配合自动化任务)。

快速开始

python "C:/Users/HT/.workbuddy/skills/index-enhance-weekly-report/scripts/make_report.py" \
  --wkdir    "C:/Users/HT/.workbuddy/skills/index-enhance-weekly-report/data/wk" \
  --snapshot "C:/Users/HT/.workbuddy/skills/index-enhance-weekly-report/data/snapshot.txt" \
  --out      "C:/Users/HT/Desktop/指增基金分板块业绩分析_超额收益与超额回撤_近六个月.html" \
  --window 26 --min-weeks 12

| 参数 | 说明 | |---|---| | --wkdir | 周度 CSV 目录(一文件一周),必填 | | --snapshot | 最新一期快照 TSV(12 字段),补充「管理规模」「今年以来超额」两列,必填 | | --out | 输出 HTML 路径,必填 | | --window | 滚动窗口周数,只取最近 N 周;默认 26(约 6 个月);0 = 全部 | | --min-weeks | 纳入门槛,产品至少 N 周有有效记录;默认 12 | | --win-label | 覆盖报告内窗口文案(默认按周数自动推断:24~28 周→「近六个月」,否则「近 N 周」) | | --warn | 往页头注入 HTML 警示横条(数据异常时用) |

滚动机制:每次执行自动只取最近 N 周,窗口终点随最新一期周报前移,无需人工干预。跨年(如 1229-0102 与 0106-0110)已按自然时间修正排序。

目录结构

index-enhance-weekly-report/
├─ SKILL.md
├─ scripts/
│  ├─ make_report.py       报告生成器(自包含,优先读 lib/echarts.min.js)
│  └─ check_weekly.py      周度数据体检(量级/缺失/重复/连续性)
├─ data/
│  ├─ wk/                  周度序列库,一文件一周:<周标签>.csv
│  └─ snapshot.txt         最新一期快照(12 字段 TSV,含表头)
├─ lib/echarts.min.js      内置图表库(1.0 MB),保证技能可独立迁移
└─ references/
   └─ collection.md        IMA 采集细则(文件夹 ID 对照、字段下标、单位陷阱)

采集流程:增量补漏(每周执行的标准动作)

数据是逐周累加的,本地 data/wk/ 就是历史库,所以永远不要全量重抓—— 每次只补「远端有、本地没有」的那几周(正常 1 周)。

  1. 列远端周标签集合 R: mcp__ima-mcp__get_knowledge_list(knowledge_base_id="7337674910215195"、 folder_id="folder_7354341090423503" = 「周度业绩」文件夹,ID 已实测确认、 cursor=""、limit=50、sort_type="UPDATE_TS_DESC_SORT_TYPE") → knowledge_list[].title 即周标签(形如 0907-0911),media_id 即该周的 folder_id。 is_end=false 时用 next_cursor 翻页取完(该目录 total_size 约 36,大于单页条数)。
  2. 列本地周标签集合 L:data/wk/*.csv 的文件名去掉 .csv。
  3. 缺失 = R − L(只处理最近 30 周内的)。对每个缺失周: a. get_knowledge_list(folder_id = 该周)→ 找 title 含 「量化股票策略业绩榜」 的条目,取 media_id b. fetch_media_content(约 4 万字符 Markdown)→ ⚠️ 不要贴进回复,只本地抽取 c. 只抽 5 个指增板块(跳过 [量化选股]、[市场中性]),每行取 策略类型 | 基金管理人 | 近一周超额(字段下标 1 / 2 / 6) d. 写 data/wk/<周标签>.csv:UTF-8 无 BOM、LF 行尾、无表头,格式 周标签|策略类型|基金管理人|近一周超额,数值统一为小数(0.0151 = 1.51%) e. 用该期内容刷新 data/snapshot.txt(12 字段 TSV,第一行表头 type|manager|scale|wk_exc|ytd_ret|ytd_exc|ytd_dd|ytd_exc_dd|ann_ret|ann_vol|sharpe|ret2025)
  4. 缺失为空 → 本期无新数据,不写任何文件,直接用现有数据出报告。
  5. 跑 check_weekly.py 体检(含周次跳空检测,是漏抓的唯一哨兵)→ 通过后跑 make_report.py。

若某次执行没能跑成(电脑关机 / ima 掉线),下次执行会因为第 3 步按「集合差」计算, 自动把落下的那几周一起补回来;check_weekly.py 的跳空检测用于二次确认。

批量回补历史(窗口不足 26 周时):把周文件夹按 6~7 周分 4 组,用 Agent(general-purpose)并行派发, 子代理各自「查文件夹 → 取文件 → 只抽三列 → 写 CSV」,只回报行数。 不要在主上下文串行抓 26 周——26 × 4 万字符会撑爆上下文。

指标口径

  • 区间超额 = Π(1 + 周超额) − 1
  • 年化超额 = (1 + 区间超额)^(52 / 观测周数) − 1
  • 年化超额波动率(=年化跟踪误差)= 周超额标准差 × √52,来自真实周度超额序列,不是「成立以来年化波动率」代理口径
  • 信息比率 = 年化超额 ÷ 年化超额波动率
  • 区间超额最大回撤 = 累计超额曲线相对前期高点的最大回撤
  • 周胜率 = 周超额 > 0 的周数占比

⚠️ 窗口短于 20 周时不要看年化类指标:年化系数 √(52/n),n = 6 时放大约 2.94 倍,IR 会虚高到 6~8,属失真。

报告结构与交互(用户明确要求,别做偏)

气泡图:纵轴=区间超额收益,横轴=区间超额最大回撤,气泡大小默认=超额波动率 (可切换:波动率 / 回撤 / 信息比率 / 统一大小),着色可切「按簇 / 按管理规模」。 标签只显示管理人简称(如「衍复」,不是「衍复1000P-XXX」)。

管理人定位按钮(在原有聚类气泡图正下方):

  • ✅ 正确:气泡图下方放一整面管理人按钮(按区间超额排序);点击 → 图中其余点淡出、 该管理人气泡放大 2.1 倍并保留名称标签,按钮下方出一行「📍 当前位置」: 管理人全名 + 所属簇 + 所在象限 + 区间超额 / 区间超额回撤 / 超额波动率 / 信息比率
    • 与板块中位的对比结论。再点一次或点「清除定位」复位。
  • ❌ 不要:另外新建第二张图(走势图、折线图等),也不要堆一排指标卡。 用户明确反馈过「不是让你重新做一个交互图」。

聚类:每个板块内部独立聚类,按「区间超额 × 区间超额回撤」二维特征 Z-Score 标准化后 K-Means(k=3,确定性 maximin 初始化),按「平均超额 − 平均超额回撤」降序命名 优选梯队 / 中游梯队 / 落后梯队,同时标注该簇均值在气泡图中所处象限。 聚类属描述性分组,不代表统计显著性。

数据体检

python "C:/Users/HT/.workbuddy/skills/index-enhance-weekly-report/scripts/check_weekly.py" \
  --wkdir "C:/Users/HT/.workbuddy/skills/index-enhance-weekly-report/data/wk"
  • 逐周行数 + 板块分布 + 中位/最大 |近一周超额| → 抓「漏抓」和「单位错」
  • 周次跳空检测(漏抓哨兵):相邻两期起始日相差 > 11 天 即判为缺期并指出"约缺 N 期"。 实测 2026 年正常间隔为 5~10 天(五一等假期造成 5 天与 9~10 天),缺一期会跳到约 14 天,故阈值 11 可安全区分。 可用 --max-gap 调整。
  • 量级红线:中位 |近一周超额| 应落在 0.003 ~ 0.03;出现 0.3~3 说明该周原表是百分比格式,漏了 ÷100
  • 重复 (周,板块,管理人)、整段窗口缺失板块、产品出现周数不足窗口一半的清单
  • 有告警时加 --strict 可让返回码为 1(自动化里可用于中断出报告)

跳空检测本身只负责"报警",不负责修。修法是回到「采集流程」第 3 步按集合差补抓; 缺的周若较久远,可直接查 references/collection.md 的 folder_id 对照表。

已知的行数结构性断点(不是 bug)

各期榜单收录产品数会变,且不同板块变化不同步。实测 2026 年:

  • 0420-0424 之前:300指增 20 只、2000指增 11~13 只、A500指增 15~16 只
  • 0420-0424 起:300指增 38、2000指增 37、A500指增 39
  • 500 / 1000 指增全程稳定在 56~71 只

已用「表头列结构 + 序号连续性」核验为原表如此,不是解析漏行。遇到类似跳变先核验再下结论。

自动化

技能已全参数化,可被定时任务直接调用。每周执行时的标准动作:

  1. 增量采集:列远端周标签 − 本地 data/wk/ 已有周标签 = 缺失集合,只补缺失的周 (正常 1 周;若上次漏跑会自动补齐多周)→ 追加 data/wk/<周标签>.csv + 刷新 data/snapshot.txt
  2. 数据体检:跑 check_weekly.py → 看「量级异常」与「周次跳空」两类告警,有问题先补数据
  3. 跑 make_report.py --window 26 --min-weeks 12 → 输出到桌面
  4. 用 present_files 把 HTML 交给用户(说明里点出本次新增了哪一期)

幂等性:按集合差采集,已存在的周不会重复抓;同名 CSV 重复写入只覆盖、不污染窗口。 失败处理:ima 不可用或当期榜单未发布 → 不写空文件,直接用已有数据出报告并在页头加 --warn 说明。 唯一原则:本地 data/wk/ 是历史数据的唯一载体,只增不减;窗口滚动由 --window 控制,不删数据。

常见坑

  1. ima 连接器断开:工具不可见时报 not found in any connected connector。让用户在设置页重连, 并新开一个会话(中途连上的连接器本会话加载不到)。这是运行时的连接掉线,不是配置问题。
  2. 不要走 ~/.config/ima/api_key:本地 ima-skills 1.1.9 缺知识库子模块,且该 Key 常已失效 (401 / code 200002 skill auth failed)。正确前缀是 openapi/wiki/v1/...,但优先用 MCP 工具。
  3. 单位陷阱:早期周报是百分比格式,近期是小数格式,必须统一折算为小数。
  4. 路径:本机 bash 的 PATH 偶尔异常(ls/grep/head 找不到),优先用 Python 或 PowerShell 做文件操作。
  5. Python 依赖:仅标准库(无需 numpy / sklearn / pandas)。