关于 adaptive-wfo-epoch
Adaptive Walk-Forward Epoch Selection(AWFES)是一套用于在 Walk-Forward Optimization 各折中选择模型训练轮数的参考技能。它面向机器学习和交易模型实践者,依据 Walk-Forward Efficiency 与训练成本选取轮数,而非使用早停。
主要功能
- 01逐折评估候选训练轮数
- 02计算 Walk-Forward Efficiency
- 03按帕累托前沿选择轮数
- 04在各折间传递轮数先验
- 05提供 WFE 聚合与稳定性指南
适用场景
- 01为 Walk-Forward 训练选择轮数
- 02比较 WFE 与训练成本
- 03在各折间传递轮数选择
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill adaptive-wfo-epoch安装后在 Claude Code 中输入/adaptive-wfo-epoch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/academic-foundations.mdanti-patterns.mdconfiguration-framework.mdefficient-frontier.mdepoch-selection-decision-tree.mdepoch-smoothing-methods.mdepoch-smoothing.mdevolution-log.mdfeature-sets.mdguardrails.mdlook-ahead-bias-v3.mdlook-ahead-bias.mdmathematical-formulation.mdoos-application.mdoos-metrics-implementation.mdoos-metrics.mdoos-workflow.mdrange-bar-metrics.mdtroubleshooting.mdwfe-aggregation.mdxlstm-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
方法概述
这是什么
逐折自适应轮次选择,步骤如下:
- 使用多个轮次训练模型(例如,400、800、1000、2000)
- 针对每个轮次数计算 WFE = OOS_Sharpe / IS_Sharpe
- 找出相对于训练成本使 WFE 最大化的轮次“有效前沿”
- 从前沿中选择最佳轮次,用于 OOS 评估
- 将其作为先验沿用到下一折
这不是什么
- 不是早停:早停会持续监控验证损失;此方法会在事后评估离散候选项
- 不是贝叶斯优化:不使用代理模型;直接评估所有候选项
- 不是嵌套交叉验证:使用时间序列 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_tw | WFE 分子(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 |
推荐工作流
- 计算基础指标:使用
rangebar-eval-metrics:compute_metrics.py - 输入 AWFES,以
sharpe_tw作为主要信号选择轮次 - 验证:部署前,在未触碰的测试集上确认
psr > 0.85,且数据量足以满足min_trl - 监控
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-metrics | WFE 使用的指标定义 |
完整引用
- 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。
执行后复盘
此技能执行完毕后,请在结束前检查:
- 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
- 参数或输出是否发生变化? — 如果底层工具的接口有所变动,请更新用法示例和参数表,使其保持一致。
- 是否需要变通处理? — 如果你不得不临时采用其他方法(不同的标志、额外步骤),请更新此 SKILL.md,确保下次调用时无需再次采用相同的变通方法。
仅在问题真实且可复现时才更新,不要基于猜测进行更新。