回测及参数优化:WFA推进分析优化
Work for Analysis,简称WFA,也叫推进分析(有的也称为“移动窗口优化”)。我们从三个角度讲解:什么是推进分析、如何使用、使用注意事项。我认为WFA是优化策略的最佳方案,在回测和优化中起决定性作用。
一、什么是WFA?
WFA最初由罗伯特·帕尔提出,卡夫曼等学者的著作中也有提及。其本质是通过多阶段方法处理优化过程,提升参数有效性,降低过拟合风险。
传统优化方法(ISOOS)的问题
传统方法分为训练集(样本内和验证集(样本外两阶段:
- 优点:
- 样本内数据长,交易笔数多,统计意义强。
- 步骤简单,回测和优化速度快。
- 缺点:
- 参数折中问题:样本内涵盖多种市场阶段(牛/熊/震荡),优化参数是各阶段的折中解,而非针对当前阶段的最优解,导致实盘表现平庸。
- 样本外数据不足:样本内数据过长会压缩样本外数据,交易笔数少,参数统计显著性差,降低实盘信心。
WFA的设计初衷就是解决上述问题。
二、如何使用WFA进行参数优化?
WFA将优化过程分为多个独立阶段,每个阶段包含样本内优化和样本外验证,通过“滑动窗口”推进:
- 第一阶段:
- 样本内:如2012-2015年数据,优化得到最佳参数。
- 样本外:如2016年数据,用优化参数验证并记录绩效。
- 第二阶段:
- 样本内窗口向前滑动,与上一阶段样本外结束时间对齐(如2013-2016年),重复优化和验证,记录绩效。
- 重复推进:直至处理完所有数据,最终用最后阶段的优化参数实盘(需满足预设绩效标准)。
案例演示(以恒生HK50策略为例)
- 数据:16年数据(2012-2022年),按每年划分样本外阶段。
- 操作步骤:
- 在MT5中,对每个样本内区间(如2012-2015年)进行参数优化,保存最佳参数(如20/250/20)。
- 将参数应用于对应样本外区间(如2016年),生成绩效报告(保存为HTML文件)。
- 滑动窗口至2013-2016年,重复上述步骤,直至覆盖所有年份。
- 结果合并:
用Python或QuantAnalyzer将各阶段绩效合并为总资金曲线,评估是否满足要求(如蒙特卡罗模拟标准)。
WFA的优势
- 样本外数据量提升:传统方法样本外可能仅
4年
,WFA可累积至9年
,增强统计显著性和实盘信心。 - 参数适配当前环境:每个阶段基于最新市场数据优化,避免折中解,降低过拟合风险。
三、WFA使用注意事项
1. 通用注意事项(与传统方法共通)
- 统计显著性:确保样本内/外交易笔数足够,避免参数优化因数据不足失效。
- 参数数量控制:优化参数过多(如5个以上)易导致过拟合,实盘表现差。
- 迭代步长合理:参数迭代步长需科学(如10、20、30…),避免无效遍历(如1、2、3…)。
2. WFA特有注意事项
- 阶段划分不宜过细:若每个阶段样本内数据过小,训练数据不足,参数可能为随机产物,而非策略真实优势。
- 样本内/外比例:
- 无统一标准,参考原则:参数越多,样本内需越多(如3个参数可按80%样本内+20%样本外)。
- 个人经验:固定为4:1(4年样本内+1年样本外),确保各阶段市场环境差异显著(类似康波周期分阶段)。
ISOOS
优点
- 简单易懂: ISOOS的概念和流程相对简单明了,对于初学者更为友好。
- 易于实施: 对参数进行优化的过程易于进行,对于大多数交易软件或平台来说,基本都支持进行ISOOS优化。
缺点
- 结果可能过于理想化: 通过ISOOS进行参数优化,可能会产生过拟合的情况,即在样本内测试表现良好,但在实际操作(样本外)中表现糟糕。
WFA
优点
- 防止过拟合: 通过滚动优化方式,反复对新的样本进行优化,能够更好地防止过拟合的情况。
- 更接近实际环境: WFA尝试通过滚动优化模拟实际交易中的环境,因此能提供一个更加接近实际的参数优化选择。
缺点
- 流程复杂: 与ISOOS相比,WFA的流程更为复杂,需要对数据进行多次划分,并且逐步进行优化。
- 计算和数据集资源占用大: 由于需要反复进行数据清洗、优化、回测,因此对计算资源和数据的需求比ISOOS大得多。
理论总结:从理论上讲,WFA比ISOOS更为科学且实用,但在实际过程中更耗时和复杂。具体选择需结合自身情况。