今天初八,估计大部分人都开始上班了,我这边基本也结束假期。不过到元宵节这一段时间会思考计划今年的工作重点,元宵节后才会正式上班。这段时间有任何问题随时联系我。
       今天随便聊聊WF优化法,这个优化方式在正规量化圈子里比较常用。外汇ea交易中最关键的挑战是EA参数优化和策略开发中的过度拟合问题,这个问题长期存在,只能积极应对,没有一劳永逸的解决方案,WF优化法就是最有名的针对这个问题的方案。今天只聊下这优化方式的原理和流程,至于能不能掌握,适不适合自己要求看自己。
       WF优化全称是Walk-Forward优化法,是一种动态参数优化技术,主要目的是为了避免过度优化和提高稳定性,其主要思路是:用历史数据片段优化参数 → 在紧随其后的未知数据上验证 → 推进时间窗口重复此过程”。通过这种分段验证机制,确保策略参数在不同市场环境中保持适应性,而非依赖单一历史区间的过度拟合参数。
       以下是的WF优化的流程,细节或有不同,大概流程基本正确。

一、数据准备

  1. 数据来源
    • 收集可靠的历史数据,通常选用高精度tick数据, 最好是专业数据服务商提供。
    • 确保数据涵盖足够长的时间周期(覆盖趋势-震荡-翻转或重大事件转折点包含等),以反映不同的市场环境。针对不同策略模型,一般5-15年。
  2. 数据清洗
    • 检查数据完整性,处理缺失值或异常值。
    • 确保数据的时间戳准确无误。
  3. 选择时间框架
    • 根据策略需求选择合适的时间框架(如M15、 H1、H4、D1 等)。

二、划分时间窗口

  1. 确定训练窗口和测试窗口
    • 将历史数据划分为多个连续的训练窗口和测试窗口。
    • 训练窗口用于参数优化,测试窗口用于验证策略表现。
  2. 窗口大小与步长
    • 训练窗口和测试窗口的大小应根据数据量和市场特性进行调整。
    • 步长(即窗口向前滚动的距离)通常设置为训练窗口大小的一定比例(如 25% 或 50%)。
  3. 示例划分
    • 假设总数据周期为 10 年,训练窗口为 5 年,测试窗口为 1 年。
    • 第一个训练窗口:2013-2018 年。
    • 第一个测试窗口:2019 年。
    • 窗口向前滚动 1 年后,第二个训练窗口:2014-2019 年。
    • 第二个测试窗口:2020 年。
    • 依此类推,直到覆盖整个历史周期。
三、参数优化

  1. 定义优化目标
    • 明确优化目标(如最大化收益、最小化回撤、提高胜率等)。
    • 确定需要优化的参数(如移动平均线周期、RSI 阈值等)。
  2. 选择优化方法
    • 常用的优化方法包括网格搜索、随机搜索、遗传算法等。
    • 在训练窗口上对参数进行优化,找到表现最佳的参数组合。
  3. 优化过程
    • 在每个训练窗口上运行回测,评估不同参数组合的表现。
    • 记录最优参数及其对应的绩效指标(如净利润、胜率、夏普比率等)。

四、测试与验证

  1. 在测试窗口上验证
    • 使用优化后的参数在对应的测试窗口上进行回测。
    • 记录策略的表现,评估其在独立数据上的有效性。
  2. 绩效指标分析
    • 关注关键绩效指标(如净利润、最大回撤、胜率、交易次数等)。
    • 比较训练窗口和测试窗口的表现,判断是否存在过拟合风险。
  3. 结果记录
    • 将每个窗口的优化参数和测试结果记录下来,便于后续分析。

五、窗口滚动与循环

  1. 窗口向前滚动
    • 将训练窗口和测试窗口向前滚动一个步长(如 1 年)。
    • 重复参数优化和测试验证过程。
  2. 循环判断
    • 检查是否已经覆盖了整个历史周期。
    • 如果尚未完成所有分段循环,则继续滚动窗口并重复优化过程。

六、结果分析

  1. 拼接所有测试结果
    • 将所有测试窗口的结果拼接起来,形成完整的回测报告。
    • 分析策略在整个历史周期内的表现一致性。
  2. 参数稳定性分析
    • 比较不同窗口下的最优参数组合,判断参数的稳定性。
    • 如果某些参数在多个窗口中表现稳定,则优先选择这些参数(核心参数选中标准80%以上适应度)。
  3. 选择最终参数集
    • 根据回测结果和参数稳定性分析,选择表现最佳且稳定的参数组合。

七、实盘应用与监控

  1. 部署到实盘交易
    • 将最终参数集部署到实盘交易中。
    • 确保交易环境(如杠杆、点差、滑点延迟等)与回测环境一致。
  2. 监控体系
    • 设置熔断机制:单日亏损超5%或周回撤超15%时暂停交易。
  3. 再优化策略定期再优化:每3-6个月重新运行WFA,避免参数失效。
触发式再优化:当滚动夏普比率低于阈值(如<0.5)时触发优化。