量化交易软件:运用 R-平方 评估策略余额曲线的品质
引言
每个交易策略都需要客观评估其有效性。为此, 使用了范围广泛的统计参数。它们当中的很多参数很容易计算, 并可显示直观的衡量数值。而其它参数则在数值构建和解读上更加困难。尽管有这些多样性, 但少有量化衡量指标可以评估一个非凡但同时又明显的数值 - 交易系统的余额曲线的平滑性 。本文提出了解决这个问题的方案。赫兹量化软件 来研究这样一个非凡的衡量指标, 即判定系数 R 的平方 (R^2), 它计算每位交易者所期望的最具吸引力, 平滑, 上升余额曲线的量化估值。 当然,赫兹量化软件 终端已经提供了一套开发完毕的汇总报告, 可展示交易系统的主要统计数据。然而, 其中的参数尚有不足。幸运的是, 赫兹量化软件 提供了编写自定义评估参数的能力, 这恰恰是我们要做的。赫兹量化软件 不仅要建立判定系数 R^2, 而且还要尝试估算其数值, 将其与其它优化准则进行比较, 然后根据基本的统计评估得出规律性。

编辑切换为居中
评估交易系统的常用统计方法的评议 每次生成交易报告或交易系统回测结果时, 赫兹量化软件 都会看到若干个"魔幻数字", 这些 "魔幻数字" 可以用来分析交易品质的结论。例如,赫兹量化软件 终端中的典型测试报告如下所示:

编辑切换为居中
图例 1. 交易策略的回测结果 它包含一些有趣的统计数据或衡量指标。赫兹量化软件 来分析它们当中最流行的, 并客观地考察它们的强处和弱点。Total Net Profit (净利润总计)。该衡量指标示意在测试或交易期间赚取或损失的总金额。这是最重要的交易参数之一。每位交易者的主要目标是利润最大化。有多种方法可以做到这一点, 但最终的结果总归一点, 那就是净利润。净利润并非总是取决于成交的数量, 实际上它独立于其它参数, 但反过来是不对的。因此, 相对于其它衡量指标, 它是 不变的, 所以可以独立于它们使用。不过, 这个衡量指标也有严重的缺陷。 首先, 净利润直接取决于是否使用资本复利。当使用资本复利时, 利润增长呈现非线性。资金经常爆发性指数增长。在这种情况下, 测试结束时所记录的净利润数字往往达到天文数字, 而现实当中却一无所获。如果按照固定手数进行交易, 资金增量更趋线性, 但在这种情况下, 利润取决于所选择的交易量。例如, 如果测试结果如上表所示, 使用 0.1 手的固定交易量进行测试, 则获得的利润 $15,757 可视为一个显赫的结果。如果交易量是 1.0 手, 那么测试结果就逊色很多。这就是为什么有经验的测试人员更喜欢针对金融市场将手数固定为 0.1 或 0.01。在这种情况下, 余额的最小变化等于金融工具的一个点, 这令分析这个特性更加客观。 其次, 最终结果取决于测试期限的长短或交易历史的持续时间。例如, 上表所列的净利润可能是在 1 年或 5 年内获取的。而在每种情况下, 相同的数字意味着策略的有效性完全不同。 第三, 毛利在上一日期的时间里是固定的。不过, 那个时候资本也许会大幅回撤, 而一星期前可能不会。换言之, 这个参数深度依赖于所选择的测试或生成报告的起点和终点。 Profit Factor (盈利因子)。这可以说是专业交易者最受欢迎的统计数据。虽说新入行者只想看总利润, 但专业人士发现知晓所投资资本的转折是必不可少的。如果认为交易亏损也是投资的一种, 那么盈利因子就展现了交易的边际性。例如, 如果只有两笔交易, 第一笔交易损失 $1000, 第二笔交易赚取 $2000, 则此策略的盈利因子为 $2000/1000 = 2.0。这是一个非常良好的数字。此外, 盈利因子既不取决于测试时间跨度也未基于交易量手数。因此, 专业人士非常喜欢。但是, 它也有缺点。 其中之一是盈利因子数值高度依赖于成交数量。如果只有少量成交, 得到的盈利因子等于 2.0 甚至 3.0 单位是完全可能的。另一方面, 如果有大量成交, 那么获得 1.5 单位的盈利因子都是一个巨大的成功。 Expected Payoff (预期收益)。这是一个非常重要的特征, 指明平均交易回报。如果策略有利可图, 预期收益是正数值; 亏损策略则为负数值。如果预期收益与点差或佣金成本相当, 那么这一策略在真实账户上的盈利能力就要深表怀疑。正常的话, 在策略测试器中的理想执行条件下预期收益可以为正, 余额图形可以是一条平滑的上升曲线。然而, 在实盘交易中, 由于可能出现所谓的重新报价或滑点, 平均成交回报可能比理论计算结果稍差, 这也许会对策略的结果产生严重影响, 并导致实盘亏损。 它也有其缺点。主要的一点也与交易的数量有关。如果只有少量成, 那么获得较大的预期收益并不是问题。另一方面, 当有大量成交时, 预期收益趋向于零。由于这是一个线性衡量指标, 因此不能用于施行资金管理系统的策略。但专业交易者高度重视它, 并将其用于固定手数的线性系统, 将其与成交的数量进行比较。 Number of Deals (成交数量)。这是一个重要的参数, 它显式或间接地影响大多数其它特性。假设一个交易系统在所有情况下的胜率为 70%。与此同时, 获胜与亏损的绝对值是相等的, 在交易策略中没有其它可能的交易结果。这样的系统似乎非常优秀, 但效率评估只基于最后两笔交易, 发生了什么呢?在 70% 的案例中, 其中之一有利可图, 但两笔成交盈利的可能性仅为 49%。也就是说, 在一半以上的案件中, 两笔交易的总成果将为零。因此, 在一半的情况下, 统计数据将表明该策略无法赚钱。其盈利因子总是等于 1, 预期收益和利润为零, 其它参数也示意效率为零。 这就是为什么成交的数量必须 足够 大的原因。但 足够
说明什么?通常可接受的说法, 任何样本均应包含至少 37 次测量数据。这是统计学中的一个神奇数字, 它标志着参数代表性的下限。当地, 这些成交的数目还不足以评估一个交易系统。至少需要 100-10 笔成交才能得到可靠结果。而且, 对于众多专业交易者来说这也是不够的。他们设计的系统至少要进行 500-1000 笔成交, 之后再用这些结果考察运行的系统用于实盘交易的可能性。 当测试交易系统时常用统计参数的行为 交易系统的统计数据当中, 主要参数已进行了讨论。赫兹量化软件 来看看它们在实践中的表现。与此同时, 我们将重点讨论它们的缺点, 看看提议的 R^2 统计量的形式如何有助于解决它们。为此, 我们将使用 "通用智能交易系统: 使用挂单" 一文中所描述的现成 CImpulse 2.0 EA。选择它是因为其简单性和可优化性, 不像来自标准 赫兹量化软件 软件包的智能系统专, 它对于本文的目的极端重要。此外, 还需要一些底层代码结构, 而这些已为 CStrategy 交易引擎编写, 所以无需再次完成相同的工作。判定系数的所有源代码都是这样编写的, 它们可以很容易地在 CStrategy 之外使用 — 例如, 在第三方函数库或过程智能系统中使用。Total Net Profit (净利润总计)。如前所述, 净 (或总计) 利润是交易者想要得到的最终结果。利润越大越好。然而, 基于最终利润评估策略并不能保证一直成功。我们来研究一下 2015.01.15 至 2017.10.10 期间 CImpulse 2.0 策略在 EURUSD 货币对上的测试结果:

