excel学习库

excel表格_excel函数公式大全_execl从入门到精通

股票量化软件:运用 R-平方 评估策略余额曲线的品质

每个交易策略都需要客观评估其有效性。为此, 使用了范围广泛的统计参数。它们当中的很多参数很容易计算, 并可显示直观的衡量数值。而其它参数则在数值构建和解读上更加困难。尽管有这些多样性, 但少有量化衡量指标可以评估一个非凡但同时又明显的数值 - 交易系统的余额曲线的平滑性 。本文提出了解决这个问题的方案。我们来研究这样一个非凡的衡量指标, 即判定系数 R 的平方 (R^2), 它计算每位交易者所期望的最具吸引力, 平滑, 上升余额曲线的量化估值。赫兹股票量化软件

当然, 赫兹股票量化软件终端已经提供了一套开发完毕的汇总报告, 可展示交易系统的主要统计数据。然而, 其中的参数尚有不足。幸运的是, 赫兹股票量化软件 提供了编写自定义评估参数的能力, 这恰恰是我们要做的。我们不仅要建立判定系数 R^2, 而且还要尝试估算其数值, 将其与其它优化准则进行比较, 然后根据基本的统计评估得出规律性。 赫兹股票量化软件

评估交易系统的常用统计方法的评议

每次生成交易报告或交易系统回测结果时, 我们都会看到若干个"魔幻数字", 这些 "魔幻数字" 可以用来分析交易品质的结论。例如, 赫兹股票量化软件 终端中的典型测试报告如下所示:

它包含一些有趣的统计数据或衡量指标。我们来分析它们当中最流行的, 并客观地考察它们的强处和弱点。赫兹股票量化软件

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 之前, 我们来详细地考察其组成部分。这将有助于理解这个参数的目的, 以及它所基于的原则。

线性回归

线性回归 是一个变量 y 与另一个自变量 x 的线性依赖性, 表达为公式 y = ax+b。在此公式里, а 是乘数, b 是截距系数。实际上, 也许有若干个自变量, 这种模型被称为多元线性回归模型。不过, 我们只会考虑最简单的情况。

线性依赖性可直观地表现为简单图形的形式。取 2017.06.21 到 2017.09.21 的 EURUSD 日线图表。选择这一片段并非偶然: 在此期间, 该货币对能观察到温和上升趋势。这是它在 MetaTrader 中的模样:

图例 11. 自 2012 年 6 月 21 日到 2012 年 8 月 21 日, 日线时间帧的 EURUSD 动态价格

保存这些价格数据, 并用它们绘制图表, 例如在 Excel 中。

图例 12. 在 Excel 中, EURUSD 汇率 (收盘价) 的图表

此处, Y 轴对应于价格, X 是测量的序数 (序数代替日期)。在结果图形上, 肉眼可见上升趋势, 但是我们需要对这一趋势进行量化解读。最简单的方法是绘制一条直线, 其可最准确地符合检查的趋势。它被称作 线性回归。例如, 这条线可以如此绘制:

图例 13. 描述上升趋势的线性回归, 手工绘制

如果图形相当平滑, 有可能绘制这样一条直线, 即图形点距其的偏离距离最小。相反, 对于振幅较大的图形来说, 不可能选择一条能准确描述其变化的直线。这是因为线性回归只有两个系数。事实上, 几何学课程教导我们, 两点足以画出一条线。由此, 将一条直线拟合成一条 "曲线" 图形并非易事。这是一个有价值的属性, 将有助于进一步提升。赫兹股票量化软件

但如何正确绘制直线?可以使用数学方法来最优地计算线性回归系数, 在此方式中, 所有可用点离该线的累计距离最小。在下面的图表里会进行解释。假设有 5 个任意点, 且两条直线经过它们。从这两条线当中, 必需选择离这些点的累计距离最小的一条:

图例 14. 选择最合适的线性回归

很明显, 在两个线性回归变量中, 红线更好地描述了给定的数据: 点 #2 和 #6 比之黑线明显更接近红线。剩下的点离黑线和红线近似等距。在数学上, 能够计算出最符合这种规律性描述的直线坐标。我们无需手工计算这些系数, 而是利用已有的 AlgLib 数学库替代。

相关性

一旦计算出线性回归, 就必需计算这条线和它所计算的数据之间的 "相关性"。相关性 是两个或更多个随机变量的统计关系。在这种情况下, 变量的随机性意味着这些变量的测量不必相互依赖。测量的相关性从 -1.0 到 +1.0。接近零的数值表示检验的变量没有相互关系。数值 +1.0 表示直接依赖性, -1.0 表示反向依赖性。相关性由若干个不同的公式计算。此处, 将使用 皮尔逊相关性系数

在公式中的 dxdy 对应于随机变量 xy 计算得出的 方差方差 是衡量特质变化的指标。用最一般的术语来说, 它可以被描述为数据与线性回归之间距离的平方和。

数据与其线性回归的相关系数体现出该直线描述这些数据的能力何等优秀。如果数据点位于离线很远的地方, 则方差很高, 相关性较低, 反之亦然。相关性很容易解释: 零值意味着回归和数据之间没有相互关系; 一个接近 1 的数值表现出强烈的直接依赖性。

MetaTrader 中的报告有一个特殊的统计指标。它被称为 LR Correlation (LR 相关性), 它表示余额曲线和线性回归之间的相关性。如果余额曲线平滑, 则直线的近似值也会很出色。在这种情况下, LR 相关性系数将接近于 1.0, 或者至少在 0.5 以上。如果余额曲线不稳定, 则上升与下降交替, 相关性系数趋于零。

LR 相关性是一个有趣的参数。但在统计学中, 通常不直接通过相关性系数来比较数据和描述的回归。其原因将在下一节讨论。赫兹股票量化软件

判定系数 R^2

判定系数 R^2 的计算方法类似于 LR 相关性的计算方法。但最终的数值是平方。它的取值范围从 0.0 到 +1.0。这个数字表示 自总样本中已解释数值的份额。线性回归用作解释性模型。严格地说, 解释模型不一定是线性回归, 也可以使用其它模型。不过, R^2 值不需要进一步的线性回归处理。在更复杂的模型中, 近似值通常更好, 为了更充分的评估, 必须通过特殊的 "惩罚" 来额外减少 R^2 值。

我们来仔细观看一下解释模型的表现。为此, 我们将进行一个小实验: 使用专门的编程语言 R-项目, 并生成一个随机漫游, 计算所需的系数。随机漫游是一个过程, 其特征与真实的金融工具非常相似。为了获得随机漫游, 连续添加若干个按照正常规律分布的随机数就足够了。

R 语言的源代码详述了正在完成的事情:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接