这是 qexlab 的第一篇实验日志。按照实验室的规矩:假设、代码、回测、复盘,全部公开——包括失败。第一篇就是个负结果,我们认为这比挂一个漂亮的净值曲线更能说明这个实验室是干什么的。
假设
策略代号 multifactor-low-turnover-v2,一个多因子低换手选股模型:
冻结的 P25 排名信号(Alpha001 / Alpha006 / 换手率倒数)在加入「硬性 10 只持仓 + 单周最多换 3 只」的换手约束后,仍能保留有效信号,同时消除目标仓位的残余堆积。
背景是上一个版本在评审中暴露了换手失控的问题,V2 试图用硬约束把它按住。
实验设计
- 股票池:历史指数成分(按历史时点取成员,避免幸存者偏差),仅保留当时可交易的股票
- 信号:Alpha001(40%)+ Alpha006(40%)+ 换手率倒数(20%),20 日窗口,滞后 1 日,
strict可得性——数据当天不可用就不许用 - 组合:10 只等权,单票上限 10%
- 调仓:每周一收盘后决策,单周换手上限 30%
- 评审隔离:本次运行是 P29 流程的 holdout reference run,数据区间截至 2026-06-30,116 个交易日,11,948 根行情帧(tushare),与参数调优过程严格隔离
结果
| 指标 | 数值 |
|---|---|
| 期初权益 | 1,000,000 元 |
| 期末权益 | 776,726.64 元 |
| 净盈亏 | -223,273.36 元(-22.3%) |
| 最大回撤 | 22.33%(且出现在期末——没有反弹) |
| 成交 | 180 笔,0 笔拒单 |
| 平均持仓 | 15.8 天 |
| 区间换手 | 1252.7% |
| 费用合计 | 28,916 元,其中滑点 22,658 元 > 佣金 3,614 + 印花税 2,644 |
评审结论:拒绝(rejected)。 按冻结的 P29 协议,该运行不允许产生绩效结论外推——即不能据此声称策略「能」或「不能」赚钱,只能说:在这次严格隔离的历史区间里,它亏了 22.3%。
证据链
数字可信比数字好看更重要。本次运行的完整证据包以五个根(strategy / run / snapshot / settlement / attribution)组织,全部哈希绑定:
- 账本被独立重算:每笔成交的金额、数量、佣金、印花税、滑点,逐日现金与权益,期末持仓与剩余批次
- 对账闭合:已实现 -199,342 + 未实现 -23,987 + 分红 56 = 净盈亏,误差 5.8e-11(容差 1e-8)
- 篡改测试:重封的费用数据会被校验拒绝;拼接的根清单会被拒绝
- 归因中没有 residual 科目——每一分钱都有出处
净值曲线已做成可交互版本(悬停读数、水下区域标色):Exp.001 净值曲线。
复盘
三个值得记住的教训:
- 换手约束被顶满了。 1252.7% 的区间换手意味着「每周最多换 3 只」的缓冲几乎每周都在满负荷运行——约束没有驯服信号,只是把换手摊匀了。低换手的目标没有达成。
- 滑点是最大的成本项。 滑点(2.27 万)超过佣金与印花税之和(0.63 万)的 3.6 倍。对小盘股流动性假设的乐观,是这类策略最常见的死因之一。
- 期末即最大回撤点。 净值曲线在区间末尾仍在创新低,没有任何企稳迹象。冻结的信号在这个区间里持续失效,而不是「先好后坏」的过拟合形态。
结论与边界
本次运行支持的唯一结论是:该版本的信号与换手约束组合,在这个 holdout 区间被市场否决了。 它不是策略改进方向的证据,不是未来收益的预期,更不是任何实盘建议。
Exp.002 的方向有两个候选:回到信号端重新审视 Alpha001/006 在该区间的衰减结构;或者先修执行端——把滑点模型换成更保守的假设再跑一次。欢迎在博客里围观。
本文为研究记录,不构成投资建议。实验 bundle 的完整哈希清单存于本地仓库,将来开源后会附上可验证的校验方法。