策略健壮性分析 前进优化法

什么是优化?

优化很容易理解。首先, 假设你有一个交易系统——例如, 一个简单的移动平均线交叉策略: 如果 EMA(10) 向上穿越 EMA(20) 就做多, 相反地向下穿越就做空。

几乎在每个交易系统中, 都有一些参数 (指标周期、要比较的常量等) 会影响交易系统的绩效表现。优化意味着找到这些参数的最佳值 (以获得最好的利润或最佳的 Return/DD比率或其他绩效指标)。

例如,上面的系统使用EMA(15)穿越EMA(50)会不会更好?

优化可以帮助您在历史数据上,找到交易系统绩效表现最佳的参数值。

什么是前进优化法分析 Walk-Forward Optimization?

前进优化将历史数据分成多个小的部分,循环分段进行策略的优化和测试。

在这种技术中, 您可以优化过去一段市场数据上的参数值, 然后通过在这个优化段之后的数据段上及时测试来验证系统的绩效表现, 并且该过程可以在后续时间重复进行。

前进优化的工作原理

在前进优化中, 数据被划分为几个周期段 (本例中为 5个)。每个周期由优化部分(绿色部分)和运行检验部分(红色部分)组成。

前进优化的数据分段

程序从optimization period 1开始。它将在optimization period 1上进行简单的优化, 以找到最佳参数值。然后将这些参数值应用于run period 1——策略是使用上一步中找到的优化参数进行交易。

在run period 1结束时, 系统再次用标记为optimization period 2的数据段运行简单的优化。它找到最佳的参数值, 并再次用于run period 2中的交易。

这一直持续到run period 5,至此全用于测试的历史数据全部用完。

前进优化是模拟您在真实交易时如何使用该策略——您可以在某些历史数据上对其进行优化, 然后使用最佳值进行交易。过了一段时间, 你会想重新优化它, 让它能够再次交易。

前进优化分析告诉你什么?

它可以告诉你,如果策略足够稳健,并且策略是否可以通过重新优化来提高其绩效表现。

如果在重新优化过程中, 策略绩效表现比原来的非优化时更差,这是曲线拟合的一个重大信号,需要小心。

另一方面, 如果在相同数据上, 用"前进优化" 优化后的策略的绩效优于非优化版本, 则会告诉您:

1. 您的策略将从优化中获益, 因此您应该定期对其进行重新优化, 以获得最佳绩效表现;

2. 这也意味着,策略足够稳健, 足以应对市场变化(使用再优化), 未来也很有可能奏效。

StrategyQuant中的前进优化示例

在StrategyQuant中执行前进优化很简单, 在接下来,我将展示完整的过程。

为了简单起见, 我们将在本例中使用 ema cross 策略。请注意, 此策略基本上是不盈利的, 并且重新优化对它没有帮助, 这里我们只是演示优化的工作原理。

步骤 1: 加载策略

首先, 你必须切换到优化器窗口, 并加载你想要进行最佳优化的策略。

加载策略

在这个例子中, 我们将使用简单的 ema _ cross 策略, 当短期 ema 上穿长期ema 时, 该策略会做多, 而当短期 ema 下穿长期ema时, 该策略将做空。加载策略后, 它也会作为原始策略添加到优化结果数据库中。

您可以双击原始策略, 然后转到结果-> 源代码以查看其规则。

策略源代码

请确保选中 " Put values to parameters " 复选框, 以便看到用于存储指标参数的变量 pLongEMA_1、pLongEMA_2、pShortEMA_1 pShortEMA_1。在我们的优化中, 我们将尝试找到这些参数的最佳值。

步骤 2: 设置优化值

要设置要优化的值, 我们必须转到 Settings -> Parameters

优化参数列表

在这里, 您可以看到可用于优化的策略参数的列表。优化,简单理解意味着尝试输入参数的不同值。

对于要优化的每个参数,都必须检查该参数所在行的 "Start"、"Stop" 和 "Step" 值。优化器将循环尝试从按步长Step,从Start到 Stop 的值。原始值也是可配置的, 它将用于重新测试原始策略。您可以使用此值将新结果的绩效与 "原始" 设置进行比较。

Number of tests值显示了要执行多少个测试才能测试值的所有组合。

步骤 3: 配置前进优化

我们还必须设定walk-forward设置。在本例中, 我们将使用30% 的 "样本外" 数据和6段前进优化。

walk-forward设置

也可以根据确切的天数来划分优化(样本内)和检验运行(样本外)数据段, 您可以通过选中 "checking Define specific number of days" 来实现。

步骤 4: 检查结果

前进优化比简单优化需要更长的时间, 因为有 6个 (或更多) 优化步骤, 而不仅仅是一个。

前进优化结果

当它完成时, 我们将看到我们在数据库中只有两个结果——原始策略和前进优化结果。

前进优化结果

根据我们的稳健性分数设置, 我们可以看到, 该策略没有通过前进优化测试。

稳健性得分是完全可定制的。我们可以在稳健性评分组件表 (1) 中设置要监视的所有条件, 并设置它们的边界值。

主要的稳健性分数阈值 (2) 表示,必须要达到这个标准80%以上,WF结果才被认为是成功的。

在此表中的右侧, 我们可以检查每个优化和运行周期的结果:

前进优化6段数据

你可以看到, 6个run period中只有2个最终获得了利润。

我们还可以查看策略的利润曲线图:

优化利润曲线对比

蓝线代表重新优化的策略, 而灰线表示原始的非优化策略。

结果解释

首先, 很明显, 在使用再优化时, 这个策略并没有更好的结果。

当然, 这个原始策略就不具备盈利性, 不会通过再优化变得盈利。

但是,我们应该分成几段优化检验周期?我们应该设置多大的样本外数据?怎么做才是最合理的,这个就需要用前进优化矩阵Walk-Forward Matrix才能测试了。

(END)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181216A0PV7200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券