mcpField
A
adaptive-wfo-epoch

adaptive-wfo-epoch

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

关于 adaptive-wfo-epoch

Adaptive Walk-Forward Epoch Selection(AWFES)是一套用于在 Walk-Forward Optimization 各折中选择模型训练轮数的参考技能。它面向机器学习和交易模型实践者,依据 Walk-Forward Efficiency 与训练成本选取轮数,而非使用早停。

主要功能

  1. 01逐折评估候选训练轮数
  2. 02计算 Walk-Forward Efficiency
  3. 03按帕累托前沿选择轮数
  4. 04在各折间传递轮数先验
  5. 05提供 WFE 聚合与稳定性指南

适用场景

  1. 01为 Walk-Forward 训练选择轮数
  2. 02比较 WFE 与训练成本
  3. 03在各折间传递轮数选择

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill adaptive-wfo-epoch

安装后在 Claude Code 中输入/adaptive-wfo-epoch确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
academic-foundations.md
anti-patterns.md
configuration-framework.md
efficient-frontier.md
epoch-selection-decision-tree.md
epoch-smoothing-methods.md
epoch-smoothing.md
evolution-log.md
feature-sets.md
guardrails.md
look-ahead-bias-v3.md
look-ahead-bias.md
mathematical-formulation.md
oos-application.md
oos-metrics-implementation.md
oos-metrics.md
oos-workflow.md
range-bar-metrics.md
troubleshooting.md
wfe-aggregation.md
xlstm-implementation.md

详细介绍

自适应滚动前向轮次选择(AWFES)

用于在滚动前向优化(WFO)中自适应选择训练轮次的机器可读参考。以滚动前向效率(WFE)为目标,优化每折的训练轮次。

自进化技能:此技能会在使用过程中不断改进。如果说明有误、参数出现偏移,或需要采用变通方案,请立即修复此文件,不要拖延。仅针对真实、可复现的问题进行更新。

何时使用此技能

在以下情况下使用此技能:

  • 为 WFO 中的 ML 模型选择最佳训练轮次
  • 使用滚动前向效率指标避免过拟合
  • 实现逐折自适应轮次选择
  • 计算轮次与性能权衡的有效前沿
  • 在 WFO 各折之间沿用轮次先验

快速入门

from adaptive_wfo_epoch import AWFESConfig, compute_efficient_frontier

# Generate epoch candidates from search bounds and granularity
config = AWFESConfig.from_search_space(
    min_epoch=100,
    max_epoch=2000,
    granularity=5,  # Number of frontier points
)
# config.epoch_configs → [100, 211, 447, 945, 2000] (log-spaced)

# Per-fold epoch sweep
for fold in wfo_folds:
    epoch_metrics = []
    for epoch in config.epoch_configs:
        is_sharpe, oos_sharpe = train_and_evaluate(fold, epochs=epoch)
        wfe = config.compute_wfe(is_sharpe, oos_sharpe, n_samples=len(fold.train))
        epoch_metrics.append({"epoch": epoch, "wfe": wfe, "is_sharpe": is_sharpe})

    # Select from efficient frontier
    selected_epoch = compute_efficient_frontier(epoch_metrics)

    # Carry forward to next fold as prior
    prior_epoch = selected_epoch

方法概述

这是什么

逐折自适应轮次选择,步骤如下:

  1. 使用多个轮次训练模型(例如,400、800、1000、2000)
  2. 针对每个轮次数计算 WFE = OOS_Sharpe / IS_Sharpe
  3. 找出相对于训练成本使 WFE 最大化的轮次“有效前沿”
  4. 从前沿中选择最佳轮次,用于 OOS 评估
  5. 将其作为先验沿用到下一折
这不是什么
  • 不是早停:早停会持续监控验证损失;此方法会在事后评估离散候选项
  • 不是贝叶斯优化:不使用代理模型;直接评估所有候选项
  • 不是嵌套交叉验证:使用时间序列 WFO,而非打乱后的数据切分

学术基础

概念引用核心见解
滚动前向效率Pardo(1992、2008)WFE = OOS_Return / IS_Return,作为稳健性指标
概率夏普比率Bailey & López de Prado(2012)单条规则的夏普比率显著性
帕累托最优超参数选择Bischl 等(2023)多目标超参数优化
热启动Nomura & Ono(2021)在不同优化运行之间迁移知识

完整的文献综述请参见 references/academic-foundations.md。

核心公式:滚动前向效率

