投资有风险,入市需谨慎;如自行进行真实交易,风险与责任自负。
背景:一条漂亮曲线背后的三个坑
一个人写量化策略,最常见的剧本是这样的:花两天抓数据、挖因子,跑出一条年化 40%、最大回撤 8% 的雷霆净值曲线,兴奋地截图发到群里;第三周实盘,曲线掉头向下。
代码大概率没写错。问题在于:这条曲线到底是被发现的,还是被调出来的?
三个人一起做,也未必更好。A 改了因子的标准化口径,B 还在用旧特征训练模型;C 已经把策略部署上线了,而 A 两天前刚迭代完的因子版本根本没同步过去。到路演那天,没人说得清线上跑的到底是哪一版策略,也说不清那个因子到底还灵不灵。
这道题想让你和队友一起,搭一条完整的“研究 → 部署 → 协作”链路。我们关心的不只是策略赚不赚钱,而是这条链路是否可复现、可证伪、可协作、可交付给别人用。
任务要求
自选一个规模适中的标的池,完成从数据到交付的完整链路。技术选型不限。方案可二选一,也可自带方案(需提前说明理由):
- 沪深 300 或中证 500 成分股日频多因子选股。
- ETF 轮动。
Lv1:数据、因子、策略,以及一次诚实的回测
1. 数据层
提供可一键复现的获取脚本(只交一份 CSV 不算完成)。必须处理:复权、停牌、退市 / 新上市、ST、涨跌停,以及财报的公告日而非报告期。
2. 因子层
至少 3 个因子,且分属不同类别(价值 / 动量 / 波动 / 流动性 / 质量 / 情绪 / 资金流等)。同时,每个因子要讲得出经济学或行为金融学上的道理——它为什么会让别人出更高 / 更低的价?是风险补偿,还是行为偏差?
此外,需要完成:
- 单因子检验:IC / RankIC、ICIR、t 值、分层回测单调性,以及至少 2 个持有期下的 IC 衰减。
- 共线性处理:给出相关系数矩阵,说明合成方式(等权 / IC 加权 / 正交化 / 回归残差)。
3. 策略层
明确规则链:信号 → 打分 → 选股 → 权重 → 调仓频率 → 监控和止损方式。
4. 回测层
数据必须完成严格切分:样本内(选参数)/ 样本外(只用一次)。
回测指标:年化收益、年化波动、夏普比率(注明无风险利率)、最大回撤、Calmar、换手率、胜率、盈亏比、相对基准超额、信息比率 IR、Alpha / Beta。
画出回撤区间,并解释最大的那次回撤当时发生了什么。
Lv2:让策略自我学习与迭代
先界定清楚你做的是哪一种:
- 滚动再训练:walk-forward 重训练,必须带 purge / embargo,防止标签重叠泄漏。
- 自适应:波动率目标仓位、regime 识别(牛 / 熊 / 震荡)后切换参数或仓位。
- 因子池进化:IC 监控 → 降权 / 淘汰 / 新增(含遗传规划等自动挖因子手段)。
尝试一种或多种方案,完成回测,和 Lv1 的静态策略做同条件对比,分析迭代带来的是真实 alpha,还是更精致的过拟合。
对于过拟合的判断,可以通过 Deflated Sharpe(缩减夏普比率)来进行评估。
Lv3:部署上云,实现一个能够辅助你交易决策的 Agent
相对于直接使用 QMT 等量化交易平台,对于低频策略,同学们作为散户研究者,可以考虑通过云端推送方案,由人手动在交易软件中操作,来规避资质验证和减少手续费。可以尝试在 QQ、飞书或者网页上部署一个 Agent,用来运行你的策略。
需要有如下功能:
- 自动运行:每日收盘后自动拉数据 → 算因子 → 出信号 → 存档 → 推送。
- 自然语言交互,至少能回答这几类问题:
- 今天的信号是什么?
- 为什么这次要调仓?
- 某个标的为什么被剔除?
- 近一个月表现 vs 基准如何?
- 当前组合的风险暴露在哪?
- 交易记录:有能力记录你已经完成的交易。
除此之外,也可以尝试让这个 Agent 更复杂一些,例如:
- 记忆:能记住用户的偏好与历史否决。
- 人在闭环:人可以否决建议;Agent 要记录、解释,且否决能回流到策略或展示层。
- 或者其他你能想到的有趣内容。
Lv4:一个让同行愿意来挑刺的网页社群
先分清三种网页:
- 给老板看的大屏:绿多红少,收益越大越好 → 目标是说服。
- 给资金方看的产品页:净值曲线 + 认购按钮 → 目标是转化。
- 给同行看的研究主页:参数、局限、怎么复现、怎么反驳我 → 目标是被检验。
为什么量化研究特别需要社群?因为一个人验证一个因子,天花板极低:你的样本外只有一段历史,你的解释只有一种视角。而“这个因子有效”是一个需要多个独立样本 + 多个反驳视角才能勉强成立的命题。所以社群的价值不是热闹,是把一个不可证伪的结论,变成可以被别人检验的结论。
功能模块可以尝试以下内容:
1. 策略展示
即你们自己正在运行的策略,包括:
- 版本号、universe、频率、参数、成本假设、上一版改了什么。
- 净值 / 回撤曲线,样本内外分色,亏损区间高亮。
- 归因:收益来自哪个因子 / 行业 / 择时。
- 参数敏感性热力图。
- 已知局限与失效场景。
- 一键复现。
2. 因子分享
即分享你们或者其他讨论者创建的因子。最少应包含:
- 名称、定义式、样本区间等基础数据。
- 表现。
- 点赞数、引用数、复现成功率等社群数据。
- 提交人、时间戳存证。
可以尝试一个有趣的设计——延迟公开:提交者可选择“存证但暂不公开细节”,系统记录内容哈希与时间戳,3 / 6 / 12 个月后自动公开。既保护优先性,又不阻碍长期共享。
对于已经失效的因子,也可以尝试制作一个失效案例库。
3. 研究者注册及研究者主页
其他的研究者可以在网页上注册成为会员,上传并记录提交的因子、做的预测、复现记录等。你们可以尝试制作一个用户系统,并管理用户上传的内容。
4. 预测登记与校准
注册加入社群后,任何人可登记一条带时间戳的预测,例如:“未来 3 个月,沪深 300 内动量因子 RankIC 将低于 0.01,理由是……”。
到期由系统自动拉真实数据结算,给出命中 / 未命中。每人主页挂一张校准曲线(Calibration Curve):你说 80% 把握的事,实际发生了多少次?
社区排行看校准误差(Brier Score)最低、登记次数最多,不看谁的曲线最漂亮。
5. 锚定式讨论
讨论必须挂在具体对象上:某个因子、某条预测、某段回撤、某次参数改动。
三种发言类型:复现成功、复现失败、提出替代解释。其中,“复现失败”可上传自己的结果;因子卡直接显示复现次数与成功率。
额外补充
Lv1–Lv3 的内容,一面做了量化福利题第二个题的同学,应该可以在二面前全部完成。顺利的话,甚至你们的 Agent 可以在十一假期以后直接上模拟盘开始跑了。
希望你们的策略不是一个偷看了样本外数据、反复调参到过拟合、只为得到一条漂亮曲线的版本。
Lv4 的内容,是为组内非量化方向同学准备的。
- 如果你是网页开发,我希望能看到你的页面实现、后台的数据库设计,以及这个社群能容纳多少注册用户、支持多少人同时讨论。
- 如果你是产品经理,我希望能看到你对于这个社群的更深入的思考:在列举的模块之外,这个社群还需要做什么?如何通过路演让这个社群的计划看起来可行性更高?