{"skill":{"slug":"quant-research-lab","displayName":"量化策略研发实验室","summary":"量化策略研发实验室 — 让 Claude 按顶级机构角色分工（高盛策略架构师、文艺复兴回测引擎、Two Sigma 风控、Citadel Alpha 研究、Jane Street 做市、AQR 因子模型...共 15 个角色）系统性地设计、验证、风控、执行量化交易策略。当用户要求设计量化策略、做回测、构建因子、风...","description":"---\nname: quant-research-lab\ndescription: \"量化策略研发实验室 — 让 Claude 按顶级机构角色分工（高盛策略架构师、文艺复兴回测引擎、Two Sigma 风控、Citadel Alpha 研究、Jane Street 做市、AQR 因子模型...共 15 个角色）系统性地设计、验证、风控、执行量化交易策略。当用户要求设计量化策略、做回测、构建因子、风控建模、策略优化、执行算法设计时触发。用户可能提到：量化策略、回测、因子、alpha 信号、风控、仓位管理、做市、统计套利、配对交易、宏观交易、TWAP、VWAP、投资组合优化、交易系统架构。\"\n---\n\n# quant-research-lab — 量化策略研发实验室\n\n## 角色注册表\n\n| ID | 角色 | 机构 | 文件 | depends_on | complexity | Phase |\n|:---|:---|:---|:---|:---|:---|:---|\n| 01 | 策略架构师 | Goldman Sachs | roles/01-gs-strategy-architect.md | - | high | 1 |\n| 02 | 回测引擎 | Renaissance Technologies | roles/02-rentec-backtest-engine.md | 01 | normal | 1 |\n| 03 | 风控经理 | Two Sigma | roles/03-twosigma-risk-manager.md | 01 | normal | 1 |\n| 04 | Alpha 研究员 | Citadel | roles/04-citadel-alpha-researcher.md | - | high | 1 |\n| 05 | 做市引擎 | Jane Street | roles/05-js-market-maker.md | 01 | normal | 3 |\n| 06 | 因子模型 | AQR | roles/06-aqr-factor-builder.md | 02 | normal | 2 |\n| 07 | 统计套利 | D.E. Shaw | roles/07-deshaw-stat-arb.md | 01 | normal | 2 |\n| 08 | 宏观策略 | Bridgewater | roles/08-bridgewater-macro.md | 01 | normal | 3 |\n| 09 | 数据管道 | Bloomberg | roles/09-bbg-data-pipeline.md | - | normal | 2 |\n| 10 | 执行算法 | Virtu | roles/10-virtu-execution.md | 01 | normal | 1 |\n| 11 | ML 研究员 | Point72 | roles/11-point72-ml-researcher.md | 01 | high | 3 |\n| 12 | 组合优化 | Man Group | roles/12-man-portfolio-optimizer.md | 01,02,03,06 | normal | 2 |\n| 13 | 交易系统 | Millennium | roles/13-millennium-trading-system.md | 10,12 | normal | 2 |\n| 14 | 因子回测 | Dimensional | roles/14-dimensional-factor-backtest.md | 01 | normal | 3 |\n| 15 | 合规框架 | Goldman Sachs | roles/15-gs-compliance.md | 13 | normal | 3 |\n\n## 使用方式\n\n### 触发 Skill\n\n**自然语言**（推荐）：直接描述量化需求，Skill 自动激活。例如：\n- \"帮我设计一个费率套利策略\"\n- \"做一下这个策略的回测\"\n- \"优化入场信号\"\n- \"启动量化流水线\"\n\n**显式加载**：`/quant-research-lab`\n\n### 操作指令（Skill 加载后使用自然语言）\n\n| 你说 | 行为 |\n|:---|:---|\n| \"启动流水线\" / \"pipeline\" / \"跑全流程\" | 展示轨道选择菜单，用户选择后启动对应 Pipeline |\n| \"因子流水线\" / \"因子挖掘\" / \"执行流水线\" / \"宏观流水线\" / \"套利流水线\" / \"ML流水线\" / \"做市流水线\" | 直接启动指定轨道 Pipeline |\n| \"全量流水线\" / \"完整流水线\" | 启动全部 15 角色完整流程 |\n| \"从角色 03 恢复\" / \"继续流水线\" | 从角色 NN 断点恢复（需 state 文件存在） |\n| \"从角色 02 重新执行\" / \"重跑风控\" | 丢弃 NN 及之后输出，从 NN 重新开始 |\n| \"用高盛角色\" / \"做回测\" / \"风控分析\" / \"alpha 研究\" / \"执行算法\" | 单独触发某个角色（Toolbox 模式） |\n| \"结合上次结果做回测\" | 单独触发 + 注入最近完成角色的上下文 |\n| \"流水线进度\" / \"status\" | 查看进度 |\n| \"重置流水线\" / \"reset\" | 清空状态重新开始 |\n\n## 编排逻辑\n\n### Step 0: 收集上下文\n\n当 Skill 被激活时（通过自然语言触发或 `/quant-research-lab` 显式加载）：\n\n1. **读取角色注册表**获取可用角色列表（从本文档 `## 角色注册表` 表格中解析 ID、角色名、文件名、depends_on、complexity、Phase）\n2. **检查 `state/research-context.md` 是否存在**：\n   - **不存在** → 新建，写入初始模板（含 YAML frontmatter 和空角色输出区）\n   - **存在且 `status: in-progress`** → 提示用户可从断点恢复：`检测到未完成的 Pipeline（{pipeline_id}），已完成角色：{completed_roles}。说\"从角色 {next_recovery} 恢复\"即可继续。`\n3. **如果是新 Pipeline，向用户确认 3 个必填项**：\n   - 交易市场/标的（`{user_market}`）\n   - 可用资金规模（`{user_capital}`）\n   - 当前最想解决的问题（`{user_focus}`）\n   将答案填入 state 文件的 `## 项目上下文` 区\n\n### Toolbox 模式：触发单个角色\n\n触发方式：用户说\"用高盛角色\"、\"做回测\"、\"风控分析\"、\"alpha 研究\"、\"执行算法\"等，或按角色名/关键词匹配\n\n1. **匹配角色**：在注册表中按角色名称（如\"回测\"）或文件名（如\"backtest\"）模糊匹配，找到对应的 ID、文件路径和 depends_on\n2. **加载模板**：Read `roles/{NN}-{role}.md`，获取角色的完整 prompt 模板\n3. **收集上下文**：\n   - 如 state 文件无项目上下文 → 向用户询问 `{user_market}`, `{user_capital}`, `{user_focus}`\n   - 如用户说\"结合上次结果\"或提到需要前面角色的上下文 → 从 state 文件提取最近完成角色的关键参数层和推理摘要层作为 `{upstream_params}` 和 `{upstream_summary}`\n   - 如 `depends_on` 字段非空 → 从 state 文件中提取依赖角色的输出，注入为 `{upstream_params}` 和 `{upstream_summary}`\n   - 如项目存在 `CLAUDE.md` → 提取架构约定注入 `{project_architecture}`\n4. **替换占位符**：将收集到的值替换模板中的 `{user_market}`, `{user_capital}`, `{user_focus}`, `{upstream_params}`, `{upstream_summary}`, `{project_architecture}`\n5. **Dispatch subagent**：使用 Agent tool，`subagent_type: \"general-purpose\"`，`model: \"sonnet\"`（注册表中 `complexity: high` 的角色使用 `model: \"opus\"`），注入替换后的完整 prompt\n6. **质量门检查**：subagent 完成后，解析输出中的 `[QAGATE]...[/QAGATE]` 块（见下方\"质量门检查\"）。有异常 → 追加标记（`[输出不完整]`, `[数值异常]` 等），必要时提示用户决定（重做 / 接受 / 手动修复）\n7. **写入 state 文件**：按格式追加角色输出到 `state/research-context.md`：\n   ```\n   <!-- ROLE_OUTPUT_START:{NN} -->\n   ### {NN} {角色名} ✅\n   [subagent 输出内容]\n   <!-- ROLE_OUTPUT_END:{NN} -->\n   ```\n   更新 frontmatter：`current_role_id`, `completed_roles`, `next_recovery`\n8. **展示摘要**：向用户展示 1-2 行摘要 + 质量标记\n9. **提示下一步**：扫描注册表中 `depends_on` 包含当前角色 ID 且 Phase 已实现的角色，提示：`下一步建议：用\"{next_role}\"角色，或说\"从角色 {next_NN} 启动流水线\"`\n\n### Pipeline 模式：启动场景流水线\n\nPipeline 是 Toolbox 的序列化封装，**按预设轨道（Track）**串行调用角色，而非跑全部 15 个。每个角色的执行复用 Toolbox 步骤 2-7（加载模板 → 收集上下文 → 替换占位符 → dispatch subagent → 质量门 → 写入 state）。\n\n**触发方式**：用户说\"启动流水线\"、\"pipeline\"、\"跑全流程\"，或指定轨道名如\"因子流水线\"、\"执行流水线\"。也支持\"从角色 NN 恢复\"、\"从角色 NN 重新执行\"。\n\n#### Pipeline 轨道定义\n\n15 个角色构成了一个有向无环图（DAG），而非一条线。不同策略场景走不同的角色序列：\n\n| 轨道名称 | 触发关键词 | 角色序列 | 预估耗时 | 适用场景 |\n|:---|:---|:---|:---|:---|\n| **核心流水线**（默认） | \"启动流水线\" / \"pipeline\" | 01→02→03→04→10 | ~15min | 标准策略：设计→回测→风控→Alpha→执行 |\n| 因子流水线 | \"因子流水线\" / \"因子挖掘\" | 01→02→06→14→12 | ~20min | 因子研究：构建→回测→因子验证→组合 |\n| 执行流水线 | \"执行流水线\" / \"交易系统\" | 01→10→13→15 | ~18min | 系统落地：执行算法→交易系统→合规 |\n| 宏观流水线 | \"宏观流水线\" / \"宏观策略\" | 01→08→03→12 | ~18min | 宏观策略+风控+组合配置 |\n| 统计套利流水线 | \"套利流水线\" | 01→07→02→10 | ~18min | 配对交易/协整策略 |\n| ML 流水线 | \"ML流水线\" / \"机器学习\" | 01→11→02→03 | ~18min | ML 驱动策略研发 |\n| 做市流水线 | \"做市流水线\" | 01→05→10→13 | ~18min | 做市系统设计 |\n| 全量流水线 | \"全量\" / \"完整流水线\" | 01→02→03→04→06→07→08→09→10→11→12→13→14→15 | ~40min | 端到端完整流程（慎用，建议分轨道跑） |\n\n> **轨道设计原则**：每个轨道以 01（策略架构师）为根节点，按依赖拓扑序串联。独立角色（09 数据管道）可按需单独 Toolbox 触发。用户也可以自定义轨道：\"走 01→04→11 的流水线\"——编排层按指定 ID 列表执行即可。\n\n#### 串行调度流程\n\n1. **选择轨道**：\n   - 用户说\"启动流水线\" / \"pipeline\" 未指定轨道 → 展示轨道选择菜单：`请选择流水线轨道：1)核心流水线(默认) 2)因子 3)执行 4)宏观 5)套利 6)ML 7)做市 8)全量。直接说编号或轨道名即可。`\n   - 用户指定了轨道关键词（如\"因子流水线\"）→ 匹配对应轨道\n   - 用户说\"全量\" → 走全量流水线轨道\n   - 用户自定义序列（如\"走 01→04→11\"）→ 解析 ID 列表作为自定义轨道\n2. **确定起始角色**：\n   - 用户说\"从角色 NN 恢复\" → 从所选轨道中 state 文件的 `current_role_id` 开始（断点恢复逻辑见下方）\n   - 用户说\"从角色 NN 重新执行\" → 先丢弃 NN 及之后角色的输出（见下方\"重新执行逻辑\"），再从 NN 开始\n   - 默认 → 从轨道的第一个角色开始\n3. **生成执行序列**：从起始角色到轨道末尾，序列生成后向用户展示：`轨道: {track_name}。执行序列: [01, 02, 03, 04, 10]（共 5 个角色）。预计 {estimate} 分钟。确认开始？`\n4. **逐角色串行执行**：对序列中每个角色：\n   a. 检查 state 文件是否已有该角色输出（搜索 `ROLE_OUTPUT_START:{$id}` 标记）→ 有则跳过\n   b. 执行 Toolbox 步骤 2-7（加载模板 → 收集上下文 → 替换占位符 → dispatch subagent → 质量门检查 → 写入 state）\n   c. 上下文自动注入：当前角色完成后，提取 QAGATE 中的 `downstream_fields` 和 `core_conclusion` 注入下一个角色\n   d. 展示摘要 + 进度：`[{i}/{total}] {id} {角色名} 完成 [QAGATE: PASS|WARN ...]`\n   e. **用户中断处理**：用户可随时说\"暂停\"。完成当前角色后写入 state，更新 frontmatter（含 `pipeline_track`），展示恢复命令\n5. **全部完成后**：设置 frontmatter `status: complete`。提示：`轨道 {track_name} 完成（{total}/{total}）。如需落地为生产代码，说\"实现这个\"。也可继续其他轨道，如\"因子流水线\"。`\n\n#### 断点恢复（\"从角色 NN 恢复\"）\n\n1. 读取 state 文件的 YAML frontmatter，提取 `pipeline_track` 轨道名\n2. 验证 NN 属于当前轨道且 `ROLE_OUTPUT_START:NN` 标记存在\n3. 如不包含：提示 `角色 {NN} 不在当前轨道 {pipeline_track} 中或无输出记录。`\n4. 确定下一个待执行角色：当前轨道中 ID 序列里排在 NN 之后的第一个角色\n5. 更新 frontmatter，从该角色继续执行\n\n#### 重新执行（\"从角色 NN 重新执行\"）\n\n1. 计算丢弃集合：`D = {NN} ∪ {当前轨道中排在 NN 之后的所有角色 ID}`\n2. 对 D 中每个角色 ID，在 state 文件中删除 `<!-- ROLE_OUTPUT_START:{$id} -->` 至 `<!-- ROLE_OUTPUT_END:{$id} -->` 块\n3. 从 frontmatter 的 `completed_roles` 中移除 D 中的 ID\n4. 展示丢弃摘要并确认，从 NN 重新开始\n\n#### Pipeline 中的质量门集成\n\nPipeline 模式下每个角色完成后，自动复用 `### 质量门检查` 中的检查流程：\n\n1. 搜索 subagent 输出中的 `[QAGATE]...[/QAGATE]` 块\n2. 执行 3 项检查（必填字段 / 数值合理性 / 双重签名）\n3. 检查结果追加标记到角色输出块的末尾：`[QAGATE 结果: PASS|WARN ...]`\n4. 展示给用户时包含标记：`[{i}/{total}] {id} {角色名} 完成 [QAGATE: PASS]`\n5. **异常处理**：如标记含 WARN 或 FAIL：\n   - 默认自动继续到下一个角色，但在输出中标注异常\n   - 如用户说\"严格模式\"或触发时加 `--strict` → 遇到 WARN/FAIL 时暂停，提示用户选择：`质量门警告 [{角色名}]: {标记列表}。选择: (C)ontinue 忽略继续 / (R)etry 重新执行当前角色 / (A)bort 中断 Pipeline`\n   - 用户未回应时默认选择 (C)ontinue\n\n### 质量门检查\n\n每个角色 subagent 完成后，编排层从 `[QAGATE]...[/QAGATE]` 块提取数据进行以下检查：\n\n| 检查项 | 适用 | 检查方式 | 不通过时 |\n|:---|:---|:---|:---|\n| 必填字段 | 全部 | `[QAGATE]` 块存在 + 自由文本含核心结论/关键参数/传给下游的字段 | 标记 `[输出不完整]` |\n| 数值合理性 | 数值角色 | 默认模式：Sharpe < 50, MaxDD > -99% | 标记 `[数值极端异常]` |\n| 双重签名 | 数值角色 | method_signature 和 data_signature 均非空 | 标记 `[缺少签名]` |\n\n**检查流程**：\n\n1. 在 subagent 输出中搜索文本 `[QAGATE]` 和 `[/QAGATE]`（字面字符串匹配，非 markdown 解析）\n2. 缺失 `[QAGATE]` 块 → 标记 `[缺少QAGATE]`，跳过后续检查\n3. 提取 QAGATE 块内字段（按 `key: value` 或 YAML 格式解析）：\n   - `core_conclusion` / `核心结论` — 自由文本字段，非空即通过\n   - `key_params` / `关键参数` — 含关键参数列表即通过\n   - `downstream_fields` / `传给下游` — 含下游字段即通过\n   - `method_signature` — 方法签名，数值角色必须非空\n   - `data_signature` — 数据签名，数值角色必须非空\n4. 数值合理性仅在角色标签含\"回测/风控/因子/优化\"时检查\n5. 检查结果追加到 subagent 输出末尾，展示给用户：`[QAGATE 结果: PASS | WARN 输出不完整]`\n\n### 状态管理\n\n**`state/research-context.md`** 是 Pipeline 的单一真相源。格式：\n\n```yaml\n---\npipeline_id: {project}-{date}\npipeline_track: \"{track_name}\"\nstatus: in-progress | complete\ncurrent_role_id: \"{NN}\"\ncompleted_roles: [\"01\", \"02\"]\nnext_recovery: \"{next_role_id in track}\"\ncreated_at: {ISO 8601}\nproject: {basename}\n---\n```\n\n**Toolbox 模式下的行为**：\n- 仅追加已完成角色的输出块（`ROLE_OUTPUT_START/END` 分隔），不修改 `status`\n- 更新 `current_role_id` 为最近完成的角色 ID\n- 更新 `completed_roles` 追加当前角色 ID\n- 更新 `next_recovery` 指向下一个 `depends_on` 包含当前角色 ID 的角色\n- 当所有 Phase 1-3 注册表角色完成时，设置 `status: complete`\n\n**初始模板**（新 Pipeline 时创建）：\n\n```\n---\npipeline_id: {project}-{date}\npipeline_track: \"{track_name}\"\nstatus: in-progress\ncurrent_role_id: \"\"\ncompleted_roles: []\nnext_recovery: \"\"\ncreated_at: {now}\nproject: {project_basename}\n---\n\n## 项目上下文\n- **交易市场/标的**：{user_market}\n- **可用资金规模**：{user_capital}\n- **当前核心问题**：{user_focus}\n\n## 角色输出\n<!-- 每个角色完成后由编排层追加 -->\n```\n\n**Pipeline 模式下的行为**：见上方 `### Pipeline 模式`。\n\n### 查看进度（用户说\"进度\" / \"status\"）\n\n1. 检查 `state/research-context.md` 是否存在\n2. 如 state 文件不存在或 `status: ready` → 提示：`尚无活跃 Pipeline。说\"启动流水线\"开始新 Pipeline。`\n3. 如 state 文件存在：\n   - 读取 YAML frontmatter，提取 `pipeline_id`, `pipeline_track`, `status`, `current_role_id`, `completed_roles`, `next_recovery`, `project`\n   - 展示进度摘要：\n     ```\n     ## Pipeline: {pipeline_id}\n     - 轨道: {pipeline_track}\n     - 状态: {status}\n     - 项目: {project}\n     - 已完成角色 ({len(completed_roles)}): {completed_roles}\n     - 当前角色: {current_role_id}\n     ```\n   - 如 `status: in-progress`，追加恢复提示：`恢复命令：说\"从角色 {next_recovery} 恢复\"`\n   - 如 `status: complete`，追加：`轨道 {pipeline_track} 已完成。可继续其他轨道，如\"因子流水线\"。`\n\n### 重置（用户说\"重置\" / \"reset\"）\n\n1. 检查 `state/research-context.md` 是否存在 → 不存在则提示：`尚无活跃 Pipeline，无需重置。`\n2. 如 state 文件存在，向用户确认：`确认重置 Pipeline \"{pipeline_id}\"？这将清除所有角色输出。输入 yes 确认。`\n3. 用户确认 `yes` 后：\n   - **保留上下文模式**（默认）：将 state 文件重置为初始模板，保留 `## 项目上下文` 中的用户提供的信息（`{user_market}`, `{user_capital}`, `{user_focus}`），清空 `## 角色输出` 区所有 `ROLE_OUTPUT_START/END` 块，重置 frontmatter 为初始状态（`status: ready`, `current_role_id: \"\"`, `completed_roles: []`, `next_recovery: \"\"`）\n   - **完全清除模式**（用户说\"硬重置\"）：直接删除 state 文件，下次触发时自动创建全新模板\n4. 重置完成后提示：`Pipeline 已重置。说\"启动流水线\"重新开始。`\n\n## 实现状态\n- Phase 1: ✅ 已实现（01, 02, 03, 04, 10）\n- Phase 2: ✅ 已实现（06, 07, 09, 12, 13）\n- Phase 3: ✅ 已实现（05, 08, 11, 14, 15）\n","tags":{"latest":"1.0.1"},"stats":{"comments":0,"downloads":557,"installsAllTime":2,"installsCurrent":2,"stars":1,"versions":2},"createdAt":1777871013098,"updatedAt":1778492842520},"latestVersion":{"version":"1.0.1","createdAt":1777988905601,"changelog":"quant-research-lab 1.0.1\n\n- Added .gitignore file to define files and directories to be ignored by Git.\n- Added LICENSE file to specify the project's licensing terms.\n- No other changes to source code or features in this version.","license":"MIT-0"},"metadata":null,"owner":{"handle":"yili1992","userId":"s17612wey0k7hn9mryf4xn4kbs862ktp","displayName":"易陆","image":"https://avatars.githubusercontent.com/u/3176589?v=4"},"moderation":null}