def compute_wfe(
    is_sharpe: float,
    oos_sharpe: float,
    n_samples: int | None = None,
) -> float | None:
    """Walk-Forward Efficiency - measures performance transfer.

    WFE = OOS_Sharpe / IS_Sharpe

    Interpretation (guidelines, not hard thresholds):
    - WFE ≥ 0.70: Excellent transfer (low overfitting)
    - WFE 0.50-0.70: Good transfer
    - WFE 0.30-0.50: Moderate transfer (investigate)
    - WFE < 0.30: Severe overfitting (likely reject)

    The IS_Sharpe minimum is derived from signal-to-noise ratio,
    not a fixed magic number. See compute_is_sharpe_threshold().

    Reference: Pardo (2008) "The Evaluation and Optimization of Trading Strategies"
    """
    # Data-driven threshold: IS_Sharpe must exceed 2σ noise floor
    min_is_sharpe = compute_is_sharpe_threshold(n_samples) if n_samples else 0.1

    if abs(is_sharpe) < min_is_sharpe:
        return None
    return oos_sharpe / is_sharpe

基于原理的配置框架

所有参数均根据基本原理或数据特征推导。AWFESConfig 提供统一配置,支持生成对数间隔轮次、根据搜索空间推导贝叶斯方差,以及使用特定市场的年化因子。

完整的 AWFESConfig 类和 compute_is_sharpe_threshold() 实现请参见 references/configuration-framework.md。

防护规则(原则性指南)

不进行试验次数校正(操作规则,2026-10-15):绝不计算、报告、按其排序或引用 Deflated Sharpe Ratio、最小回测长度(MinBTL)或任何其他试验次数校正(如 Holm 或 Benjamini-Yekutieli 等 FWER/FDR 程序、e-LOND 及其他在线多重检验)。通过在模型本身上评估简约性(使用少量、预先声明的候选项)、在运行前进行注册并使用未用过的数据来处理 epoch 选择风险;每条规则都报告自身统计量(Sharpe、PSR、MinTRL)。此前的 DSR 防护规则是有意移除的;请勿重新添加。

  • G1:WFE 阈值 - 0.30(拒绝)、0.50(警告)、0.70(目标),基于从业者共识
  • G2:IS_Sharpe 最小值 - 基于数据的阈值:2/sqrt(n),可根据样本量调整
  • G3:稳定性惩罚 - 根据 WFE 方差推导自适应阈值,防止 epoch 频繁变动
  • G4:注册与未用数据 - epoch 候选集、WFE 阈值和接受标准均须在扫描前固定;接受与否依据选择步骤未触及的测试数据进行判断。不应用试验次数校正

所有防护规则的完整实现请参阅 references/guardrails.md。

WFE 聚合方法

在原假设下,WFE 服从柯西分布(均值未定义)。始终优先使用中位数或合并方法:

  • 合并 WFE:按样本量进行精度加权(最适用于各折大小不同的情况)
  • WFE 中位数:对异常值具有稳健性(最适用于怀疑存在状态变化的情况)
  • 加权均值:逆方差加权(最适用于同质折)

实现和选择指南请参阅 references/wfe-aggregation.md。

高效前沿算法

Pareto 最优 epoch 选择:如果不存在其他 epoch 能够支配某个 epoch(WFE 更优且训练时间更短),则该 epoch 位于前沿上。AdaptiveEpochSelector 类会在各折之间维护状态,并采用自适应稳定性惩罚。

完整算法和延续机制请参阅 references/efficient-frontier.md。

反模式

反模式症状修复方案严重程度
扩展窗口(范围柱)每折的训练集大小不断增加使用固定滑动窗口严重
峰值选择最佳 epoch 总是在扫描边界处扩大范围,检查是否存在平台期高
折数不足effective_n < 30增加折数或数据跨度高
忽略时间自相关各折之间存在相关性使用 purged CV,在各折之间留出间隔高
对 IS 过拟合IS Sharpe 远高于 OOS Sharpe减少 epoch,增加正则化高
对加密货币使用 sqrt(252)Sharpe 被夸大使用 sqrt(365) 或每周使用 sqrt(7)中
仅选择一个 epoch未量化不确定性报告置信区间中
元过拟合epoch 选择本身发生过拟合最多限制为 3-4 个候选项高

严重:范围柱机器学习训练绝不可使用扩展窗口。完整分析请参阅 references/anti-patterns.md(第 7 节)。

决策树

完整的从业者决策树请参阅 references/epoch-selection-decision-tree.md。

Start
  │
  ├─ IS_Sharpe > compute_is_sharpe_threshold(n)? ──NO──> Mark WFE invalid, use fallback
  │         │                                            (threshold = 2/√n, adapts to sample size)
  │        YES
  │         │
  ├─ Compute WFE for each epoch
  │         │
  ├─ Any WFE > 0.30? ──NO──> REJECT all epochs (severe overfit)
  │         │                (guideline, not hard threshold)
  │        YES
  │         │
  ├─ Compute efficient frontier
  │         │
  ├─ Apply AdaptiveStabilityPenalty
  │         │ (threshold derived from WFE variance)
  └─> Return selected epoch

与 rangebar-eval-metrics 集成

此技能扩展了 rangebar-eval-metrics:

