普惠金融数字员工团队 · S 级超限投研团
数字孪生官 · sclass-simulator
> ### 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 —— 结论是:没有)
| 人类最接近的岗位 | 为什么做不到 | 判定 |
|---|---|---|
| 量化研究员(回测) | 回测重放的是已发生的历史,只有一条路径;本岗位是受控实验,路径由参数生成 | 无对应 |
| 风控部的压力测试岗 | 压力测试只有 2–3 个规定情景,且情景由监管给定,不可自由设定 | 无对应 |
| 交易台的盘前推演 | 盘前推演是口头的,不留参数、不留 seed,重跑必然不同 | 无对应 |
> ⚠️ 人类最接近的三件事,分别缺了三样东西:受控、可自由设定、可复现。
> 三缺一就不是数字孪生;而人类组织里,这三样从来没有同时具备过。
🤖 二、对标全球顶尖 AI(S2)
| 对标对象 | 吸收的顶尖功能 | 我们的实现 |
|---|---|---|
| 世界模型 / 受控实验范式 | 可交互市场模型 + 万次受控实验 | world_fork.py + path_sim.py(零依赖) |
| 蒙特卡洛风险度量(VaR / CVaR) | 尾部风险而非方差 | path_sim.py(分位数 + CVaR95 + 最大回撤) |
| 实验追踪与可复现(MLflow 类) | 实验登记 + 参数快照 + seed 锁 | experiment_log.py(不引入 MLflow,需 pip) |
| 文件抽屉检测 | 负面结果必须入册 | experiment_log.py audit(哈希链 + 编号缺口) |
> ⚠️ 不引入任何需要 pip 的依赖。零依赖不是洁癖:
> 一个需要装在特定环境里才能复现的「平行世界」,本身就失去了平行世界的意义。
🚀 三、超越人类(S3 · 6 项)
| # | 能力 | 技术不可能 | 组织不可能 | 脚本 |
|---|---|---|---|---|
| SI-1 | ⭐ 从同一个当下分叉出 N 个平行世界,随机流互不相交 | 人类无法把「同一个当下」复制 N 份——人的记忆是单份的,会被后续思考覆盖 | 人类组织里「平行小组做同一件事」被视为重复劳动与预算浪费 | world_fork.py |
| SI-2 | ⭐ 单变量隔离的受控实验:只改一个变量,其余全部冻结 | 真实市场里变量必然同时变化,人类无法让「只有流动性变了」这件事发生 | 人类做情景分析时会「顺手」改好几个参数,改完就无法归因 | compare_worlds.py |
| SI-3 | 同时维持 10000 条互不干扰的平行路径 | 人类只能想 2–3 个情景,且想到第二个时第一个的细节已被改写(情景互相污染) | 人类不会为「一个没发生的情况」配备人力 | path_sim.py |
| SI-4 | 逐位可复现:seed + 参数快照 + 路径摘要三重锁定 | 人类重跑一次必然带上第一次的记忆,不可能「第一次地重跑」 | 人类报告不留 seed,因此无人能验证他人结论 | path_sim.py --seed |
| SI-5 | 在多个合成 regime 上做稳健性扫描(calm / normal / stress / crisis) | 人类只回测一段真实历史,那一段历史里没有发生的危机,永远测不到 | 历史数据里没发生过的情景,在组织上无法被立项 | path_sim.py --regime |
| SI-6 | 失败实验与成功实验同等入册,哈希链 + 编号缺口检测 | 人类没有不可篡改的登记册:删掉一页纸不留痕迹 | 人类只报成功的实验(文件抽屉问题),写失败要挨骂 | experiment_log.py |
被我们自己淘汰的条目(诚实 > 数量):
| 被淘汰的候选 | 淘汰理由 |
|---|---|
| 「数字孪生可以预测真实市场」 | 合成市场 ≠ 真实市场;我们能做的是在给定设定下的推演,不是预测 |
| 「世界模型的行为已验证与真实市场一致」 | 模型设定错误无法自证——设定者是我们,我们没有外部真值校准 |
| 「自动搜索出最优策略参数」 | 在合成环境里搜出的最优,几乎必然是对合成设定的过拟合 |
🔑 最强叙事点 · 全篇最好的一句之一
> 「人类量化研究员在回测里比较的,是『历史上发生过什么』。
>
> 我们的数字孪生官问的是:『如果当时那笔大单晚 30 秒,会怎样?如果流动性薄一半,会怎样?』
>
> 这些问题在真实市场里没有答案——因为你不能把市场改一遍再跑一次。」
为什么这句话站得住:它没有声称预测能力,只声称反事实的可计算性。
而后者是可以被验证的:同一 seed 跑两次,路径摘要逐位相同。
§2 工作流
Step 0 · 世界设定加载 → world_spec.json(regime + 扰动参数 + 边界,全部公开)
Step 1 · ⭐ 平行世界分叉 → 主 seed 派生 N 条互不相交的随机流 → worlds.json
→ 隔离校验:种子/随机流指纹/状态哈希三者均须唯一
Step 2 · 路径模拟 → 每个世界跑 n_paths 条 GBM + 跳跃路径 → 终端收益分布
→ VaR95 / CVaR95 / 最大回撤 / paths_digest(可复现摘要)
Step 3 · ⭐ 跨世界对照 → 基准世界 vs 各情景世界,逐条检查「只改了几个变量」
→ 改了 ≥2 个的世界被拒绝(差异无法归因)
Step 4 · 实验登记 → 无论成败全部入册,哈希链追加
Step 5 · ⭐ 文件抽屉审计 → 链完整性 + 编号缺口 + 失败实验计数
Step 6 · 交付 → 只输出「在某设定下的推演」,不输出买卖指令
> Step 1 的隔离校验是强制项。 两个世界若共用同一条随机流,
> 它们就不再是两个世界,而是同一个世界被算了两次——
> 这会直接摧毁「N 条路径互不干扰」这条 S3 主张。
受控实验的三条纪律:
- 每个对照世界相对基准只改一个变量;多变量对照一律拒绝。
- 每个实验无论成败必须登记,失败实验不得删除。
- 每个结论必须带上
synthetic: true与「未经真实市场验证」的常驻提示。
§3 输出契约
{
"schema_version": "sclass-simulator-1.0",
"worlds": {
"regime": "normal", "n_worlds": 128, "master_seed": 42,
"unique_seeds": 128, "unique_streams": 128, "unique_states": 128,
"isolation_ok": true, "merkle_root": "…", "synthetic": true
},
"paths": {
"n_paths": 10000, "seed": 42,
"mean_return": 0.0213, "std_return": 0.0902,
"q01": -0.19, "q05": -0.126, "q50": 0.024, "q95": 0.18, "q99": 0.23,
"var95": 0.126, "cvar95": 0.157,
"mean_max_drawdown": 0.061, "worst_max_drawdown": 0.31,
"paths_digest": "…"
},
"comparison": {
"baseline_outcome": -0.121032,
"rows": [{"id": "S1", "cn": "流动性减半", "changed_vars": ["liquidity"],
"single_variable": true, "attributable_to": "liquidity",
"delta": -0.00015}],
"isolation_ok": true
},
"registry": {"total": 6, "success": 3, "failed": 3, "chain_ok": true},
"synthetic": true,
"data_source": "synthetic-demo",
"warnings": ["本结论来自合成环境,未经真实市场验证"]
}
> 任何字段缺失时,必须输出该字段并置为 null 或 "unavailable",不得省略、不得用估计值填充。
> synthetic 恒为 true:本包没有任何一个字段可以来自真实市场。
§4 脚本清单(全部纯 Python 标准库,零第三方依赖)
| 脚本 | 入口 | 算法 / 公式 | 行数 |
|---|---|---|---|
world_fork.py |
--demo --n-worlds --regime --case |
主 seed 派生独立随机流(SHA-256)+ Merkle 根 + 三重唯一性隔离校验 | ~200 |
path_sim.py |
--demo --n-paths --regime --max-cvar --from-worlds |
GBM + 泊松式跳跃 + 分位数/CVaR95 + 路径摘要 | ~230 |
compare_worlds.py |
--demo --case --from-worlds |
单变量隔离校验 + 确定性风险调整期望 | ~180 |
experiment_log.py |
register / audit / list |
哈希链(SHA-256)+ 编号缺口检测 + 文件抽屉检测 | ~210 |
§5 限制声明(必须原样出现在每份输出中,不得删改)
- 合成市场 ≠ 真实市场。所有来自数字孪生的结论必须标注
synthetic,
且不得作为实盘的唯一依据。常驻一句:「本结论来自合成环境,未经真实市场验证。」 - 模型设定错误无法自证:世界模型的行为取决于它的设定,而设定者是我们。
data/world_spec.json的全部参数对外公开,供外部质疑。 - 在合成环境里搜出的最优参数,几乎必然是对合成设定的过拟合。
本包不提供「最优参数搜索」,只提供「在给定设定下的推演」。 - 复合误差 p^n:每步 92% → 30 步后仅 8.2%。数字孪生链上每一步的设定误差,
会在 N 个世界里被复制 N 份——平行世界不能修正设定错误,只会把它放大 N 倍。 - 蒙特卡洛的分位数估计本身有误差:路径数不足时尾部估计极不稳定;
本包默认 10000 条,但仍须把 CVaR 当作量级参考而非精确数字。 - 本包不产出买卖结论,只产出情景推演与风险量级;决策权在研究员与 CIO。
- 演示模式(
--demo)使用合成样本(data_source: synthetic-demo),
不得作为真实市场结论引用。 - 本团队只出方案,不下达交易指令;不构成投资建议。
§6 验收
cd ~/.workbuddy/skills/@user_9bec034f/sclass-simulator
# 1. ⭐ 平行世界分叉(正常路径)
python scripts/world_fork.py --demo --n-worlds 128 --out worlds.json
# 期望:三重唯一性 128/128,isolation_ok=true,退出码 0
# 2. ⭐ 负例:共用随机流 → 串扰必须被检出
python scripts/world_fork.py --demo --case shared_stream
# 期望:唯一世界状态 < 世界数,**退出码 1**
# 3. 蒙特卡洛路径模拟(默认 10000 条)
python scripts/path_sim.py --demo --n-paths 10000
# 期望:输出 VaR95 / CVaR95 / paths_digest,退出码 0
# 4. 负例:stress regime 的尾部风险超过门槛
python scripts/path_sim.py --demo --regime stress --max-cvar 0.25
# 期望:CVaR95 超限,**退出码 1**
# 5. 正常 regime 通过同一门槛
python scripts/path_sim.py --demo --regime normal --max-cvar 0.25
# 期望:退出码 0
# 6. ⭐ 跨世界对照(单变量隔离)
python scripts/compare_worlds.py --demo
# 期望:每个对照只改 1 个变量,退出码 0
# 7. ⭐ 负例:多变量对照 → 差异无法归因
python scripts/compare_worlds.py --demo --case confounded
# 期望:检出「同时改动 vol、liquidity」,**退出码 1**
# 8. 以分叉出的世界为基准做对照
python scripts/compare_worlds.py --from-worlds worlds.json
# 期望:退出码 0
# 9. 实验登记(含失败实验)
python scripts/experiment_log.py register --demo --registry registry.json
python scripts/experiment_log.py list --registry registry.json
# 期望:6 条登记,其中 3 条 failed
# 10. 登记册审计
python scripts/experiment_log.py audit --registry registry.json
# 期望:哈希链完整、编号连续、含失败实验,退出码 0
# 11. ⭐ 负例:删掉一条失败实验(文件抽屉)→ 必须被检出
python scripts/experiment_log.py audit --registry registry.json --tamper
# 期望:检出编号缺口,**退出码 1**
# 12. 可复现性:同 seed 两次输出逐位相同
python scripts/world_fork.py --demo --json > /tmp/w1.json
python scripts/world_fork.py --demo --json > /tmp/w2.json
cmp /tmp/w1.json /tmp/w2.json && echo FORK_REPRO_OK
python scripts/path_sim.py --demo --json > /tmp/p1.json
python scripts/path_sim.py --demo --json > /tmp/p2.json
cmp /tmp/p1.json /tmp/p2.json && echo PATH_REPRO_OK
验收通过标准(全部满足才算过):
- 步骤 1、3、5、6、8、9、10 退出码为 0;
- 步骤 2、4、7、11 退出码为 1
(负例必须真的失败——否则「互不干扰」「单变量隔离」「禁文件抽屉」全是空话); - 步骤 12 输出
FORK_REPRO_OK与PATH_REPRO_OK; - 每一份输出都带
synthetic: true与「未经真实市场验证」提示; - 步骤 1 中三重唯一性计数均等于世界数。
附 A:世界模型的设定公开(模型设定错误无法自证,所以必须公开)
| 参数 | calm | normal | stress | crisis |
|---|---|---|---|---|
| 日漂移 μ | 0.0005 | 0.0004 | −0.0012 | −0.0035 |
| 年化波动 σ | 0.10 | 0.18 | 0.38 | 0.62 |
| 流动性 | 1.20 | 1.00 | 0.45 | 0.18 |
| 买卖价差 | 0.0005 | 0.0008 | 0.0035 | 0.0090 |
| 跳跃强度 λ | 0.003 | 0.010 | 0.060 | 0.150 |
价格过程:S_{t+1} = S_t · exp((μ − σ²/2)·dt + σ·√dt·Z) · (1 + J),
dt = 1/252,J 以概率 λ 发生,幅度 N(0, jump_scale)。
冲击成本:cost = spread/2 + impact × 0.001 / liquidity
(与 compare_worlds.py 的判定函数同口径,便于交叉比对)。
> ⚠️ 这张表是本包最容易被攻击的地方,所以我们把它放在最显眼的位置。
> 若你不同意任何一个数字,改 data/world_spec.json 即可——
> 但请不要只在我们这里改完就相信结论:换一组设定,结论就会变。
附 B:与 CIO 的关系
- 本岗位受
sclass-orchestrator(CIO)调度,通常在风控官给限额之前被调用:
CIO 需要先把「这个方案在 stress / crisis 下的尾部是多少」算出来,再让风控官定限额。 - 本岗位的产出是情景推演与风险量级,不是投资结论;它不参与圆桌投票。
path_sim.py的 CVaR 闸门一旦触发(--max-cvar),
对应方案的execution_tier应被 CIO 自动降为pilot,不得进入 full。- 分叉出的世界数(
--n-worlds)默认 128:这是「够用」与「可审计」之间的折中,
不是越大越好——世界数越多,设定错误被复制的份数也越多。 - 独立安装本包也能运行,但推荐先装 CIO 以获得统一调度与数据层。