EVIDENCE GRADING · DEVIATION AUDIT

QuantsPlaybook 复现可信度:把「对不上」写成清单

这个项目最有价值的不是策略数量,而是它自己写下来的偏离评估——哪些结论能复现、为什么会偏离。本页把这些散落在各案例里的说明汇总成一页,并附一套 A 股回测审计清单。

  • QuantsPlaybook 项目自带偏离评估的案例:RRG 行业轮动(5 条已知偏离 + 绩效对照表)。
  • SAE 择时案例明确写「运行成功不等于精确复现研报」「主回测零费用与滑点」。
  • 作者自己开的偏差 issue:#1 凸显因子 IC 与研报不同、#2 ICU 均线效果比研报差。
  • 本站对任何案例都不作收益断言,只标注证据等级。

证据等级怎么分?

① 官方声明README / 案例文档原文
② 源码核验读代码与元数据可确认
③ 本机实测本站跑过、有报错原文
④ 教程扩展由证据推导的说明
⑤ 待核验未确认,明确标注
本站自用的证据分级示意图,用于标注每条结论的来源等级。

THE HONEST PART

QuantsPlaybook 为什么说「对不上」?项目自带的偏离说明

多数研报复现项目只贴成功案例。QuantsPlaybook 的 2025–2026 年新增案例反过来,把偏离写进了 README 和文档。

案例对照表
案例项目自己写了什么这句话的含金量证据等级
相对旋转图RRG行业轮动「QuantsPlaybook忠实复现研报的方法——RRG 公式、扩散指标、LP 优化、回测口径逐条对齐……但回测数字不等同研报」;「请当作『研报方法的可复现实现 + 教学 demo』,不要当作可直接使用的策略或已验证的 alpha」把「方法可复现」与「结论可引用」明确分开,并给出绩效对照表① 官方声明
基于稀疏自编码器的指数择时「运行成功不等于精确复现研报,单次结果也不能证明样本外稳定性」;「网络结构、特征配方和若干参数属于复现假设」公开承认哪些是假设而非研报原文,这是复现类文档最稀缺的表述① 官方声明
同上(口径差异)「notebook 分年绩效用几何年化收益/年化波动计算 Sharpe;analyze.performance 的 Sharpe 采用算术均值口径,两者不能混作同一个统计量」同一项目里两套夏普口径并存的坑,被作者自己点出来① 官方声明
基于隔夜与日间的网络关系因子「qlib 不可用,使用模拟数据替代」提醒读者:代码跑通与结果有效是两件事① 官方声明
基于稀疏自编码器的指数择时(回测假设)「T 日信号在 T+1 收盘成交,主回测使用 vectorbt 原生账户,零费用与滑点」明确写出未计入成本——这直接影响结论强度① 官方声明

QuantsPlaybook 本站态度:这些自述不削弱项目的价值,反而说明作者知道边界在哪。但读者必须先看到这些句子,才不会被其它渠道的「100+ 策略全部可用」误导。

DECLARED DEVIATIONS

RRG 案例有哪些已知偏离?五条说明与审计模板

这是全仓库最完整的一份偏离说明。它给出的对照结构,可以直接套用到你自己的复现上。

#对照表
#偏离项研报口径QuantsPlaybook 口径为什么改不了
1回测窗口2018-12-28 起,7.3 年(含 2019、2020 两个大年)快照数据自 2019-11 起、Notebook 自 2022-09 起快照固定;窗口少了弹性最高的两年
2扩散指标的加权口径研报 §2.2 用自由流通市值加权快照 $mv 是流通市值(工行等国企流通市值远大于自由流通)「tushare 无自由流通字段,无法就地修」
3ETF 持仓暴露研报很可能用 PCF 申赎清单(每日全持仓)一年约 8 个月只见前十大持仓(Q1/Q3 季报),换仓日暴露矩阵行和约 0.5fund_portfolio 接口给不了全持仓,导致行业上限约束半失效
4生存偏差研报候选池含当时存在、现已退市的 ETF快照 fetch_etf_meta(only_listed=True) 只保留在售 ETF退市 ETF 未纳入快照
5候选池口径研报限「行业和主题 ETF」取全部非 QDII ETF 靠打分剔除;etf_meta 无行业/主题标签标签字段缺失,无法严格按研报口径筛
策略层对照表
策略层研报 年化 / 夏普 / 最大回撤QuantsPlaybook 年化 / 夏普 / 最大回撤差异解读
ETF 轮动 base(每行业 ≤ 1/k)21.51% / 0.80 / −34.98%19.9% / 0.67 / −17.8%接近(年化差约 1.6 pp);回撤更小是因为窗口避开了 2022 年大熊
ETF 轮动 unconstrained31.53% / ~1.0 / −33.33%21.9% / 0.78 / −34.9%差约 10 pp,主要来自窗口 + 数据口径,而非算法

