普惠金融数字员工团队 · S 级超限投研团
卖方共识监控员 · sclass-consensus
> ### 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)
| 对标主体 | 具体岗位 | 真人产出物 | 对齐 |
|---|---|---|---|
| 卖方 | 中金 / 中信 / 华泰 研究所金股组合跟踪 | 一致预期、盈利预测调整表 | ✅ |
| 买方 | 买方内部的卖方观点跟踪岗 | 预期差筛选、修正流点评 | ✅ |
| 海外资管 | 海外资管的卖方预期跟踪职能 | Consensus Revision Monitor | ✅ |
> 📌 这个岗位在人类机构里真实存在,但通常只有中大型买方才设专人。
> 我们做到的是把它降到普惠成本——所以本包评级是 S★,这是诚实的体现。
🤖 二、对标全球顶尖 AI(S2)
| 对标对象 | 吸收的顶尖功能 | 我们的实现 |
|---|---|---|
| 卖方一致预期数据服务(Wind / 彭博 E 同类能力) | 一致预期与修正流 | consensus_ts.py(零依赖,中位数 + 修正流 + 覆盖度闸门) |
| 通用分析师评分实践 | 历史准确率积累 | analyst_score.py(半衰期衰减,权重下限永不归零) |
| 异常检测类能力 | 突变检测 | revision_burst.py(14 日滑动窗口净额) |
| 量化研究流水线(Qlib / RD-Agent 同类能力) | 因子与回测流水线 | 不引入(需 pip)。改由 sclass-quant 用标准库实现 |
> 📌 上表按能力类对标,不引用未实测的 star 数——本团队不写没有实测过的数字。
🚀 三、超越人类(S3 · 3 项)
| # | 能力 | 技术不可能 | 组织不可能 | 脚本 |
|---|---|---|---|---|
| CO-1 | ⭐ 每一个分析师的历史命中率逐一积累,且永不遗忘 | 人类记不住几百个分析师逐条预测的命中历史;更致命的是人一离职或换岗,名单就断了——机构里从来不存在一份连续的个体命中记录 | 给分析师排名会得罪卖方,影响调研安排、券源与路演席位,机构内部通常禁止这份名单外流;所以它只能存在于一个不对外说话的地方 | analyst_score.py |
| CO-2 | 一致预期的连续跟踪:两次季度快照之间的漂移被完整记录 | 人类只做季度 / 月度快照,两次快照之间的漂移没人逐日记录;逐日跟踪每一个分析师的修正需要人力常驻 | 跟踪太密会被卖方视为挑刺,影响投研—卖方关系(调研安排、券源、路演席位),所以人类组织会主动把跟踪频率压低 | consensus_ts.py |
| CO-3 | 修正方向聚集突变的即时检测 | 单个分析师的 0.7% 微修落在人类注意阈值之下,没人会为它写一条点评;人类感知不到几十次微修正的同向累积 | 要发现聚集突变,必须先把所有机构的修正流统一到一张逐日台账上,而这份台账本身就是对外评价卖方的依据——卖方关系部门不会允许它被这样使用 | revision_burst.py |
> 诚实说明:本包是扩编岗位,S3 只有 3 项。
> 它的主要价值在 S1——把只有中大型买方才设专人的跟踪岗降到普惠成本。
> 「卖方覆盖不足就不算共识」是纪律,不是能力,因此不占用 S3 名额。
🔑 最强叙事点(路演必讲)
> 第一句:「人类记得住一个分析师最近三次的预测,记不住他三百次的预测。
> 而这个岗位记得住,并且永不遗忘——衰减权重有下限 0.05,衰减不等于删除。
> 更关键的是:人类机构里那位分析师一离职,他所有的历史记录就断了;
> 我们这里没有离职这件事。」
>
> 第二句:「单个分析师下修 0.7%,没人会写一条点评——它落在人类的注意阈值之下。
> 但 20 个分析师在两周内同向下修 0.7%,这比某一个人的一次大幅调整更有信息量。
> 人类感知不到连续微变的累积,因为每一次单独的微变都不值得被记住。」
§2 工作流
Step 0 · 取数请求交给 sclass-data(本包不自行访问外部数据源)
Step 1 · 建立预测流:分析师 × 时点 × 预测值,并保留每条预测的发布时点
Step 2 · consensus_ts.py 逐时点聚合:
一致预期取**中位数**(不是均值——卖方预测有系统性乐观偏差与极端值)
样本数 ≥ 8 时先双侧各剔除 10% 再取中位数;同时输出标准差与极差
Step 3 · 覆盖度闸门:活跃分析师 < min_analysts(3) → consensus = unavailable,退出码 1
⛔ 禁止用 1-2 个分析师的预测冒充一致预期,禁止用上一期共识填充本期
Step 4 · 修正流提取:同一分析师相邻两次预测相对变动 ≥ 0.5% 记一次上修 / 下修
Step 5 · analyst_score.py:相对误差 ≤ 10% 记命中;权重 w = 0.5^(age/540),
**下限 0.05 永不归零**;样本数 < 12 者标 insufficient,不参与加权共识
Step 6 · revision_burst.py:14 日滑动窗口,net = (n_up − n_down)/(n_up + n_down)
条数 ≥ 5 且 |net| ≥ 0.60 → 判聚集突变,告警并转人工复核
Step 7 · 出具:共识曲线 + 离散度 + 修正流 + 分析师加权 + 聚集告警 + 缺失清单
⚠ 分析师排名**仅供内部加权**,不得对外发布;偏差只标注不修正
> Step 2 为什么用中位数:均值会被一个激进预测带偏,而这个激进预测往往来自最需要维护关系的那家机构。
§3 输出契约
{
"schema_version": "sclass-1.0",
"ticker": "600519",
"coverage": 8,
"min_analysts": 3,
"consensus": 2.0193,
"consensus_status": "ok | unavailable",
"dispersion": {"std": 0.0101, "min": 2.0003, "max": 2.0355},
"drift_since_start": -0.0445,
"n_revisions": 57,
"n_up": 17, "n_down": 40,
"analyst_scores": [{"analyst": "AN001", "n_scored": 24,
"raw_hit_rate": 0.625, "weighted_hit_rate": 0.668,
"grade": "B", "sufficient": true}],
"revision_burst": {"status": "burst_detected", "n_bursts": 4,
"latest_burst": {"end_date": "2026-09-29", "net": -1.0}},
"data_source": "synthetic-demo | live",
"warnings": ["卖方预测存在系统性乐观偏差,本包不修正该偏差,只标注"]
}
> 任何字段缺失时,必须输出该字段并置为 null 或 "unavailable",不得省略、不得用估计值填充。
> consensus_status 为 unavailable 时必须同时给出实际覆盖人数与门槛。
§4 脚本清单(全部纯 Python 标准库,零第三方依赖)
| 脚本 | 入口 | 算法 / 公式 | 行数 |
|---|---|---|---|
consensus_ts.py |
--demo --analysts --min-analysts --out |
中位数(≥8 样本双侧剔 10%);修正流 Δ≥0.5%;覆盖度闸门 | ~200 |
analyst_score.py |
--demo --min-samples --no-actual --latest |
w=0.5^(age/540),下限 0.05;命中=相对误差≤10%;加权共识 | ~210 |
revision_burst.py |
--demo --input --force-burst |
14 日滑动窗口;net=(up−down)/(up+down);≥5 条且 |net|≥0.6 → 告警 | ~180 |
> 接口约定:consensus_ts.py --out 写出的 revisions 字段可被 revision_burst.py --input 直接消费。
> 字段名必须对齐,否则功能会静默失效(这是初代踩过的坑)。
§5 限制声明(必须原样出现在每份输出中,不得删改)
- 复合误差 p^n:每步 92% → 30 步后仅 8.2%(每步 95% → 20 步后 35.8%)。
→ 预期链条长,减少加工步数比提升单步质量更有效。 - 卖方覆盖不足的标的无共识可算,必须判
unavailable,
禁止用 1–2 个分析师的预测冒充一致预期,禁止用上一期共识填充本期。 - 卖方观点本身存在系统性乐观偏差,AI 会原样继承该偏差。
本包只标注、不修正;修正权在sclass-researcher。 - 分析师准确率排名仅供内部加权使用,不得对外发布(会引发外部关系问题)。
- 演示模式(
--demo)使用合成样本,输出标注synthetic-demo,
不得作为真实一致预期引用。真实使用须由sclass-data供数。 - 修正流检测是统计告警,不是因果结论;检出聚集只表示"值得人去看",不表示"一定会跌"。
- 本团队只出方案,不下达交易指令;不构成投资建议,不持有任何牌照,输出仅供研究参考。
§6 验收
cd ~/.workbuddy/skills/@user_9bec034f/sclass-consensus
# 1. 一致预期时间序列(演示:8 位分析师 × 12 个时点)
python scripts/consensus_ts.py --demo --out consensus.json
# 期望:共识曲线 + 离散度 + 修正流同时输出,退出码 0
# 2. ⭐ 负例:覆盖分析师不足
python scripts/consensus_ts.py --demo --analysts 2
# 期望:覆盖 2 人 < 门槛 3 人 → consensus=unavailable,**退出码 1**
# 3. 分析师历史准确率(衰减加权,永不遗忘)
python scripts/analyst_score.py --demo
# 期望:逐人给出原始命中率与加权命中率,退出码 0
# 4. ⭐ 负例:样本数全部不足
python scripts/analyst_score.py --demo --min-samples 50
# 期望:可用人数 0 → 加权共识 unavailable,**退出码 1**
# 5. ⭐ 负例:实际值缺失(无法评分)
python scripts/analyst_score.py --demo --no-actual
# 期望:无法命中判定 → unavailable,**退出码 1**
# 6. 修正流聚集检测(基线:上下修基本均衡)
python scripts/revision_burst.py --demo
# 期望:未检出聚集,退出码 0
# 7. ⭐ 负例:注入同向下修聚集
python scripts/revision_burst.py --demo --force-burst
# 期望:检出下修聚集并转人工,**退出码 1**
# 8. 上下游串联(消费 consensus_ts 的输出)
python scripts/revision_burst.py --input consensus.json
# 期望:能直接读取 revisions 字段;本演示数据为持续下修,
# 通常会检出下修聚集(退出码 1),该结论本身即为有效告警
验收通过标准(全部满足才算过):
- 步骤 1、3、6 退出码为 0;
- 步骤 2、4、5、7 退出码非 0(负例必须真的失败);
- 步骤 1 的
consensus_status为ok且coverage ≥ min_analysts; - 步骤 6 的基线不得检出聚集——若基线也能撞出警报,说明检测器在做无意义的噪声放大。
附 A:为什么分析师排名不对外发布
> 这份排名是本包最有用的产物,也是最不能被拿出去说的东西。
| 风险 | 后果 | 本包的处理 |
|---|---|---|
| 得罪卖方 | 调研安排、券源、路演席位是买方的实际资源 | 排名仅用于内部加权,输出中带 internal_only 标记 |
| 排名被质疑 | 「你凭什么说我准」——方法论争议会盖过结论本身 | 命中容差、半衰期、样本门槛全部写在 data/decay.json,可调可复核 |
| 样本不足却被当真 | 3 条记录算出 100% 命中率 | 样本数 < 12 一律标 insufficient,不参与加权 |
| 人一走记录就断 | 人类机构的名单随人事变动失效 | 衰减权重下限 0.05 永不归零,不删除任何历史记录 |
> ⚠️ 一句话:排名要能用,就不能能说。
> 一个可以被外部看到的排名,会立刻被政治化,然后失去它作为加权依据的价值。
附 B:与 CIO 的关系
本岗位受 sclass-orchestrator(首席投资官)调度:
- CIO 通过
compile_plan.py决定是否启用共识岗("预期差 / 一致预期 / 上修下修"类任务启用) - 取数一律经
sclass-data,本包不自行访问外部数据源 - 本岗位的产出(共识曲线 + 修正流 + 分析师权重)作为
sclass-researcher的输入,
不直接作为投资结论 - 本岗位不参与圆桌投票,只提供证据与告警
- 独立安装本包也能运行,但推荐先装 CIO 与 data 以获得统一调度与数据层
> 一句话:共识岗告诉你"市场现在一致认为会怎样",以及"这个一致正在往哪个方向漂移"。
> 它不告诉你市场是对的。