关于 sharpe-ratio-non-iid-corrections
用于评估收益非正态且存在序列相关的单一策略夏普比率的参考技能。它实现方差修正及相关单次检验统计量,不包含试验次数修正。
主要功能
- 01非 IID 夏普方差修正
- 02概率夏普比率(PSR)
- 03最低跟踪记录长度(MinTRL)
- 04临界夏普比率与功效计算
- 05Numba JIT 参考实现
适用场景
- 01评估偏斜或厚尾收益的策略
- 02在推断中计入滞后 1 阶自相关
- 03根据基准估算所需跟踪记录长度
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill sharpe-ratio-non-iid-corrections安装后在 Claude Code 中输入/sharpe-ratio-non-iid-corrections确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/how-to-use-the-sharpe-ratio-2026.mdsharpe_numba.pysharpe-paper-tracker.md详细介绍
Sharpe 比率的非 IID 修正
针对收益非正态且存在序列相关性的单个策略进行 Sharpe 比率推断。本文实现 López de Prado、Lipton 和 Zoonekynd(2026)中的广义抽样方差,以及使用该方差的单次检验统计量。
自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生漂移,或需要使用变通方法,请立即修正此文件,不要拖延。仅针对真实且可复现的问题进行更新。
不在范围内 — 不要重新加入(操作规则,2026-10-15)
绝不计算、报告、排序或引用 Deflated Sharpe Ratio 或任何其他试验次数修正:FWER 和 FDR 程序(Holm、Bonferroni/Šidák、Benjamini-Yekutieli、论文中的 pFDR/oFDR/SFDR)、e-LOND 及其他在线多重检验、期望最大 Sharpe 的折减、有效试验次数估计,以及最小回测长度(MinBTL),后者是试验次数的函数。MinTRL 是不同的量(单条规则自身的跟踪记录),应保留。这些内容是有意从此技能中移除的。应改为:
- 根据模型本身判断简约性(自由参数有多少、调优程度如何),而不是根据试验次数折减 Sharpe。
- 在运行前注册,并使用未触及的数据来防范选择偏差:在运行前固定假设、规则和评估窗口,并在没有任何运行触及过的数据上进行确认。
- 报告每条规则自身的统计量:其 Sharpe、ρ 修正后的 σ[SR̂]、PSR、MinTRL 和功效。
PSR、MinTRL、ρ 修正后的方差和功效都是单次检验统计量,应予保留。PBO/CSCV 描述的是一种选择程序,不在此规则涵盖范围内。
快速开始
# Run the 9 validation tests (paper Exhibit 1 numerical examples)
uv run --no-project --with numpy --with numba \
python plugins/quant-research/skills/sharpe-ratio-non-iid-corrections/references/sharpe_numba.py
论文元数据
| 字段 | 值 |
|---|---|
| 标题 | 如何使用 Sharpe 比率 |
| 作者 | Marcos López de Prado、Alexander Lipton、Vincent Zoonekynd |
| 系列 | ADIA Lab Research Paper Series,第 19 号 |
| 日期 | 2026 年 3 月 7 日 |
| SSRN | 5520741 |
| 复现 | https://github.com/zoonek/2025-sharpe-ratio |
| 源 PDF | lopez-de-prado-sharpe-2026.pdf |
保留此 PDF,是因为本技能实现的方差推导(第 2 节、附录 A.1–A.2)以及 PSR/MinTRL/功效方程均按公式编号引用自该文档。此处仅使用这些部分;转录内容省略了其余部分。
参考资料
| 主题 | 参考文件 |
|---|---|
| 论文转录(已实现的摘录) | how-to-use-the-sharpe-ratio-2026.md |
| 公式 → 实现跟踪表 | sharpe-paper-tracker.md |
| Numba JIT 实现 | sharpe_numba.py |
| 源 PDF | lopez-de-prado-sharpe-2026.pdf |
| 论文图表 | media/(图表 2,方差与自相关,12–13 页) |
预检:需要计算的内容
输入均为客观数据,根据待评估的收益序列计算得出:
| 参数 | 含义 | 来源 |
|---|---|---|
| SR̂ | 观测到的(非年化)夏普比率 | 收益序列 |
| T | 收益观测值数量 | 收益序列 |
| γ₃, γ₄ | 偏度、Pearson 峰度(γ₄=3 表示高斯分布) | 收益序列 |
| ρ | 滞后 1 阶自相关 | 收益序列 |
| SR₀ | 零假设下的基准夏普比率(通常为 0) | 运行前固定 |
| SR₁, α | 用于计算检验功效的备择夏普比率和检验规模 | 运行前固定 |
在注册时、查看结果之前,固定 SR₀、SR₁ 和 α。一起报告 SR̂、σ[SR̂]、PSR、相对于 T 的 MinTRL,以及检验功效。
关键公式
所有公式均使用论文中的非 IID 方差(公式 2-3),并采用 Pearson 峰度约定(高斯分布的 γ₄=3)。
| 公式 | 名称 | 公式 | 函数 |
|---|---|---|---|
| 2-3 | SR 方差 | V[SR̂] = (1/T)·(a − b·γ₃·SR + c·(γ₄−1)/4·SR²) | sr_variance() |
| 9 | PSR | Φ((SR̂ − SR₀) / σ[SR₀]) | psr() |
| 11 | MinTRL | (a − b·γ₃·SR₀ + c·(γ₄−1)/4·SR₀²) · (z_{1−α}/(SR̂−SR₀))² | min_trl() |
| 8, 14 | 临界 SR | SR₀ + σ[SR₀]·z_{1−α} | critical_sr() |
| 13-15 | 检验功效 | 1 − Φ((SR_c − SR₁) / σ[SR₁]) | power() |
| 17 | β(第二类错误) | Φ((z_{1−α}·√(a(ρ)) − SR₁·√T) / √(a − b·γ₃·SR₁ + c·(γ₄−1)/4·SR₁²)) | power() → 1 - power |
其中 a = (1+ρ)/(1−ρ)、b = (1+ρ+ρ²)/(1−ρ²)、c = (1+ρ²)/(1−ρ²) 是 AR(1) 方差系数(ar1_variance_coeffs())。
数值示例(论文图表 1)
对冲基金:T=24 个月,γ₃=−2.448,γ₄=10.164(Pearson),SR=0.036/0.079≈0.456,ρ=0.2。
| 数值 | 公式 | 值 | 说明 |
|---|---|---|---|
| σ[SR̂](非高斯) | 公式 3 | 0.379 | 高斯情形为 0.214——宽 77% |
| PSR(SR₀=0) | 公式 9 | 0.966 | 尽管置信区间更宽,仍显著 |
| PSR(SR₀=0.1) | 公式 9+5 | 0.900 | 基准要求更高,置信度随之降低 |
| MinTRL(SR₀=0) | 公式 11 | 19.543 个月 | T=24 > 19.5 → 足够 |
| MinTRL(SR₀=0.1) | 公式 11 | 39.369 个月 | SR₀ 越接近 SR̂,所需时长就增加一倍以上 |
| β(功效,SR₁=0.5) | 公式 17 | 0.411 | IID 正态情形为 0.224——高 84% |
| 功效(1−β) | 公式 15 | 0.589 | 对于 24 个月的业绩记录而言偏低 |
实现架构
4 层依赖层级(Numba JIT,可用于 Rust):
Tier 0: erfinv, norm_cdf, norm_ppf
Tier 1: sr_variance (Eqs 3/58), ar1_variance_coeffs
Tier 2: psr (Eq 9), min_trl (Eq 11), critical_sr (Eq 8)
Tier 3: power (Eqs 12-17)
相关技能
| 技能 | 关系 |
|---|---|
| opendeviation-eval-metrics | 使用 PSR 和 MinTRL 评估区间栏(ρ=0 快速参考) |
| adaptive-wfo-epoch | 报告每个向前滚动折叠的 PSR |
执行后反思
此技能执行完毕后,关闭前请检查:
- 命令是否成功? — 如果没有,修复导致失败的指令或错误表。
- 参数或输出是否发生变化? — 如果底层工具的接口发生偏移,请更新 Usage 示例和 Parameters 表以保持一致。
- 是否需要变通方案? — 如果你不得不临时调整(更换标志、增加步骤),请更新此 SKILL.md,以便下次调用时无需采用相同的变通方案。
只有问题确实存在且可复现时才进行更新,不要基于猜测更新。