docs: add 2026 WorldQuant research knowledge base

This commit is contained in:
yuxuanhui
2026-09-07 20:03:16 +08:00
parent 647621e5ea
commit 25ecd0a6c5
35 changed files with 3182 additions and 0 deletions
@@ -0,0 +1,35 @@
# 2026 工程经验:可恢复、可对账、可核验
只引用今年帖子,不安装或执行其代码。这里整理职责与故障模式,不宣称项目已经实现。
## 1. 请求、业务结果与配额分层
今年动态并发帖建议成功后渐增、429 时降低并发并退避;它是示例策略,不是平台配额保证。来源:[【代码分享】遇到429时,我用代码写了个一套管理机制来动态控制并发数](https://support.worldquantbrain.com/hc/en-us/community/posts/39224259294999)(2026-03-23)。每日 simulations 使用量查询见 [获取 WorldQuant 每天剩余回测次数、已回测次数](https://support.worldquantbrain.com/hc/en-us/community/posts/43058251853847)(2026-08-28)。调度器应以实际响应、Retry-After 和可取得的当前配额为依据,而不是固定并发数字。
认证失败、限流、暂时网络错误、任务业务失败分别处理;提交类请求出现未知结果时先对账,不能盲目重发。认证复用和限流目标是减少冗余请求,不是用多账号/多会话规避额度。
## 2. 长任务保存状态
checkpoint CSV 与报告帮助批处理断点续跑,来源:[【代码工具分享】让 Alpha 回测告别手工时代:一条命令跑完整个研究闭环](https://support.worldquantbrain.com/hc/en-us/community/posts/41551045362071)(2026-06-28)。跨 API/网页的台账用 RESERVED 防止重复派发,来源:[一个很小但很有用的工具:Alpha Backtest Ledger,避免重复回测](https://support.worldquantbrain.com/hc/en-us/community/posts/40857367883159)(2026-05-31)。
CSV 本身不保证并发原子性。需要记录任务身份、租约或领取时间、simulation/alpha ID、最后成功阶段和 unknown 状态恢复。规范化公式和完整 settings 参与去重;不要盲目统一代码大小写,可能改变字段或字符串含义。
## 3. 缓存有完整性清单
只记录最后更新时间不够;缺页或遗漏 Alpha 会低估相关性。来源:[本地check ppc的完整方法及代码,助你GLB PPA开发一臂之力](https://support.worldquantbrain.com/hc/en-us/community/posts/43085454784535)(2026-08-29)。缓存应保存数据池类型、分页完成状态、去重数量、失败页面、日期区间和采集版本。
浏览器向 Python 传递缓存的社区方案强调字段校验。来源:[分享一个连接插件中prodmemo和python的一个小脚本,帮助大家可以将页面上缓存的pc拿到python里用](https://support.worldquantbrain.com/hc/en-us/community/posts/42585946296855)(2026-08-09)。应验证输入 schema 和对象范围,不能把未经核验的缓存直接用于提交判断。
## 4. 研究反馈与 OS
将 OS 的检查字段同步到本地,而不只看 IS。帖子提出检查 `COMPENSATED_ALPHA` 的 WARNING;是否可计费/配点要按当时平台对象核验。来源:[【QUANT101】什么是 Non-Compensated Alpha? 如何筛选 Compensated Alpha?](https://support.worldquantbrain.com/hc/en-us/community/posts/39354351739415)(2026-03-28)。
流水线可以贯通生成、模拟、去重、相关检查和 OS 回流;社区 MCP 架构的存在不证明其收益有效。来源:[Pipeline MCP 深度版:面向多样性、高质量、低相关性 Alpha 持续生产的编排架构实践](https://support.worldquantbrain.com/hc/en-us/community/posts/39868267753623)(2026-04-20)。研究任务完成与外部提交应分开授权。
## 5. 数据获取与审计
今年帖子介绍认证后通过 Zendesk API 读取论坛资料。来源:[Python纯代码获取论坛内容(不使用任何无头浏览器等操作)](https://support.worldquantbrain.com/hc/en-us/community/posts/40458012001815)(2026-05-14)、[通过 Zendesk API 直接获取 WQB 平台资源 — 告别浏览器依赖](https://support.worldquantbrain.com/hc/en-us/community/posts/40531705016855)(2026-05-17)。本次实际使用这一可访问接口完成目录与评论读取;只保存需要的来源目录和归纳,不把会话 Cookie 写入知识库。
## 建设次序
先补台账和完整结果保存,再做断点恢复与配额控制;之后建设相关性缓存完整性检查、结构化失败回流,最后扩大候选生成。架构建议见 [工程路线](architecture.md)。没有修改本项目运行代码、数据库或全局代理规则。
@@ -0,0 +1,33 @@
# 专题精读:02 API、模板、自制数据与本地相关性合集
来源:[02-进阶学习合集](https://support.worldquantbrain.com/hc/en-us/community/posts/43179259800471)。发布 2026-09-02,采集版本更新于 2026-09-07。本轮完整重读正文;快照中评论为 0。
## 这是一张研究工具链目录
目录分为 Machine Alpha 基础、数据推荐、模板、代码工具四部分。主帖明确提醒模板受作者当时理解影响,需要继续修正;因此应把其定位为候选入口,而不是已经验证的策略库。
其 **47 个去重后的直接论坛帖子链接全部创建于 2026 年之前**。按用户范围,这次只核对链接日期,排除旧帖研究内容。不能把历史 wqb、多模拟或本地相关性工具的标题当成 2026 年最新功能证明。
## 四部分怎样转成研究问题
| 目录板块 | 可以提炼的问题 | 需要取得的证据 |
| --- | --- | --- |
| Machine Alpha / MCP | 如何把数据、表达式、模拟、检查串起来 | 当前工具 schema、输入输出、业务状态与配额 |
| 数据推荐 / 字段相似性 | 相似描述是否能产生替代字段候选 | 类型、单位、频率、可得时间、覆盖和相关性 |
| 模板与灵感 | 哪些经济结构值得测试 | 一句机制、主辅字段角色、最小表达式与消融 |
| 稳健性 / PnL / 本地相关 | 怎样减少无效模拟与重复检查 | 完整缓存、口径校准、时间窗口与失败记录 |
这四项是阅读主帖后形成的研究建议;不据此声称某个链接工具的实现已通过核验。
## 需要保留的限制
1. **LLM 相似字段是检索结果,不是经济等价证明。** 同一描述可能对应不同区域、频率、财务口径或数据类型。参见 [数据与信号语义](../07-professional-knowledge/data-and-signal-semantics.md)。
2. **模板替换要改变研究问题,而不只是枚举名字。** 保留原始基线,区分同族重复和新信息,避免只增加搜索次数。
3. **“本地零误差”只可能在指定池和样本口径下验证。** Self、Prod、PPC 需要分开;未取得生产池不能靠个人缓存完整复现 ProdCorr。参见 [相关性优化](../08-alpha-optimization/portfolio-and-correlation.md)。
4. **“ValueFactor 预测器”是工具命名,不是官方 VF 公式。** 滚动三个月组 SA 的代理统计不能直接认定为个人 VF 或收入预测。
5. **多模拟能力要区分 Alpha 类型。** 不能因旧工具支持批处理就推断 Python Alpha 也支持 multi_sim;以 [Python Alpha](../02-ai-mining/python-alpha.md) 的当前已核查官方说明为准。
6. **PnL 形状筛选不能替代数据诊断。** 早期平坦、新近停更、结构性 regime 与覆盖缺失应分别判断;“厂字形”不应只按图形一刀切。
## 适合当前知识库的建设顺序
先做好 [台账与去重](experiment-ledger.md),再落实 [限流、断点、缓存完整性](2026-operating-lessons.md),随后加入 [按失败原因优化](../08-alpha-optimization/diagnostic-workflow.md),最后扩大模板生成和候选搜索。当前只完成资料整理,未安装 wqb 或部署提交器。
@@ -0,0 +1,30 @@
# 工程化路线:复用现有系统,逐步接入研究执行
本节是后续建设建议,不是本次实施记录。当前系统范围以 [项目方案](../../project-plan.md) 和 [验收记录](../../verification.md) 为准:平台只读同步、Alpha/PnL、本地记录已列为首期;回测、检查、平台回写与提交尚属后续。
## 值得补的工程模块
| 层 | 职责 | 对你的系统建议 |
| --- | --- | --- |
| 只读资料层 | 字段/算子元数据、论坛/官方文章、源版本 | 沿用统一认证与客户端;缓存按账户权限、地区、日期区分 |
| 研究台账 | 假设、输入 hash、父子实验、失败状态、预算 | 增量扩展 PostgreSQL,避免 CSV 充当并发锁 |
| 执行队列 | 配额、持久任务、轮询、退避、恢复 | 后续引入时把提交回测和等待结果分开;长 HTTP 请求不等于可靠任务 |
| 证据与决策 | 原始业务响应、简明摘要、状态、差异 | 前端/AI 默认读摘要,按 ID 下钻原文 |
| 分析层 | PnL、SC、同族识别、组合增量 | 先离线分析,再决定是否值得消耗平台 PC 检查 |
| Agent 入口 | CLI/MCP、schema、可观察步骤 | 共用业务接口,避免 Agent 直接写数据库或绕过状态机 |
## 社区工具怎样取舍
**wqb_cli 0.3.2** 强调可观察原语,保留请求、响应、状态码、等待过程和 artifacts;原帖仓库是 [untuitivist/wqb_cli](https://github.com/untuitivist/wqb_cli)。适合借鉴输入/输出契约和错误分类。本次未验证仓库版本、未安装,不将帖子版本称为当前最新版本。[[all alpha can do] wqb_cli 0.3.2 震撼发布:从零打造 Agent-Native 的 WorldQuant BRAIN 真实操作层](https://support.worldquantbrain.com/hc/en-us/community/posts/41706827651991)(发帖 2026-07-04,社区经验)。
**MCP bridge** 让多 IDE 共用服务,并用线程池隔离阻塞。其长请求超时、熔断和退避是设计样例;“零依赖”与实际使用 Starlette/Uvicorn 的描述冲突。更适合借鉴统一入口,不能直接视为已验证高可用。[从「 IDE的MCP挨个手动重启」到「一次配置,全部打通」:我的 BRAIN MCP 桥接架构分享](https://support.worldquantbrain.com/hc/en-us/community/posts/41856507417623)(发帖 2026-07-10,社区经验)。
**simulation wrapper** 与 **raw/decision** 把完整结果、进度、错误与对话摘要分开。评论还指出单批快照会覆盖历史、固定 JSON 路径可能静默产出 null。建议追加事件日志、版本化摘要 schema、保留明确的 unknown/pending;按 ID 关联完整表达式。[想让 Claude 通宵挖 alpha、早上只看结果?我加了一层 simulation wrapper](https://support.worldquantbrain.com/hc/en-us/community/posts/41363885291031)(发帖 2026-06-20,社区经验);[【工程优化】Agent 挖 Alpha 时 Token 黑洞:raw 留磁盘,对话只读 decision](https://support.worldquantbrain.com/hc/en-us/community/posts/42406158561943)(发帖 2026-08-02,社区经验)。
**本地因子库②** 展示本地 upsert、缓存和请求封装,但当时不少分页/指标/回测能力仍待完善。你的首期系统已有类似底座,无须为学习另维护一套数据库;作者 [Gist](https://gist.github.com/AshSwing/67219501b9b80b90a6c3b414eb3ad93f) 只作参考,未运行。[【Consultant 101】手把手教你搭建本地因子库 ②](https://support.worldquantbrain.com/hc/en-us/community/posts/39466506480663)(发帖 2026-04-02,社区经验)。
## 本次真实验证过的资料获取路线
本次通过 BRAIN authentication 得到 201,使用账户授权的 support SSO 后,论坛 HTML 返回 403,而支持站 Community API 返回 200;按 topic 分页取得今年帖子,并读取重点评论。它证明这条只读资料路线在本次账户和时点可行,不代表所有账户永久可用。
官方接口依据:[Zendesk Posts API](https://developer.zendesk.com/api-reference/help_center/help-center-api/posts)、[Post Comments API](https://developer.zendesk.com/api-reference/help_center/help-center-api/post_comments)。SSO、过期、分页、限流仍应统一处理;认证响应不得进入研究 artifacts。本次没有执行论坛帖子里的发帖/评论/点赞示例。
@@ -0,0 +1,27 @@
# 本地相关性与组合增量
## 先分清三种相关性
| 对象 | 本地可取得什么 | 不能据此推断 |
| --- | --- | --- |
| 候选互相关 | 自己拿到的两条候选 PnL | 它们与生产全池的最大相关 |
| Self-Correlation | 个人已提交池与候选的同口径 PnL | 任意本地相关都等于平台 SC |
| Production Correlation | 平台检查结果;本地可能只有不完整缓存 | 可以通过个人 PnL 完全复现 PC |
8 月帖子从 `/alphas/{id}/recordsets/daily-pnl` 取 date/pnl,截取 2020-01-01 后交易日,使用 Pearson;作者报告 6 对样本与平台最大误差 0.00004。这个样本规模与起始日不是永久口径保证。本次只读该研究,没有对你的 Alpha/PnL 重算。来源:[把 Self-Correlation 搬到本地:用 daily-pnl 精确复现平台口径(实测最大误差 0.00004)](https://support.worldquantbrain.com/hc/en-us/community/posts/42721824181271)(发帖 2026-08-14,社区经验)。
## 实现前需要校准的事项(建议)
1. 识别 recordset 的列名、频率与是否为日 PnL;累计 PnL 若误当日 PnL,会产生错误相关性。不能仅凭字段名猜测是否需差分。
2. 对齐交易日,明确缺失、停牌、零收益、窗口起止和最小重叠样本;不把缺失全部补零。
3. 同一批取数与平台抽查保持时点相近;记录已提交池的变化、退役/隐藏状态和真实比较范围。
4. 选不同类型/地区/相关性水平的样本做平台结果校准,保存差值;即使小样本误差很小,也只声明该范围一致。
5. 本地 SC 筛选之后仍需要平台 PC 与正式检查;不要用本地缓存规避限流或替代终验。
## 从“单条好”走向“组合多赚了什么”
先比较已有组合、加入候选、替换同族旧候选三种情景,在相同时段、缩放与成本下看收益、回撤、相关性和区域分布。候选单独 Sharpe 高,不保证加入后更好。
可将高相关候选构成冲突图,在各同族/相关簇内选择代表;但不同阈值、样本期和目标函数会改变结果。最大独立集等算法是候选筛选工具,不是收益保证。对不同数据集也计算实际 PnL 相关,不能凭名称认定正交。
Osmosis 的短滚动窗口更容易波动,详见 [组合与 Osmosis](../04-platform/portfolio-osmosis.md)。
@@ -0,0 +1,29 @@
# 实验台账与去重
社区的 Backtest Ledger 将 API 和人工回测统一登记,以公式和完整设置做指纹,并引入 RESERVED 阶段防止重复派发。其 CSV/Excel MVP 很适合说明状态模型,但 CSV 写入本身不提供数据库事务与并发互斥。来源:[一个很小但很有用的工具:Alpha Backtest Ledger,避免重复回测](https://support.worldquantbrain.com/hc/en-us/community/posts/40857367883159)(发帖 2026-05-31,社区经验)。
## 建议的数据契约
| 对象 | 必须记录 |
| --- | --- |
| 假设 | hypothesis_id、来源、机制、反例、预定评价窗口 |
| 实验输入 | 语言、完整表达式或代码、字段、完整 settings、代码/算子/数据版本、父实验 |
| 执行 | input_hash、job_id、平台 simulation_id、alpha_id、状态、时间、重试原因 |
| 证据 | 原始业务响应引用、检查原值/阈值/状态、分年指标、PnL 时段、成本与覆盖 |
| 决策 | candidate/repair/reject/pending、理由、下一步、已用预算、停止条件 |
指纹至少涵盖规范化代码与完整设置;Python 还要包含依赖/代码版本与状态初始化语义。保留原始输入,避免字符串清洗改变含义。研究去重、平台 Alpha ID 幂等同步、提交防重是三个不同问题。
建议状态:planned → reserved → running → succeeded/failed/cancelled/unknown;检查状态独立存储。进程崩溃后的 reserved 需要租约/恢复策略。若平台已经接收任务但本地没拿到结果,进入 unknown 并对账,不能盲目重发。数据库唯一约束与事务解决竞争条件,重试日志解释实际发生了什么。
## SuperAlpha 的两个指纹
“selection + combo + settings”只能识别同一请求,无法识别两种 selection 实际选中了同一个池;同一 selection 随时间也会得到不同池。
建议同时记录请求指纹与实际组件指纹:对实际 alpha_ids 排序,联合 combo、影响结果的 settings 及选择时间生成版本指纹。原帖通过 super-selection 取得组件,这个步骤属于后续平台调用,本次未触发。来源:[SuperAlpha 去重的一点小坑:只看 selection 可能还不够](https://support.worldquantbrain.com/hc/en-us/community/posts/40936186021271)(发帖 2026-06-03,社区经验)。
## 摘要必须保留的信息
摘要中保留 alpha_id、input_hash、完整 settings 的引用、所有非 PASS 检查、检查缺失标记、数据/费用状态,以及与上一轮的差异。显示截断表达式仅用于辨认;不能用截断文本复现或去重。评分候选时,PENDING/unknown 单列,不得自动升格。
以上是建设建议,未修改数据库 schema、任务队列或全局 Agent 规则。