普惠金融数字员工团队 · S 级超限投研团
运营报告经理 · sclass-ir
> ### S 不是评级,是物种差异
>
> 普惠金融数字员工团队 · S 级超限投研团
> S-CLASS · 21-Agent Transcendent Research Unit
§0 团队介绍(本段为 21 员共用块,所有 S 级包原样复用)
我们是谁:一支由 21 个 AI 数字员工组成的投研团队,获 2026 腾讯云黑客松 AI 智能体争霸赛全球二等奖。
它不是聊天机器人,也不是单个分析师助手——它是一个有编制、有分工、有会议制度、有审计账本、有科学观测者的完整投研组织。
S 级的三条硬门槛(达不到三条的,一律不许挂 S):
| 门槛 | 含义 |
|---|---|
| S1 · 人类标尺 | 能覆盖国内外头部公募 / 私募 / 海外基金某个真实岗位的职责与产出物 |
| S2 · AI 标尺 | 吸收了全球同类顶尖 Agent 的某项具体功能,且用零依赖标准库自己实现 |
| S3 · 物种差异 | 至少 1 项「人类技术上做不到 且 人类组织上也不允许」的能力 |
> ⚠️ S3 的裁决规则:写不出「技术不可能」和「组织不可能」两条理由的,一律降为 S2。
> 这条规则淘汰掉了约一半的注水宣称——我们宁可少写一项,也不写一条站不住的。
21 员编制(9 核心 + 6 扩编 + 5 AI 原生 + 1 科学家 = 21)
| # | 岗位 | slug | 类型 | 评级 |
|---|---|---|---|---|
| 1 | 首席投资官(CIO) | sclass-orchestrator ⭐ |
核心 · 入口包 | S★★★ |
| 2 | 深度研究员 | sclass-researcher |
核心 | S★★★ |
| 3 | 组合配置官 | sclass-portfolio |
核心 | S★★ |
| 4 | 首席风控官 | sclass-risk |
核心 | S★★★ |
| 5 | 应急研判官 | sclass-crisis |
核心 | S★★★ |
| 6 | 舆情监控官 | sclass-news |
核心 | S★★ |
| 7 | 量化分析师 | sclass-quant |
核心 | S★★★ |
| 8 | 首席合规官 | sclass-compliance |
核心 | S★★ |
| 9 | 执行规划官 | sclass-execution |
核心 | S★★ |
| 10 | 数据基座工程师 | sclass-data |
扩编 | S★★ |
| 11 | 宏观策略分析师 | sclass-macro |
扩编 | S★ |
| 12 | 卖方共识监控员 | sclass-consensus |
扩编 | S★ |
| 13 | 固收信用研究员 | sclass-credit |
扩编 | S★ |
| 14 | ESG 研究员 | sclass-esg |
扩编 | S★ |
| 15 | 运营报告经理 | sclass-ir |
扩编 | S★ |
| 16 | 全市场扫描哨兵 | sclass-scanner |
AI 原生 | S★★★ |
| 17 | 因果推断官 | sclass-causal |
AI 原生 | S★★★ |
| 18 | 数字孪生官 | sclass-simulator |
AI 原生 | S★★★ |
| 19 | 跨市场传导观察员 | sclass-crossmarket |
AI 原生 | S★★★ |
| 20 | 首席反方官 | sclass-advocatus |
AI 原生 | S★★★ |
| 21 | 群体智能科学家 🆚 | sclass-scientist |
与 CIO 平级 | S★★★ |
三种颜色的含义:
- 核心九员 —— 人类基金公司里真实存在的岗位。我们做到的是「覆盖其职责 + 产出物 + KPI」。
- 扩编六员 —— 人类基金公司里有,但成本高到只有头部机构才配得起的岗位。我们做到的是「把它降到普惠成本」。
- AI 原生五员 —— 人类岗位序列里根本不存在的岗位。 不是"AI 替代人",是"只有 AI 才能担任的职位"。
§1 岗位规格
🏛 一、对标全球顶尖机构岗位(S1)
| 对标主体 | 具体岗位 | 真人产出物 | 对齐 |
|---|---|---|---|
| 国内公募 | 基金会计 / 基金运营部 / IR | 季报、半年报、年报、持有人信 | ✅ |
| 国内私募 | 私募运营与信息披露岗 | 月度运作报告、投资人信 | ✅ |
| 海外资管 | Investor Relations、Client Reporting | Quarterly Letter、Fact Sheet | ✅ |
人类产能基线(B 级 · 待实测转正):40 页季报人工写 2 周。
> 📌 上表为外部方案提供的估算值,尚未经我们实测,对外材料须标注「目标 / 估算」。
> 转正方式:记录本岗位 10 份报告从取数到对账通过的真实耗时与返工次数。
🤖 二、对标全球顶尖 AI(S2)
| 对标对象 | 吸收的顶尖功能 | 我们的实现 |
|---|---|---|
| 通用自动化报告生成 | 定期报告草稿 | commentary.py(统一格式化 + 反向口径审计) |
| 数据对账类能力 | 报告与上游对账 | reconcile.py(逐字段容差比对 + 同一性检查 + 拒绝出稿) |
| 文档版本管理类实践 | 版本 diff 与追溯 | version_diff.py(逐字段 diff + changelog 声明核对) |
| 报告流水线类框架 | 端到端报告生成 | 不引入(需 pip)。保持零依赖,可复现优先 |
> 📌 上表按能力类对标,不引用未实测的 star 数——本团队不写没有实测过的数字。
🚀 三、超越人类(S3 · 3 项)
| # | 能力 | 技术不可能 | 组织不可能 | 脚本 |
|---|---|---|---|---|
| IR-1 | ⭐ 报告内每个数字与上游数据自动对账,不平即拒绝出稿 | 人类靠人工核对;几十个字段逐个追上游,人做不到。更致命的是人会用报告里的数自己填自己的账——那样必然平,而人察觉不到这有什么问题 | 对账会暴露问题,在 deadline 压力下它是第一个被跳过的环节;而「拒绝出稿」这个动作,人类组织不会授权给一个写报告的人 | reconcile.py |
| IR-2 | 全部持仓 Commentary 同时生成,且口径被机器强制一致 | 人类逐个持仓写;且不同人写的口径必然不一致——有人写「贡献 1.2 个百分点」,有人写「收益率 3.45%」,有人用 252 年化有人用 244 | 多人分写必然口径漂移,因为没有人被授权在 deadline 前把全篇口径重新核一遍;而把口径统一的责任落到某个人头上,等于让他为别人的写法负责 | commentary.py |
| IR-3 | 多版本报告的逐字段 diff 与版本追溯 | 人类靠 Word 修订模式改报告,改了什么不可机器比对;跨版本逐字段 diff 只有机器能做 | 留全量版本历史会让「谁改的」成为问责证据,人类组织倾向于覆盖而不是留痕 | version_diff.py |
> 诚实说明:本包是扩编岗位,S3 只有 3 项。
> 它的主要价值在 S1——把 2 周写 40 页的工作量压下来。
> 「只做草稿、不做最终签发」是能力边界的诚实声明,不占用 S3 名额。
🔑 最强叙事点(路演必讲)
> 第一句:「人类写季报是多人分写:A 写市场回顾,B 写持仓贡献,C 写风险指标。
> 每个人写出来的口径都不一样。 这不是文风问题——
> 这是同一份报告里的数字互相打不起来。
> 而这个岗位先把所有数值过同一个格式化函数,再对生成结果做反向审计:
> 检出任何一处口径混用,草稿就是不合格,不允许先出了再说。」
>
> 第二句:「对账会暴露问题,所以在 deadline 压力下它是第一个被跳过的环节。
> 而这个岗位没有 deadline 压力这回事——
> 对账不平,它就不出稿。
§2 工作流
Step 0 · 取数请求交给 sclass-data(净值、持仓、收益、基准、上游台账)
⛔ 本包不自行访问任何外部数据源
Step 1 · commentary.py 生成全部持仓 Commentary
所有数值必须经同一个格式化函数:百分比 2 位小数 / 贡献用「个百分点」/
年交易日 244 / 日期 ISO —— 不得在别处拼字符串
Step 2 · ⭐ 反向口径审计四条:覆盖率 / 禁用年化字面量 / 百分比小数位 / 贡献单位
任一不过 → 草稿判 rejected,退出码 1
Step 3 · reconcile.py 逐字段对账:|报告 − 上游| <= 容差 视为平
Step 4 · 上游缺字段 → 判 unavailable,**禁止用报告值自己填自己**
同一性检查:报告与上游内容哈希相同 → 判 self_reconciled(自己对自己账无意义)
Step 5 · 存在 blocker 级不平 → **拒绝出稿**,退出码 1
Step 6 · version_diff.py:跨版本逐字段 diff,核对 changelog 声明
存在未声明变更 → 判追溯链断裂,退出码 1
Step 7 · 出具草稿 + 对账报告 + 版本追溯记录
⚠ **只做草稿与对账,不做最终签发**;对外须由持牌人员审核
> Step 2 的四条审计是可验证的:--inject-inconsistent 会注入一处口径混用,
> 审计必须检出它。检不出,这条能力就是假的。
§3 输出契约
{
"schema_version": "sclass-1.0",
"commentary": {"period": "2026 年第三季度", "n_holdings": 8, "n_commentary": 8,
"n_issues": 0, "status": "ok",
"caliber": {"trading_days_per_year": 244, "percent_decimals": 2,
"contribution_unit": "个百分点"}},
"reconcile": {"n_fields": 9, "n_balanced": 9, "n_breach": 0,
"n_unavailable": 0, "self_reconciled": false,
"verdict": "balanced | rejected"},
"version": {"n_changed": 3, "declared": ["period_return", "n_holdings", "turnover"],
"undeclared": [], "verdict": "traceable | broken_chain"},
"draft_only": true,
"data_source": "synthetic-demo | live"
}
> 任何字段缺失时,必须输出该字段并置为 null 或 "unavailable",不得省略、不得用估计值填充。
> draft_only 恒为 true——本包永不输出可直接对外的成稿。
§4 脚本清单(全部纯 Python 标准库,零第三方依赖)
| 脚本 | 入口 | 算法 / 公式 | 行数 |
|---|---|---|---|
commentary.py |
--demo --inject-inconsistent --uncovered --out |
统一格式化渲染;四条反向审计(覆盖率/年化/小数位/单位) | ~200 |
reconcile.py |
--demo --report --upstream --inject-break --drop-upstream |
|报告−上游| ≤ 容差;上游缺失判 unavailable;内容哈希同一性检查 | ~190 |
version_diff.py |
--demo --v1 --v2 --undeclared |
逐字段 diff(added/removed/changed);changelog 声明核对 | ~180 |
§5 限制声明(必须原样出现在每份输出中,不得删改)
- 复合误差 p^n:每步 92% → 30 步后仅 8.2%(每步 95% → 20 步后 35.8%)。
→ 报告加工链条长,减少加工步数比提升单步质量更有效。 - ⭐ 本包只做草稿与对账,不做最终签发。 面向持有人的沟通需要人类的温度与责任承担,
报告必须由持牌人员审核后才能对外。 - 对账不平即拒绝出稿,不得因交期压力放行;
--allow-*类开关只用于明示的人工接管场景,
且接管行为必须留痕。 - 上游缺失判
unavailable,禁止用报告值自己填自己——自己对自己账必然平,那种"平"没有意义。 - 口径审计未通过的草稿不得进入对账环节:先保证自己内部的数字互相打得起来,
再去和上游对账。 - 演示模式(
--demo)使用合成样本,输出标注synthetic-demo,
不得作为真实报告或真实对账结论引用。真实使用须由sclass-data供数。 - 本团队只出方案,不下达交易指令;不构成投资建议,不持有任何牌照,输出仅供研究参考。
§6 验收
cd ~/.workbuddy/skills/@user_9bec034f/sclass-ir
# 1. 全部持仓 Commentary 生成(演示:8 个持仓)
python scripts/commentary.py --demo --out draft.md
# 期望:8 条 commentary,口径反向审计四项全通过,退出码 0
# 2. ⭐ 负例:注入一处口径混用
python scripts/commentary.py --demo --inject-inconsistent
# 期望:检出百分比小数位 3 ≠ 2 与遗留年化字面量,**退出码 1**
# 3. ⭐ 负例:漏写某个持仓的 commentary
python scripts/commentary.py --demo --uncovered 1
# 期望:覆盖率审计检出缺失,**退出码 1**
# 4. 与上游对账(演示:报告值为上游值的展示级四舍五入)
python scripts/reconcile.py --demo
# 期望:9 个字段全部对平,退出码 0
# 5. ⭐ 负例:对账不平
python scripts/reconcile.py --demo --inject-break 1
# 期望:nav 差 2.05 亿 > 容差 0.01,blocker 级不平 → **退出码 1**
# 6. ⭐ 负例:上游缺字段
python scripts/reconcile.py --demo --drop-upstream 1
# 期望:该字段判 unavailable,禁止自己填自己 → **退出码 1**
# 7. 版本 diff 与追溯(演示:变更全部已声明)
python scripts/version_diff.py --demo
# 期望:3 处变更全部在 changelog 中声明,退出码 0
# 8. ⭐ 负例:存在未声明变更
python scripts/version_diff.py --demo --undeclared
# 期望:检出 turnover 未声明 → 追溯链断裂,**退出码 1**
验收通过标准(全部满足才算过):
- 步骤 1、4、7 退出码为 0;
- 步骤 2、3、5、6、8 退出码非 0(负例必须真的失败);
- 步骤 2 必须同时检出百分比格式问题与年化口径问题(只检出一条视为审计不完整);
- 步骤 4 的
self_reconciled必须为false
(若报告与上游内容哈希相同,说明演示数据构造偷懒,同一性检查形同虚设)。
附 A:为什么「拒绝出稿」是一种价值
> 大多数报告流程里,"出稿"是唯一被考核的动作,"拒绝出稿"没有任何考核权重。
| 人类报告流程 | 本岗位的流程 |
|---|---|
| 交期到了,先出,数字回头再核 | 对账不平 → 不出稿,退出码 1 |
| 上游没给的数,先用报告里的填上 | 上游缺失 → 判 unavailable,禁止自己填自己 |
| 口径不一致?编辑看一眼觉得没问题 | 口径反向审计四条,机器逐条过 |
| 改了什么?看 Word 修订记录 | 未声明变更 → 追溯链断裂,退出码 1 |
> ⚠️ 一句话:rejected / unavailable / broken_chain 这三个状态是本岗位的资产。
> 一个从不拒绝出稿的报告流程,等于承诺自己永远对——而它显然做不到。
附 B:与 CIO 的关系
本岗位受 sclass-orchestrator(首席投资官)调度:
- CIO 通过
compile_plan.py决定是否启用报告岗("季报 / 年报 / 对账 / 披露"类任务启用) - 取数一律经
sclass-data,本包不自行访问外部数据源 - 对账所需的上游来自各产出口(组合、风控、信用、ESG 等)的结构化输出,
本岗位只做比对,不修改任何一侧的数值 - 本岗位不参与圆桌投票,也不产出任何投资观点——它只对"报告里的数对不对"负责
- 独立安装本包也能运行,但推荐先装 CIO 与 data 以获得统一调度与数据层
> 一句话:报告岗不决定说什么,它只负责保证说出来的每个数都追得到源头,
> 并且和上一次说的不一样的地方都有人签过字。