本站引用这两张表的目的不是比较收益高低,而是演示「一份能被检验的复现说明」长什么样:把差异拆成可归因的条目,并说明哪一条是能修的、哪一条是数据源先天限制。

AUTHOR'S OWN QUESTIONS

作者自己提了哪些偏差 issue?连维护者也在问原因

这两个 issue 比任何第三方评测都更有说服力,因为它们是项目内部提出的。

Issue对照表
Issue状态标题它说明了什么
#1open「为何凸显因子的 IC 报告和几份金工报告不同」因子复现的 IC 结果与研报不一致——这类差异通常来自股票池、极端值处理、中性化方式与样本区间
#2open「为什么 ICU 均线采用 5 日回看日期比原研报效果要差」同一指标在不同参数下表现差异明显,说明参数敏感性高、原研报参数可能经过样本内优选
#11closed「对于回测逻辑的一个小问题」回测实现细节曾收到质疑(已关闭,但不改变「实现细节会影响结论」这一事实)
#18closed「README 文件关于『技术栈-核心框架』描述错误」连 README 的技术栈描述都曾被发现写错——本站因此对 README 的所有声明都做了逐条核对

配套的其它 issue:#6「行业指数顶部和底部信号 代码不全」、#9「C-VIX 缺少 prepare_data」、#7「识别圆弧底」均已关闭,但都指向同一类问题——案例完整性参差不齐。建议跑之前先在 issue 里搜该案例名。

A-SHARE BACKTEST AUDIT

QuantsPlaybook 的 A 股回测要审什么?十二个风险点

这份清单是把项目里出现过的偏离项,与 A 股交易制度的固有难点合并后的结果。用它可以自查任何一个案例。

审计项对照表
审计项典型表现对结论的影响在 QuantsPlaybook 里的具体情况
未来函数用当日收盘价算出信号、又用当日收盘价成交收益被系统性高估SAE 案例明确写了「T 日信号在 T+1 收盘成交」,属处理得比较好的;多数老案例未说明
样本内 / 样本外用全样本选参数、再在全样本报告结果结论不可外推SAE 案例用 2020–2025 作样本外区间、10 个 seed 取平均,是项目里较严谨的一例
幸存者偏差股票池只取「现在还在的」成分股系统性高估收益(退市/被剔除的票被排除)RRG 快照 only_listed=True;成分股是否按历史时点还原,多数案例未说明
涨跌停与 T+1信号次日开盘买入,但当日已涨停、根本无法成交小市值策略收益虚高项目未见统一处理;相关常识可参考本机技能与公开资料
停牌处理停牌期间用上一日价格继续计算波动被低估、换手被低估依赖数据源口径;自建库场景需自己保证
交易成本与滑点零手续费、零滑点回测换手高的策略收益被显著高估SAE 主回测零费用与滑点(作者已披露);RRG 为「换仓日收盘出信号、次日开盘成交」
复权方式前复权 / 后复权 / 不复权混用因子值与收益计算错位实测同一仓库内两种口径并存(日 K 用后复权、算市值用另一套)
成分股时点用今天的成分股回测过去指数增强类结论失真RRG 的 ETF 暴露矩阵依赖季度持仓,只能拿到前十大
多重检验 / 参数挖掘试了很多参数后只报告表现突出的那组夏普虚高ICU 均线 issue 正是参数敏感性问题的体现
容量小市值 / 低流动性标的的策略规模上限极低实盘不可行项目内未见容量分析
成本敏感性没做手续费翻倍后的结果无法判断策略的鲁棒性建议自己加这一项——成本翻倍测试通常几行代码
数据区间代表性只在牛市区间回测结论不可迁移到熊市RRG 明确写了「窗口避开 2022 大熊」这一局限

怎么用这份清单

选一个案例,把十二项逐条打勾/打叉,打叉的地方去代码里找证据。打叉超过 3 项时,该案例的收益类结论就不要引用,只引用它的方法与实现。

项目自带的好样板

RRG 的五条偏离与 SAE 的「如何理解结果」两处,正好覆盖了窗口、口径、成本、样本外四类核心问题,可以直接当作自己写复现报告的模板。

本站的立场