编辑切换为居中
图例 2. CImpulse 策略, EURUSD, 1H, 2015.01.15 - 2017.10.01, PeriodMA: 120, StopPercent: 0.67 在这个段测试期间内, 这个策略看来展示出总利润的稳定增长。交易一份合约, 数额为正 11,894 美元。这是一个很好的结果。但我们来看看不同的情景是什么样的, 这次最终的利润接近于第一种情况:

编辑切换为居中
图例 3. CImpulse 策略, EURUSD, 1H, 2015.01.15 - 2017.10.01, PeriodMA: 110, StopPercent: 0.24 尽管这两种情况利润几乎相同, 但它们看起来像完全不同的交易系统。第二种情况的最终利润似乎也是随机的。如果测试在 2015 年中结束, 利润将接近于零。 这是另一个不成功的策略, 最终的结果也与第一种情况非常接近:

编辑切换为居中
图例 4. CImpulse, EURUSD, 1H, 2015.01.15 - 2017.10.01, PeriodMA: 45, StopPercent: 0.44 从图表中可以清晰看出, 主要获利来自 2015 年上半年。随之而来的是一段长久的停滞。这样一种策略对于实盘交易不是一个可行的选项。 Profit Factor (盈利因子)。盈利因子衡量指标对最终结果的依赖性要小得多。该数值取决于每笔成交, 并显示所有资金赢余与所有资金亏损的比率。可以看出, 在图例 2 中, 盈利因子相当高, 在图例 4 中, 它是较低的; 而在图例 3 中. 它几乎处于盈利和不盈利体系之间的边界。但尽管如此, 盈利因子并非普遍特征, 它也能被欺骗。赫兹量化软件 来看看其它例子, 其中盈利因子指示不那么明显:

编辑切换为居中
图例 5. CImpulse, EURUSD, 1H, 2015.01.15 - 2017.10.01, PeriodMA: 60, StopPercent: 0.82 图例 5 显示以最大盈利因子数值之一运行策略测试的结果。余额图看起来相当看好, 但是获得的统计数据是误导性的, 因为交易数量稀少, 盈利因子数值被夸大了。 赫兹量化软件 以两种方式来验证这段陈述。第一种方式: 找出盈利因子对交易数量的依赖。这是通过在策略测试器中使用范围广泛的参数来优化 CImpulse 策略完成的:

编辑切换为居中
图例 6. 使用范围广泛的参数来优化 CImpulse 保存优化结果:

编辑切换为居中
图例 7. 导出优化结果 现在赫兹量化软件 可以建立一个盈利因子值对交易数量的依赖图表。例如, 在 Excel 中, 可以通过选择相应的列, 并在 "图表" 选项卡中按下绘制散点图的按钮来完成此操作。

编辑
图例 8. 盈利因子对交易数量的依赖 图表清楚地表明, 若是运行结果盈利因子数值高则总是交易数量寥寥。相反, 在大量交易中, 盈利因子几乎等于一。第二种方式 判断在这种情况下的盈利因子数值取决于交易的数量, 且与策略品质执行 Out Of Sample (OOS 样本外) 测试无关。顺便说一下, 这是判断所得结果稳健性的最可靠方法之一。稳健性在评估中是统计方法稳定性的一个衡量指标。OOS 不仅能有效地测试盈利因子, 还有其它指标。对于我们的目的, 将选择相同的参数, 但时间间隔将有所不同 — 从 2012.01.01 到 2015.01.01:

编辑切换为居中
图例 9. 样本外测试策略 正如所见, 这个策略的行为是上下颠倒的。它产生的是亏损而非盈利。这是一个合乎逻辑的结果, 因为交易数量如此之少, 获得的结果几乎总是随机的。这意味着在一个时间间隔内的随机盈利要通过另一个时间间隔中的亏损来补偿, 这在图例 9 中得到很好地描绘。Expected Payoff (预期收益)。赫兹量化软件 不会详细讨论这个参数, 因为它的缺点与盈利因子的缺陷类似。此处是预期收益对交易数量的依赖图表:

编辑
图例 10. 预期收益对交易数量的依赖 可以看出, 交易越多, 预期收益就越小。对于可盈利和非赢利的策略, 都始终遵守这种依赖关系。因此, 预期收益不能作为交易策略优化的唯一准则。 交易系统的测试准测需求 在考察了交易系统的统计评估中的主要准则之后, 得出的结论是每个准则的适用性均有限。它们当中的每一个都可以通过一个例子来反演, 其衡量结果良好, 而策略本身则不然。 没有判断交易系统稳健性的理想标准。但制定一个强力统计标准必备属性是可能的。
独立于测试周期的持续时间。交易策略的许多参数取决于测试周期的长度。例如, 一个盈利策略的测试周期越长, 最终利润 就越大。这取决于持续时间和 恢复因子。它是计算总利润与最大回撤之比。由于利润取决于期限, 恢复因子也随着测试期限的增加而增长。相对于期限的不变性 (独立性), 必须要比较不同策略在不同测试期限的有效性;
独立于测试终点。例如, 如果一个策略只是通过亏损扛单才能 "保持平稳", 终点也许对最终的余额产生重大影响。如果测试在 "逾期逗留" 之时已经完成, 则浮亏 (净值) 变为余额, 并在账户上产生可观的回撤。应保护统计数据不受此类欺诈的影响, 并为交易系统运作提供客观的概述。
简单的释义。交易系统的所有参数都是 量化的, 即每个统计量都是由一个特定的数字表征的。这个数字必须直观。所获数值的解释越简单, 参数越易于理解。还希望参数在一定的边界范围内, 因为海量分析以及潜在的无限量数字通常很复杂。
少量成交所代表的结果。这可以说是衡量一个优良指标的最难要求。所有统计方法均取决于测量的次数。次数越多, 得到的统计就越稳定。当然, 少量样本完全不可能解决这个问题。然而, 可以减轻由于缺乏数据而造成的影响。为此目的, 我们开发两种类型的函数来评估 R-平方: 一种实现将基于可用成交的数量来构建这个标准。另一种是使用策略浮盈 (净值) 计算标准。
在直接描述判定系数 R^2 之前, 我们来详细地考察其组成部分。这将有助于理解这个参数的目的, 以及它所基于的原则。