Deflated Sharpe Ratio 怎么算:试了几百组参数之后,夏普比率该打几折

在几百组参数里挑出的最高夏普必须按 E[max SR] 打折,这就是 Deflated Sharpe Ratio(DSR)做的事:把多重检验、样本长度、非正态三项代价从夏普里扣掉。本文给公式、有效试验次数的三种估法、两张可复算的数值表,以及一个 DSR 通过但与大盘相关系数 +0.97 的真实失败案例。

更新于 2026-08-01

你在参数网格上跑了三百组回测,挑出夏普最高的那组,报告说「这个策略夏普 1.8」。这句话有个隐含前提:1.8 是这个策略的夏普。实际上它是三百个带噪声的估计值里的最大值——即使这三百组的真实夏普全是零,最大值也不会是零。Deflated Sharpe Ratio(DSR)干的事,就是把「挑了很多次」这件事的代价从这个数字里扣掉。

为什么普通夏普在多重检验下会系统性虚高

夏普比率是估计量,有抽样误差。样本越短、收益分布越偏离正态,误差越大。单次实验里这只是噪声;一旦你在 M 个配置里取最大值,噪声就变成了系统性偏差,因为你做的是极值抽样,而不是一次独立观测。

这个偏差的量级超出多数人的直觉。Bailey、Borwein、López de Prado 与 Zhu 在《Notices of the AMS》2014 年 5 月号给的例子是:只要有 5 年数据,试 45 组配置就足以挑出一个样本内夏普为 1、样本外一塌糊涂的组合([Pseudo-Mathematics and Financial Charlatanism](https://www.davidhbailey.com/dhbpapers/backtest-pseudo.pdf))。学术界那边的对应结论来自 Harvey、Liu 与 Zhu 发表在《Review of Financial Studies》2016 年第 29 卷的因子普查:清点了 316 个因子之后,他们主张新因子的 t 值门槛应该抬到 3.0 以上,而不是习惯用的 2.0([论文页面](https://academic.oup.com/rfs/article/29/1/5/1843824))。

DSR 惩罚的到底是什么

DSR 建立在 Probabilistic Sharpe Ratio(PSR)之上。PSR 回答「真实夏普高于某个基准的概率有多大」,而 DSR 把这个基准从 0(或者你随手设的数)换成一个更难过的东西:假设所有试验的真实夏普都是 0,做 N 次试验,纯靠运气期望能挑出的最大夏普。

E[max SR] ≈ √V[SR] × ( (1−γ)·Z⁻¹[1−1/N] + γ·Z⁻¹[1−1/(N·e)] ),其中 γ ≈ 0.5772 为欧拉常数,Z⁻¹ 为标准正态分布的分位数函数。 DSR = Z[ (SR − SR₀)·√(n−1) / √(1 + ½SR² − γ₃·SR + (γ₄−3)/4·SR²) ],其中 SR₀ = E[max SR]。

V[SR] 是各次试验夏普的方差,n 是收益观测数,γ₃ 和 γ₄ 是收益序列的偏度与峰度。**γ₄ 取非超额峰度(正态分布等于 3)**,这一点务必看清:scipy.stats.kurtosis 和 pandas 的 .kurt() 默认返回的是超额峰度(正态等于 0),直接代进公式会把峰度惩罚算反,需要 +3 或传 fisher=False。三个惩罚项各管一件事:N 管试验次数,n 管样本长度,偏度峰度管分布形状。负偏加尖峰的序列被压得最狠——「平时小赚、偶尔巨亏」正是这种形状,这类策略的原始夏普往往好看得离谱。

有效试验次数 N试验间夏普标准差 0.3标准差 0.5标准差 1.0
100.470.791.58
500.681.142.28
1000.761.272.53
5000.921.533.05
10000.981.633.26
50001.111.843.69
真实夏普为零时,纯靠运气能挑出的最大年化夏普期望值 E[max SR]。按上述公式本站计算,γ 取 0.5772。

N=1000、离散度 1.0 那一格是 3.26,与原论文给出的数字对得上:一千次独立试验,真实夏普全是零,最大值的期望仍有 3.26。这张表还说明惩罚力度主要由试验间的夏普离散度决定。同样一千次试验,如果配置之间差别很小、夏普都挤在一起(离散度 0.3),惩罚基准只有 0.98。

有效试验次数怎么估

这是整套方法最脆弱的一环。N 不是你跑了多少次回测,而是这些回测里有多少条独立信息。10 个窗口 × 5 个阈值 × 3 套进出场逻辑是 150 个配置,但若相邻窗口的收益曲线相关系数 0.9,它们远算不上 150 次独立试验。常见的三种估法,从粗到细:

  • 按平均相关系数折算:N = ρ̄ + (1−ρ̄)·M,M 为配置总数。ρ̄=0 时 N=M,ρ̄=1 时 N=1。够快,但对 ρ̄ 的估计极其敏感。
  • 对所有回测的收益序列做聚类,簇数当作 N。López de Prado 用的是 ONC 算法,层次聚类可以给出一个偏保守的下界。
  • 谱方法:看配置间相关矩阵的特征值分布,用有效秩近似独立维度数。

绕不开的问题是:N 是自报的。同一份回测结果,声称试了 10 次和承认试了 200 次,DSR 能给出相反的结论。下面这张表是一个构造算例,其他条件全部固定,只改 ρ̄ 一个假设。

平均相关系数 ρ̄有效试验 N惩罚基准 SR₀DSR
不做惩罚(当作只试了一次)100.99
0.95110.810.91
0.80411.100.83
0.501011.270.77
0.002001.380.71
构造算例,不是任何真实策略的业绩:观测年化夏普 1.8,共跑 200 组参数,试验间夏普标准差 0.5,两年日频(n=504),偏度 −0.6,峰度 6.0。按上文公式本站计算。

不做惩罚时 DSR 是 0.99,看着像铁证;一旦承认试了 200 组、并假设它们中度相关,就掉到 0.83,过不了通常采用的 0.95 门槛。所以 DSR 的可信度上限等于你回测日志的诚实程度。跑完几百组之后再回头补一个 N,等于自己给自己发准考证。

一个 DSR 通过、策略却无效的实例

我们对一只大盘股做过日内信号测试,两年 5 分钟数据,回归和动量两个方向各跑一遍,DSR 惩罚和对抗验证都挂上。回归方向直接失败。动量方向通过了全部关卡,看上去可以进入下一阶段。

然后我们做了一件本该更早做的事:把信号收益与同期大盘走势求相关系数,结果是 +0.97。这个信号没有捕捉到任何日内规律,它只是换了种方式表达趋势。剔除 45 个事件驱动的交易日重跑仍然亏损,而同期简单买入持有反倒是正的。这一轮我们多烧了两周,原因是把 DSR 当成了终点站。

教训可以写得很短:DSR 回答「这个数字是不是运气」,不回答「这个数字是不是 beta」。两个问题正交,过了前一关不代表后一关也过。

DSR 管不到的三件事

  • 管不到口径注水。DSR 对喂进去的收益序列照单全收。我们有一批信号,按「次日开盘买入、次日收盘卖出」计算平均 +0.56%,按「信号日收盘起算、卖价取次日最高与收盘的均值」计算平均 −0.28%,差 0.84 个百分点而且正负翻面,差别全在隔夜跳空算不算进来。同一批交易,两条收益序列,两个 DSR,两个都「算对了」。
  • 管不到 beta 暴露。补救办法只能放在 DSR 之外:算与宽基指数、与市值因子的相关性,再换基准重估超额。我们复现过一个标称命中率 61.6% 的模型,改用全市场前复权数据、把区间拉到 2.5 年之后只剩 56.6%;换中证 500 和中证 1000 做基准,样本外超额转为 −0.3% 到 −0.5%,正收益基本来自小盘市值暴露。
  • 管不到数据本身会变。前复权因子从当前时点往回推,每次分红送股都要重算全部历史价格,同一段前复权数据半年后取出来数值不同,回测结果自然跟着变。DSR 是对一条固定收益序列的统计量,序列会漂移这件事不在它射程内。

这里要交代一条边界:上面那次复现本身跑在前复权数据上,而本文正好在讲前复权结果不可严格复现——所以这组数字按我们自己的标准也是不可严格复现的。保留它是因为结论(差约 5 个百分点、扣费后转负、换市值匹配的基准后超额转负)在量级上不依赖复权方式,但精确到小数点的数值不应该被再引用。

落地清单

  1. 1从第一次跑回测就记日志:配置、数据区间、完整收益序列全存下来。事后重建的试验次数没有可信度。
  2. 2试验间夏普的标准差用你实际跑出来的那堆配置去算,别拿经验值顶替,它直接决定惩罚力度。
  3. 3报 DSR 必须同时报 N 的取值和估法,以及偏度、峰度、观测数。孤零零一个 0.97 没有信息量。
  4. 40.95 是常用门槛(对应 5% 的显著性水平),不是及格证书。
  5. 5通过之后再做三项正交检验:与基准指数的相关性、剔除事件驱动交易日重跑、换一个市值风格的基准重算超额。
  6. 6最后仍然要留真正的样本外区间。DSR 是对样本内统计的校正,替代不了样本外验证。
本文所有公式引自 Bailey 与 López de Prado (2014) 及后续文献,两张表的数值为按公式的本站计算;带百分比的实测数据来自本站自有回测。全文讨论统计方法,不构成投资建议,也不指向任何具体证券。

参考文献

  • Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. Journal of Portfolio Management. [SSRN 页面](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2460551)
  • Bailey, D. H., Borwein, J. M., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the AMS, 2014 年 5 月号。[PDF](https://www.davidhbailey.com/dhbpapers/backtest-pseudo.pdf)
  • Harvey, C. R., Liu, Y., & Zhu, H. (2016). … and the Cross-Section of Expected Returns. Review of Financial Studies, 29(1), 5–68. [论文页面](https://academic.oup.com/rfs/article/29/1/5/1843824)
  • Quantdare 对 DSR 公式与有效试验次数近似式的整理:[Deflated Sharpe Ratio: how to avoid been fooled by randomness](https://quantdare.com/deflated-sharpe-ratio-how-to-avoid-been-fooled-by-randomness/)

相关笔记