指标来源用途参考资料
sharpe_twWFE 分子(OOS)和分母(IS)range-bar-metrics.md
n_bars聚合权重的样本量metrics-schema.md
psr、min_trl最终验收标准sharpe-formulas.md
prediction_autocorr验证模型未发生塌缩ml-prediction-quality.md
is_collapsed模型健康检查ml-prediction-quality.md
扩展风险指标深度风险分析(可选)risk-metrics.md
推荐工作流
  1. 计算基础指标:使用 rangebar-eval-metrics:compute_metrics.py
  2. 输入 AWFES,以 sharpe_tw 作为主要信号选择轮次
  3. 验证:部署前,在未触碰的测试集上确认 psr > 0.85,且数据量足以满足 min_trl
  4. 监控 is_collapsed 和 prediction_autocorr,检查模型健康状况

OOS 应用阶段

AWFES 使用嵌套 WFO,每个折包含三个数据集拆分(训练集 60% / 验证集 20% / 测试集 20%),并在每个边界处设置 6% 的禁运间隔。每折的工作流为:在训练集上扫描轮次、在验证集上计算 WFE、进行贝叶斯更新、使用训练集和验证集训练最终模型、在测试集上评估。

完整工作流(含图示、BayesianEpochSelector 类和 apply_awfes_to_test() 实现)请参见 references/oos-workflow.md。扩展参考资料另请参见 references/oos-application.md。

轮次平滑方法

贝叶斯更新(推荐)可提供有依据且能感知不确定性的平滑处理。其他方法包括 EMA 和 SMA。通过 AWFESConfig.from_search_space() 初始化,可根据轮次范围自动推导方差。

所有方法、公式和初始化策略请参见 references/epoch-smoothing-methods.md。扩展数学分析请参见 references/epoch-smoothing.md。

OOS 指标规范

用于测试评估的三级指标层级:

  • 第 1 级(主要):sharpe_tw、hit_rate、cumulative_pnl、positive_sharpe_folds、wfe_test
  • 第 2 级(风险):max_drawdown、calmar_ratio、profit_factor、cvar_10pct
  • 第 3 级(统计):psr、binomial_pvalue、hac_ttest_pvalue

完整指标表、compute_oos_metrics() 和折聚合代码请参见 references/oos-metrics-implementation.md。阈值依据请参见 references/oos-metrics.md。

防止前视偏差

关键(v3 修复):TEST 必须使用 prior_bayesian_epoch(仅来自此前的折),而不是 val_optimal_epoch。贝叶斯更新在 TEST 评估后进行,确保信息只从过去流向现在。

有关 v3 修复详情、禁运期要求、验证清单和反模式,请参阅 references/look-ahead-bias-v3.md。有关详细示例,请参阅 references/look-ahead-bias.md。


参考资料

主题参考文件
学术文献academic-foundations.md
数学表述mathematical-formulation.md
配置框架configuration-framework.md
防护措施guardrails.md
WFE 聚合wfe-aggregation.md
有效前沿efficient-frontier.md
决策树epoch-selection-decision-tree.md
反模式anti-patterns.md
OOS 工作流oos-workflow.md
OOS 应用oos-application.md
Epoch 平滑方法epoch-smoothing-methods.md
Epoch 平滑分析epoch-smoothing.md
OOS 指标实现oos-metrics-implementation.md
OOS 指标阈值oos-metrics.md
前视偏差(v3)look-ahead-bias-v3.md
前视偏差示例look-ahead-bias.md
特征集feature-sets.md
xLSTM 实现xlstm-implementation.md
Range Bar 指标range-bar-metrics.md
故障排除troubleshooting.md
相关技能
技能关联
sharpe-ratio-non-iid-corrections广义 Sharpe 方差、PSR、MinTRL
opendeviation-eval-metricsWFE 使用的指标定义

完整引用

  • Bailey, D. H., & López de Prado, M. (2012). 夏普比率有效前沿。Journal of Risk,15(2),3-44。
  • Bischl, B., et al. (2023). 机器学习中的多目标超参数优化。ACM Transactions on Evolutionary Learning and Optimization。
  • López de Prado, M. (2018). Advances in Financial Machine Learning。Wiley。第 7 章。
  • Nomura, M., & Ono, I. (2021). 用于超参数优化的 CMA-ES 热启动。AAAI Conference on Artificial Intelligence。
  • Pardo, R. E. (2008). The Evaluation and Optimization of Trading Strategies, 2nd Edition。John Wiley & Sons。

执行后复盘

此技能执行完毕后,请在结束前检查:

  1. 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
  2. 参数或输出是否发生变化? — 如果底层工具的接口有所变动,请更新用法示例和参数表,使其保持一致。
  3. 是否需要变通处理? — 如果你不得不临时采用其他方法(不同的标志、额外步骤),请更新此 SKILL.md,确保下次调用时无需再次采用相同的变通方法。

仅在问题真实且可复现时才更新,不要基于猜测进行更新。

评论

支持 Markdown