mcpField
S
sharpe-ratio-non-iid-corrections

sharpe-ratio-non-iid-corrections

github.com/terrylica数据与数据库171 次安装1 天前更新
代码仓库

关于 sharpe-ratio-non-iid-corrections

用于评估收益非正态且存在序列相关的单一策略夏普比率的参考技能。它实现方差修正及相关单次检验统计量,不包含试验次数修正。

主要功能

  1. 01非 IID 夏普方差修正
  2. 02概率夏普比率(PSR)
  3. 03最低跟踪记录长度(MinTRL)
  4. 04临界夏普比率与功效计算
  5. 05Numba JIT 参考实现

适用场景

  1. 01评估偏斜或厚尾收益的策略
  2. 02在推断中计入滞后 1 阶自相关
  3. 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.md
sharpe_numba.py
sharpe-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 日
SSRN5520741
复现https://github.com/zoonek/2025-sharpe-ratio
源 PDFlopez-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
源 PDFlopez-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-3SR 方差V[SR̂] = (1/T)·(a − b·γ₃·SR + c·(γ₄−1)/4·SR²)sr_variance()
9PSRΦ((SR̂ − SR₀) / σ[SR₀])psr()
11MinTRL(a − b·γ₃·SR₀ + c·(γ₄−1)/4·SR₀²) · (z_{1−α}/(SR̂−SR₀))²min_trl()
8, 14临界 SRSR₀ + σ[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̂](非高斯)公式 30.379高斯情形为 0.214——宽 77%
PSR(SR₀=0)公式 90.966尽管置信区间更宽,仍显著
PSR(SR₀=0.1)公式 9+50.900基准要求更高,置信度随之降低
MinTRL(SR₀=0)公式 1119.543 个月T=24 > 19.5 → 足够
MinTRL(SR₀=0.1)公式 1139.369 个月SR₀ 越接近 SR̂,所需时长就增加一倍以上
β(功效,SR₁=0.5)公式 170.411IID 正态情形为 0.224——高 84%
功效(1−β)公式 150.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

执行后反思

此技能执行完毕后,关闭前请检查:

  1. 命令是否成功? — 如果没有,修复导致失败的指令或错误表。
  2. 参数或输出是否发生变化? — 如果底层工具的接口发生偏移,请更新 Usage 示例和 Parameters 表以保持一致。
  3. 是否需要变通方案? — 如果你不得不临时调整(更换标志、增加步骤),请更新此 SKILL.md,以便下次调用时无需采用相同的变通方案。

只有问题确实存在且可复现时才进行更新,不要基于猜测更新。

评论

支持 Markdown