本页不评价任何策略的收益高低,也不提供投资建议。判断标准只有一条:结论所依赖的口径,有没有被写清楚。

HOW TO READ A CASE

QuantsPlaybook 一个案例怎么读?从公式到能不能信

把上面的清单落成流程,读任何一个案例都可以按这五步走。

  • ① 先读研报 PDF,只记两件事

    研报声称的核心公式是什么、声称的结果区间与基准是什么。预期输出:一张写了两行的纸条——「公式 X、区间 Y、基准 Z」。这两行是你后面所有判断的锚。

  • ② 再读代码,找信号的产生时点与成交时点

    搜索 shift(、iloc[-1]、next 之类的写法,确认有没有用当日信息决定当日交易。预期输出:一句话结论——「T 日信号 T+1 成交」或「时点不明」。

  • ③ 找数据入口与口径

    看它怎么取数、用什么复权、股票池怎么来。预期输出:数据来源 + 复权方式 + 股票池三个词。拿不到其中任何一个,就把该案例降级为「只读方法」。

  • ④ 检查成本与样本外

    搜手续费、滑点、commission、slippage、样本外区间的写法。预期输出:成本假设(含「未计入」)+ 是否有样本外段落。

  • ⑤ 写三行结论

    按本站口径写:方法可复现性(能否凭代码重跑)、结论可引用性(数值能否对外引用)、已知偏离(哪几条对不上、为什么)。三行写完,这个案例才算读完。

  • 为什么值得这么做:项目自己的两个 open issue(#1、#2)都停在「结果对不上但我不知道为什么」这一步。按上面五步走,你至少能给出归因方向,而不是只能复述「有偏差」。

    FAQ

    QuantsPlaybook 复现可信度常见问题

    QuantsPlaybook 复现的结果可信吗?

    要分开看两件事。方法层面基本可信:公式、代码结构与回测框架都在仓库里,项目自带的偏离评估也说明方法是对齐过的。数值层面不能直接引用:RRG 案例自己写明「回测数字不等同研报」并列出 5 条偏离;SAE 案例写明「运行成功不等于精确复现研报」,主回测还是零费用零滑点。本站因此不对任何案例的收益数字作断言。

    为什么同一份研报复现出来结果不一样?

    最常见的四类原因,按影响从大到小:①回测窗口不同(RRG 少了 2019、2020 两个大年,年化直接差约 10 pp);②数据口径不同(扩散指标用流通市值还是自由流通市值);③成分股/持仓还原不足(只能用前十大持仓,导致约束失效);④成本与滑点未计入。这些在 RRG 案例的偏离说明里都能找到实例。

    项目里有做过样本外验证的案例吗?

    有,但不是全部。最清晰的一例是 基于稀疏自编码器的指数择时:明确写「中证500、2020–2025 样本外区间、10 个 seed、每年独立训练后平均预测」,并提示「单次结果也不能证明样本外稳定性」。多数老案例未说明样本外设置。

    「零费用零滑点」意味着什么?

    意味着回测里的收益是未扣成本的理论上限。对换手低的择时策略影响有限,对高换手策略则可能把正收益算成负收益。看到这个说明时,正确做法不是否定该案例,而是自己加一组成本敏感性测试(例如手续费翻倍)再看结论是否稳健。

    怎么判断一个案例的结论能不能引用?

    用本站的五步法:确认公式、确认信号与成交时点、确认数据口径、确认成本与样本外,最后写三行结论。如果「数据口径」或「成交时点」这两步里有一项拿不到答案,就把该案例降级为「只读方法与实现」,不引用其数值。

    站内有收益数字吗?

    没有。本站不提供任何收益、胜率或绩效断言,也不转载 README 里那张无来源的「策略表现概览」表。你会看到的具体数字只有两类:①仓库事实(文件数、star、依赖版本、报错原文);②项目自己文档里写明的对照数据,且标注了它的口径与局限。

    这些结论的核验等级是什么?

    本站所有结论都标在三档之内:①官方声明(README/案例文档原文)、②源码与元数据核验(读代码、查文件树与 PyPI)、③本机实测(依赖解析实测、截图采集)。本站没有跑通任何案例——没有 JQData / TuShare Pro 付费权限,因此不把「装得上」写成「跑得通」,也不把「能跑通」写成「结论成立」。

    QuantsPlaybook 下一步:带着审计清单去读择时与因子案例

    择时案例册把 29 个案例归纳成四族信号并给出源码级读法;因子案例册把 25 个案例按因子家族分类,并说明 IC 与分组回测的口径。