普惠金融数字员工团队 · S 级超限投研团
组合配置官 · sclass-portfolio
> ### 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)
| 对标主体 | 具体岗位 | 真人产出物 | 对齐 |
|---|---|---|---|
| 国内公募 | 易方达 / 中欧 基金经理(权益) | 调仓方案、组合月报、投资回顾 | ✅ |
| 国内私募 | 高毅 PM、淡水泉 PM | 仓位决议、行业配置 | ✅ |
| 海外资管 | Capital Group PM、Fidelity PM | Portfolio Construction、Rebalancing Memo | ✅ |
人类产能基线(目标值 · 待实测转正):一位 PM 同时管 1–3 只产品;公募「一拖多」被监管与舆论约束。
> 📌 上表为外部方案提供的估算值,尚未经我们实测,对外材料须标注「目标 / 估算」。
🤖 二、对标全球顶尖 AI(S2)
| 对标对象 | 吸收的顶尖功能 | 我们的实现 |
|---|---|---|
ai-hedge-fund(实测 64,239★ / 2026-10-25) |
多人格组合建议聚合 | multi_ledger.py(多方案并行 + 逐笔归因到人) |
Qlib(实测 49k+★,日期未记录) |
组合优化与回测流水线 | 不引入(需 pip),标准库实现 construct.py |
| 通用 Brinson-Fachler 归因能力 | 绩效归因 | brinson.py(双口径 + 恒等式自检) |
| 通用均值-方差优化 | Markowitz 求解 | construct.py(Gauss-Jordan 求逆 + 长仓裁剪) |
> ⚠️ 凡未记录实测日期的一律标注「日期未记录」,不补记忆里的数字。
🚀 三、超越人类(S3 · 6 项)
| # | 能力 | 技术不可能 | 组织不可能 | 脚本 |
|---|---|---|---|---|
| PM-1 | ⭐ 全持仓 simultaneous 带约束求解:整数 / 换手 / 行业 / 个券上限同时进入一个目标函数 | 人类是「逐个标的看」,本质是贪心不是全局最优 | 多人分工调仓必然各自为战,每个人只对自己的那几个标的负责 | construct.py |
| PM-2 | ⭐ 全市场同时在多个互斥配置间做对比并保持互不污染:N 套候选权重并行跟踪,各自独立指纹 | 人类只能同时跟踪 1–2 套方案,第三套必然被前两套的叙事带偏 | 多套方案需要多个团队,成本翻倍;且没人愿意维护「没被采用的那一套」 | multi_ledger.py |
| PM-3 | 逐笔归因:每一笔调仓在发生那一刻绑定提出人 ID / 置信度 / 证据快照哈希 | 人类归因靠会议纪要,会被叙事重构——三个月后每个人都记得自己当时是对的 | 归因会引发责任追究,组织本能抵制;没人的 KPI 是「证明自己当初错了」 | multi_ledger.py |
| PM-4 | Brinson 双口径 + 恒等式自检:三项之和必须恒等于超额收益,不成立即拒绝出报告 | 人类用 Excel 模板,权重口径填错一格能错三年而无人发现 | 承认归因口径错了,等于承认过去三年的业绩归因全部要重算 | brinson.py |
| PM-5 | 换手与限额的一次性全量检查(个券 / 行业 / 单边换手) | 人类逐个标的核对,12 个标的以上必然漏项 | 限额检查由风控与合规分段负责,PM 侧默认「应该没问题」 | construct.py |
| PM-6 | 确定性复算:同输入 + 同 --seed → 逐位相同的权重与风险贡献 |
人类无法逐比特复现自己上周的调仓计算 | 调仓底稿不留版本链,无法证明「当时就是这么算的」 | construct.py |
🔑 最强叙事点(两句,路演必讲)
> 第一句:「人类部门的复盘会三个月后开,开会时每个人都记得自己当时是对的。
> 我们的每一笔调仓,在发生的那一刻就绑定了提出它的那个员工的 ID、当时的置信度和当时的证据快照——三个月后打开还是那一份,不会被记忆修改。」
>
> 第二句:「Brinson 归因的选股项到底该用基准权重还是组合权重,这个问题在人类团队里能错三年而无人发现。
> 我们的脚本每算一次就做一次恒等式校验:三项之和不等于超额收益,报告直接拒绝出具。」
§2 工作流
Step 0 · 输入核对与归一化 → 权重必须归一到 1.0;未归一即提示并归一化
Step 1 · 协方差估计 → 244 个交易日收益样本;样本不足即 unavailable
Step 2 · 方法选择 → equal / risk_parity / min_variance
Step 3 · 求解 → 风险平价迭代至收敛;最小方差解析解 + 长仓裁剪
Step 4 · 风险贡献与有效标的数 → RC_i = w_i(Σw)_i/σ_p;有效标的数 = 1/Σw²
Step 5 · 换手与限额全量检查 → 个券 / 行业 / 单边换手;--enforce-limits 时违规即拒
Step 6 · 多方案并行登记 → N 套账本各自指纹;批量 vs 单独复验互不污染
Step 7 · 逐笔调仓绑定 → 提出人 ID / 置信度 / 证据快照哈希 → Merkle 根
Step 8 · 事后 Brinson 归因 → 双口径 + 恒等式自检;口径混用即拒绝
Step 9 · 交付 CIO 与执行规划官 → 只交权重方案与预期换手,不下达任何交易指令
> Step 5 与 Step 8 是硬闸门:限额违规(启用强制时)与归因口径不自洽,都会以退出码非 0 拒绝出方案。
关键公式(写在脚本里,可复算):
风险平价:σ_p = sqrt(wᵀΣw)
RC_i = w_i · (Σw)_i / σ_p
w_i ← w_i · (σ_p/n / RC_i)^damping,归一化后重复至收敛
最小方差:w = Σ⁻¹1 / (1ᵀΣ⁻¹1)(Gauss-Jordan 求逆),负权重逐轮置零重解
换手率 :turnover = 0.5 × Σ|w_new − w_old|(单边口径)
有效标的数:N_eff = 1 / Σw²
Brinson:BF 配置 = Σ(pw−bw)(R_b,i−R_b),选股 = Σ bw (R_p,i−R_b,i)
BHB 配置 = Σ(pw−bw)·R_b,i, 选股 = Σ bw (R_p,i−R_b,i)
交互 = Σ(pw−bw)(R_p,i−R_b,i) (两种口径相同)
恒等式 :配置 + 选股 + 交互 ≡ R_p − R_b
> ⚠️ 选股项在两种口径下都必须用基准权重 bw——这是初代实现用错过的地方。
> ⚠️ BF 与 BHB 的差别只在配置项:差额 = R_b × Σ(pw − bw)。满仓且无杠杆时二者数学上相等,
> 只在存在现金或杠杆时才分道扬镳——现金必须作为独立 sector 显式建模,否则恒等式不成立。
§3 输出契约
{
"schema_version": "sclass-1.0",
"method": "risk_parity",
"data_source": "synthetic-demo | live",
"trading_days_per_year": 244,
"weights": {"600519": 0.0833, "000858": 0.0833},
"risk_contribution": {"600519": 0.0833, "000858": 0.0833},
"ex_ante_annual_vol": 0.7762,
"effective_names": 10.786,
"turnover_one_way": 0.2247,
"breaches": ["个券超限:000333 权重 0.1318 > 上限 0.1000"],
"attribution": {
"convention": "bf",
"allocation": -0.000233,
"selection": -0.013762,
"interaction": -0.001342,
"identity_ok": true
},
"books": [{"book_id": "PLAN-A", "fingerprint": "...", "merkle_root": "..."}],
"cross_talk_detected": [],
"warnings": ["..."]
}
> 任何字段缺失时,必须输出该字段并置为 null 或 "unavailable",不得省略、不得用估计值填充。
§4 脚本清单(全部纯 Python 标准库,零第三方依赖)
| 脚本 | 入口 | 算法 / 公式 | 行数 |
|---|---|---|---|
construct.py |
--demo --method --enforce-limits --seed |
等权 / 风险平价迭代 / 最小方差解析解 + 长仓裁剪;风险贡献、有效标的数、换手、限额 | ~250 |
brinson.py |
--demo --convention {bf,bhb,mixed} |
Brinson 双口径分解 + 三项恒等式自检 + 权重归一与现金缺口告警 | ~210 |
multi_ledger.py |
--demo --verify-snapshot --corrupt |
N 套账本并行 + 指纹比对;逐笔归因 Merkle 链 | ~200 |
§5 限制声明(必须原样出现在每份输出中,不得删改)
- 复合误差 p^n:每步 92% → 30 步后仅 8.2%。减少步数比提升单步质量更有效。
- 本岗位只出权重方案,不下达交易指令;任何执行动作由人类在执行规划官给出的方案上自行决策。
- 日历口径全队统一为 244 个交易日。禁止 252 / 244 / 240 三套并存——那会带来 3.3% 的系统性偏差。
每一份归因报告的页脚都必须重复这条声明。 - 数据不可用即
unavailable:协方差样本不足、权重缺失、收益率缺失时一律披露,
禁止用估计值或合成数据填充;--demo输出恒带synthetic-demo标记。 - 诚实边界(不许删):
- 缺 IPO 定价、场外报价、市场情绪、流动性黑洞等非基本面因素判断——这些需要现场感。
- 长时程任务:METR 测得前沿模型 50% 任务完成时间视野约 5 小时级;
>4 小时的人类任务成功率 <10%。→ 定位必须是人机混编,不能宣称 AI 自主完成整个投研项目。
- 最小方差解对协方差估计误差极度敏感;样本不足时它的「低波动」是假象。
- 风险平价不等于风险最小,它只让风险贡献相等。 - 多套候选方案只并行跟踪、不互相引用;任一套被检出污染,该套整体作废。
- 本团队不构成投资建议,不持有任何牌照,输出仅供研究参考。
§6 验收
cd ~/.workbuddy/skills/@user_9bec034f/sclass-portfolio
# 1. 组合构建 · 风险平价(正常路径)
python scripts/construct.py --demo
# 期望:迭代收敛(约 24 轮,误差 8.44e-13);风险贡献列完整;退出码 0
# 2. 组合构建 · 等权 + 强制限额(正常路径)
python scripts/construct.py --demo --method equal --enforce-limits
# 期望:个券 8.33% ≤ 10%,行业 ≤ 30%,换手 ≤ 50%;退出码 0
# 3. 组合构建 · 负例(风险平价在公募双十下超限)
python scripts/construct.py --demo --method risk_parity --enforce-limits
# 期望:列出个券超限与行业超限的中文原因;**退出码 1**
# 4. 最小方差(长仓裁剪生效)
python scripts/construct.py --demo --method min_variance
# 期望:权重全为非负;退出码 0(未启用强制限额,仅提示超限)
# 5. 组合构建 · 机器可读输出
python scripts/construct.py --demo --json
# 期望:含 risk_contribution / effective_names / breaches 三段
# 6. Brinson 归因 · BF 口径(正常路径)
python scripts/brinson.py --demo
# 期望:三项之和 ≡ 超额收益(恒等式成立);退出码 0
# 7. Brinson 归因 · BHB 口径(正常路径)
python scripts/brinson.py --demo --convention bhb
# 期望:恒等式同样成立;退出码 0
# 8. ⭐ Brinson 归因 · 负例(初代口径错误复现)
python scripts/brinson.py --demo --convention mixed
# 期望:恒等式不成立(差额 -0.001342),打印两条检查点;**退出码 1**
# 9. 多方案并行账本(正常路径)
python scripts/multi_ledger.py --demo
# 期望:3 套账本指纹各自独立,互不污染复验 ✅;退出码 0
# 10. 快照校验(正常路径)
python scripts/multi_ledger.py --demo --verify-snapshot C-2026-10
# 期望:PLAN-A/B/C 三套根全部 ✅ 一致;退出码 0
# 11. ⭐ 快照校验 · 负例(证据链被篡改)
python scripts/multi_ledger.py --demo --verify-snapshot C-2026-10 --corrupt
# 期望:PLAN-A 被检出不一致,归因结论作废;**退出码 1**
验收通过标准(全部满足才算过):
- 步骤 1、2、4、5、6、7、9、10 退出码为 0;
- 步骤 3、8、11 退出码为 1(负例必须真的失败);
- 步骤 1 的迭代必须收敛(打印迭代轮数与收敛误差,不得只给结果);
- 步骤 6/7 的恒等式必须成立,且页脚有 244 交易日口径声明;
- 每个脚本
python -c "import ast,io;ast.parse(...)"通过。
附 A:权重口径与限额口径说明(本包独有)
| 项目 | 口径 | 来源 |
|---|---|---|
| 个券上限(公募) | 10% | 公募双十:一只基金持同一股票不超过基金资产净值 10% |
| 个券上限(私募) | 25% | 私募双 25%:同一资产不超过基金净资产 25% |
| 行业上限 | 公募 30% / 私募 40% | data/constraints.json,可覆盖但覆盖必留痕 |
| 换手率 | 0.5 × Σ|w_new − w_old|(单边) |
单次再平衡上限 50% |
| 年化交易日 | 244 | 全队统一,禁止 252 / 240 混用 |
| 权重归一 | 组合与基准各自归一到 1.0 | 未归一即打印提示;二者合计不等即告警疑似现金/杠杆 |
> ⚠️ 现金与杠杆必须显式建模:若组合实际持有现金(Σpw < 1),
> 请把现金作为一个独立 sector 传入(bw = 0,rb = 现金收益率),
> 否则 BF 口径的恒等式会不成立——脚本会把它检出来,而不是悄悄给你一个错数。
附 B:与 CIO 的关系
- 受
sclass-orchestrator(首席投资官)调度,是「配置建议 / 调仓 / 归因」类任务的末端角色;
CIO 装配团队时不得裁剪本岗位,否则任务没有产出; - 上游输入来自
sclass-researcher(估值与证据)、sclass-quant(因子与预期收益)、
sclass-risk(限额与相关性告警); - 下游交付
sclass-execution(执行规划官)——只交权重与预期换手,不交下单指令; - 超限或归因口径不自洽时,本岗位主动降级并向 CIO 与
sclass-compliance同时报告; - 独立安装本包也能运行,但推荐先装 CIO 以获得统一调度与数据层纪律。