Local EPUB Text
优化
优化过程中要注意的主要问题是数据拟合曲线的倾向。仅当系统程序找到绝对最佳的参数时,才会发生数据与曲线完全吻合的情况。而系统所做的事情往往是将参数和测试系统进行匹配。这样就会形成特定数据的数学模型,并将参数与特定时段的数据拟合。系统未来交易时,若要出现数据与参数完全拟合的状况,除非未来会原封不动地重复历史。当然,我们知道这种情况绝对不可能发生,因此通过系统优化确定的参数,对未来的交易很可能毫无用处。任何系统在优化后看起来都能盈利,系统购买者在决定购买特定的交易或投资系统时,必须明白历史不可能重演,但是系统会有过度拟合收益曲线的倾向。可行的做法是在某个阶段进行优化,然后在没有实施优化的时段开展对优化所得参数的测试。这种做法叫作样本外测试(out-of-sample testing)。我们最终会发现优化过程中的业绩有可能夸大了实际的效果,在样本外测试中,结果表现得根本没有那么好,因此不能使用优化的参数来评价系统的有效性。应正确对待优化及其结果。调整系统只会增加人们对系统的错误自信,当系统失败时,人们对交易系统的那份自信最终会在现实中被打得粉碎。
优化这一步骤能否帮助建立良好的自动交易系统?对于这一问题,人们争论颇多。现实的优化基本规则是尽可能简化操作,对样本内的优化结果进行样本外测试,最好使用多种交易标的进行测试,从而确定参数的范围,而不是单个参数值,要懂得最佳结果是以风险最小获得高利润。不要寄希望于所谓的天降横财,即使有“圣杯”,交易中也未必能获得市场青睐。接下来,我们将讨论优化的方法,了解在确定了更符合现实的参数范围后,实施具备统计学显著性特征测试的方法。
优化方法
作为一般原则,应该使用相当长时间的数据辅助优化的完成,所用的时期包括趋势明显的时期和交易区间阶段,我们不可能提前知道未来是否会和过去相似,但是知道市场要么呈现趋势化运动,要么就会在交易区间内进行整理。任何系统都应该具备应付这些情况的能力,并设定了可调整的参数范围或适应这些情况的规则。按照这种方法确定的参数能够适应将来的情况。
全样本
优化的一种方法是采用整个价格样本进行参数优化。很多人对这种方法不以为然,因为这种方法与拟合曲线没什么区别。为了避免这个问题,采用多种交易标的包括股票或期货进行优化测试,不要采用单个市场的平均值,而应采用长周期多笔交易的数据。交易标的多样化可以避免依照某一种股票的特征进行参数优化的情况,大量的信号增加了优化结果的统计显著性。在确定了优化的参数范围以及那些表现稳定良好的结果(不一定是最佳结果)之后,下一步是将优化的时间划分为10段,在每一段分别测试优化所得的参数。分析从这10个小时段测试获得的结果,可以帮助我们观察系统是否能在不同情况下产生类似的结果。要查看的信息包括回撤的幅度、信号的数量、连续损失的数量、净利润比最大回撤幅度百分比等。实际的净利润对每一个阶段的意义相对来说是次要的,重要的是确定风险程度和结果的一致性(Ruggiero,2005)。如果各个小时段的测试结果不一致,则表明系统存在大问题,应该使用其他方法继续优化,还可以考虑干脆放弃不用这个系统。
样本外优化
样本外优化经常用于神经网络和回归分析。我们不会细谈这些方法的来历或操作,因为借助其他数据系列,这些方法才显得更有用。它可以用于市场分析,卢·门德尔松(Lou Mendleson,www.profittaker.com)声称使用神经网络形态可以将不同市场成功关联起来。在研究优化这一内容时,我们忽略神经网络、多元回归和其他诸如遗传算法、专家系统和人工智能等内容。我们主要集中于最常见、最有效方法的讨论,了解那些系统设计者最常用的方法。
一种常用的样本外优化的变体是采用整体价格数据序列进行优化,然后再把数据分割,其中70%~80%的数据用于开发系统,称为“样本内”数据,剩余的20%~30%的数据称为样本外数据。样本外数据包括开始一小段时间和最后一小段时间的数据,或者只有最后一段时间的数据。与其他所有测试方法一样,所采集的数据必须包括牛市、熊市和盘整阶段的数据。所有优化过程需要的数据总量要足够多。用于测试的数据要包括完整的上涨、下跌和盘整阶段的情况。市场发生的所有情况都应该纳入优化测试,这样系统才能学会如何适应市场的变化。
样本外优化方法可以针对样本内数据进行,然后对样本外数据进行测试。样本外数据测试结果从理论上来讲,正是系统在实时交易中可能碰到的情况。可以预料到的是,样本外数据的表现可能要比优化过程内得到的结果逊色很多。假如样本外数据测试结果不令人满意,可以重复这一方法,但是样本外测试结果用作参数越多,优化参数的客观性受到影响的程度就越深,整个过程就越吻合收益曲线。最后,如果照这种趋势延续下去,样本外数据与样本数据测试不会有多少区别,优化过程也就无异于曲线拟合。还有一种减少拟合曲线影响的方法,是使用多个市场进行样本外测试。很难在不同的市场中使用相同的参数,同时又能做到曲线拟合。由于多数技术分析师认为每个市场都不同,有自己的特性,因此需要不同的参数,这一方法与常人的想法相悖。在筛选市面上可供出售的系统时,排除系统的方法之一是看系统是否为不同的系统设置了不同的参数。如果不同的市场有不同的参数,则证明结果是拟合曲线获得的,而不是实时操作的结果。可靠的系统应该在大多数市场都能起作用。
前向优化
前向优化也是一种样本外优化方法,所用的数据与前面的一样。虽然应用这种方法时有多种变体,但最常见的程序是先将样本内数据优化,然后在后续一小段时间内测试。例如,可以选取某年的日线数据进行优化,再用之后6个月的数据做测试。将这种测试的结果记录下来,然后放在另一个数据窗口进行优化,这一次使用的样本内数据包括了之前的样本外数据,加入之前的6个月样本内数据,再次记录下测试的结果,接着将数据窗格再往后移动,直到测试了最近的数据,并获得了一系列测试的数据。每一次优化都经过了样本外数据测试。再对所有记录的结果进行分析,查看利润率和风险是否一致。在前向优化过程中,若出现某个参数设置突然变化的情况,系统很有可能在未来不起作用。根据所有测试的结果来确定参数设置的情况。
优化和参数筛选
接下来我们介绍系统设计者在评估系统稳健性(指系统适应变化的能力)所用的不同方法和比率。我们首先介绍在优化过程中用来筛选更好的系统的方法。
采用价格数据进行优化时,结果显示了多个不同参数和每个参数的设置。我们可以观察净利润、最大回撤幅度和其他在前面提到的统计数据。许多技术分析师首先使用净利润、账户回报或盈利因子。通过检查每笔交易的平均净利润,可以判定系统产生的交易是否会受到交易成本的不良影响。更重要的是,观察净利润除以最大回撤幅度这一比率,由此判定交易和投资系统的盈利能力。任何一个系统,其盈利能力都要受到所需承受风险的影响。要牢记百分比变化法则。在盈利过程中,资本损失的风险是最重要的决定因素。净利润比最大回撤幅度的比率代表了系统的最基本表现,只可惜一些商业系统的优化软件不包括这个因子,交易者或投资者需要利用其他渠道得到的数据自行计算。
评估系统的稳健性
分析系统时,我们要检查系统的各组成部分,利润、风险和收益曲线的平滑度。我们要了解系统测试结果的稳健性。稳健性是指系统结果的适用性和合理性,表明我们的测试结果能否适应变化的市场条件。市场趋势和形态虽然有重复发生的趋向,但是未来的市场条件不可能和过去的市场条件相同,这一认识是我们系统设计的基础。因此必须要肯定系统具备在市场变化的情况下依然起到应有作用的素质。
系统组成部分
优化和测试过程最重要的一步是确定所有的计算过程都是精确无误的。这听起来很容易,其实在现实操作中我们很容易忽视这一点,而计算机程序的错误往往会导致计算错误。还有一点要注意的是要确保交易数量较大,使测试结果具有统计学显著意义。基本的原则是采用至少30~50笔交易的数据,大于50笔交易的数据更加理想。前面提到过了比较样本内和样本外测试结果的情况,可知两类数据表现不同。但是样本内和样本外测试的结果应该表明,平均的交易时间、最大连续盈利和损失交易笔数、最大亏损交易、平均亏损交易这些指标是一致的,不应该有太大的出入。我们还需要了解交易的数额和参数的稳定性。应该对所有的参数进行测试,然后根据结果确定参数的差别是否具有统计学显著性。对于系统的弱点应该进行测试,还要了解没有触发交易规则的情况。一旦我们对前期的测试感到满意,就可以更仔细地研究业绩的统计数据。
利润测量指标
实施技术分析方法的初衷是为了盈利。表面上来看,这是一个很简单的概念。只要账户余额比开始交易的时候多,系统就是盈利的。实际上,对多种可选系统的盈利性进行测量和比较不是一件容易的事情。技术分析师评估盈利性有多种方法,主要如下。
·总利润与总损失的比率,称为盈利因子(profit factor)。它是用优化结果对系统进行筛选最常见的统计工具。这一比率应该大于1,要不然系统就处于亏损状态。虽然这个数值越高说明利润更大,但是如果这个数值太大,就需要考虑其他情况。通常盈利因子大于10,提醒系统已经完全与曲线拟合了。作为一般业绩的衡量方法,盈利因子只能包括利润和损失,但不会考虑回撤幅度的影响。因此,它并不能体现风险的程度。
·超常交易调整利润(outlier-adjusted profit)与亏损之比是指根据最大利润调整过的盈利因子。有时候,系统会产生大量反常的利润或损失。如果去掉这种反常现象,就大大降低了盈利因子的数值,甚至盈利因子会低于1。如果盈利因子低于1,就证明这个系统会爆仓。因为系统完全是依靠某笔交易的利润。最大盈利交易所获利润占总利润的比率不能超过40%~50%。
·盈利交易百分比(percentage winning trades)是构成爆仓风险指标的参数。爆仓风险我们将在下一章详细介绍。显然,盈利交易越多,出现一连串头寸亏损的概率就越低。在趋势跟踪型交易系统中,这个百分比一般只有30%~50%。大多数系统希望获得盈利交易百分比高于60%的情况。但是任何大于70%的比率,都值得我们怀疑。
·年化收益(annualized rate of return)是将系统的结果与市场基准利润水平进行比较的指标。
·偿付比率(payoff ratio)是用于爆仓风险估计的计算指标。将平均盈利交易数与平均损失交易数对比形成的比率。对于跟踪趋势的交易系统来说,这个比率通常大于2.0。
·平均盈利交易时间(the length of the average winning trade)与平均损失交易时间的比率应该大于1,否则系统持有的亏损头寸过久,没有按照利润最大化的原则利用资本。对于趋势跟踪型交易系统来说,该比率大于5更好。
·效益因子(efficiency factor)是净利润除以总利润的比率(Sepiashvili,2005)。这个指标综合利用了盈利/损失比率和盈利概率。在成功的系统中,这个因子的范围应该是38%~69%,指标值越高,系统表现越好。胜率对这个因子影响较大。它表明减少亏损交易发生的数量对系统总体表现的提高比减少亏损的额度更有效,这和止损离场指令的理念很接近。
系统应该具备足够高的稳健性。参数一出现小幅度变化,盈利方法就出现诸多变化,这样的情况是绝不允许的。系统结果的稳定性比总利润额更重要。
风险测量指标
面对某个系统具有很高利润的情况,我们应该怎么办?要意识到这样的系统往往伴随着高风险。利润高是好事,但是我们必须权衡高利润与不断增加的风险的关系。分析师在系统中衡量风险的主要方法包括如下。
·最大累计回撤幅度(maximum cumulative drawdown),由连续亏损交易引起,从峰值收益起算,可以视为最大的单笔交易账面损失。从峰值起算的最大损失是最常见的用法。基本的规则是,实际操作中的最大回撤幅度应是优化测试发现值的两倍,该指标可以用于预计风险。
·MAR比率是净利润比例与最大回撤比例之比,又称恢复比率(recovery ratio)。这是在优化过程中进行初始筛选的最好工具。无论使用何种交易系统,这一比率应大于1.0。
·最大连续损失(maximum consecutive losses)经常会影响最大回撤幅度。当这一数值较大时,表明未来将遭受多种损失。必须要从过去的价格记录中找到导致这个指标值较大的原因。
·大额损失(large losses),由于股票价格震荡造成,体现系统对价格震荡的反应。
·最长平直时间(the longest flat time)表现了资金没有使用的时间。这一时间可以有效利用,腾出资本用于其他用途。
·大幅回撤恢复时间(time to recovery from draw down)可以衡量弥补损失的时间。理想状态下,这一时间较短,挽回损失比较快。
·最大有利和不利偏移(maximum favorable and adverse excursions)告诉系统设计师交易中存在偏移情况。可以用来衡量收益曲线的平滑度,也可以提示亏损交易出现的时间和位置。这个指标最大的用途是提示跟踪止损设置的位置,利用有利偏移,减少不利偏移。
·夏普比率(Sharpe ratio)应用很广泛,是超额收益(组合收益减去美国国库券收益)除以超额收益的标准差。但在应用于交易系统的时候有几个问题需要注意。首先,这个比率不包括实际的年收益,只包括平均月收益。因此,不能判定收益不规则现象。其次,这一指标不会区分上涨或下跌运动。因此,对于上涨情况,这个指标是不利的。最后,这个指标不会区别间歇性损失和连续损失。因此,即使发生连续损失导致大幅度回撤,也不会提醒我们这是非常危险的信号,对于这种连续损失导致的大幅回撤,该项指标同样认定是无关痛痒的小幅偶发性损失。
技术分析师要选择,甚至要创造对实现自己交易目标最重要的风险衡量的方法。现有研究和专业文献中提到的衡量风险的其他措施包括如下几项。
·收益回撤比率(return retracement ratio):平均年化复合收益除以最大损失比率(从峰值开始的最大跌幅,即从峰值买入的最大损失,或者低点的最大损失)。
·三年期的斯特林比率(Sterling ratio):算术平均年净利润除以平均最大年回撤幅度的比率。它与收益/付出比率(gain-to-pain ratio)类似。
·最大损失(maximum loss):从最高点算起的可能遭受的最大损失。这一方法不建议使用,因为它只代表反常情况。
·索蒂诺比率(Sortino ratio):与夏普比率类似,但是只考虑下跌的波幅,是月预期收益减去无风险比率除以负收益的标准差。
平滑度和收益曲线
有些技术分析师更喜欢用图表分析风险。对系统的表现进行肉眼分析所用的两种图像是收益曲线(equity curve)和水位曲线(underwater curve)。
收益曲线如图22-2所示,它显示了某种权益账户在特定时间的利润。理想状况下,收益曲线应该是直线,从图像的左边低点延伸到右上角的高点。曲线上的小幅下降是指由回撤造成的损失。
平滑度是指收益曲线偏离穿越收益曲线的线性回归线的标准误差。系统的平滑度通常由进场参数的变化或调整引起,比如过滤参数的变化。因为到了离场的时候,绝大多数价格行为都已经发生,离场参数和止损点对于平滑度的影响不大。
第二种观察系统表现的曲线是指水位曲线,如图22-3所示。图中显示了股票中每个连续的更高峰值发生的回撤。这一指标的单位是百分比,可以体现回撤发生的程度,还可以提示回撤恢复需要花费的时间。如图22-3所示,HAL系统开始发生的最大回撤百分比只有7%多一点。这一图像有助于我们认清楚系统的主要问题并非是回撤的幅度,而是恢复回撤所需的时间。下面将简单介绍提高系统表现的方法。
图22-3 HAL系统的水位曲线周线图(周线图:2000年1月7日~2010年7月30日)
技术分析知识22-2
HAL系统升级
现在是时候根据我们初始测试的结果升级我们的系统了。我们首先对给出的参数进行优化,看看是否有可能改善系统表现。这是第一步,表明借助曲线拟合,净利润超过35 000美元是可能实现的,而不如果不做调整,系统收益是负数。第二步是我们对结果进行前向测试,得到一个可以在近期使用的系统。我们在这里给出了一份报告。
对HAL系统的改动有三个方面。第一,我们引入一个过滤器,可以防止系统在市道不明朗时进行交易。我们规定ADX必须超过之前若干天的水平。使用ADX的目的是它是一个趋势指标,我们不想在市场没有趋势时进行交易。也有其他ADX可以作为过滤器,但这一个与HAL系统最合适。第二,我们加入百分比止损,降低连续亏损交易笔数。第三,我们优化了ADX长度参数,ADX回溯期,CCI长度参数,以及上下信号水平。优化结果用到了完美利润拟合函数,然后进行前向优化,观察那种参数组合最优机会在下一年盈利(见表22-2)。
表22-2 HAL最后优化系统的结果 (金额单位:美元)
资料来源:TradeStation。
显然,系统表现取得了显著改善。图22-4显示了系统的新收益曲线。可以看到这条曲线非常平滑。净利润已经从2000美元增加到了31 000美元。交易笔数减少,因为ADX起了作用。减少的交易显然是亏损交易,因为盈利交易的比例提高了。现在每笔交易的利润已经足够高,可以覆盖额外增加的费用。盈利因子超过了好交易系统的标准水平2.0。月回报与标准差仍低于5.00正常比率水平,解释了为何收益曲线能如此平滑。
不要直接在交易中使用这个系统,它只是我们寻找参数、变量和交易系统开发规则的一个示例。
但是,我们希望你可以看到开发一个可靠和盈利系统的过程,以及可以用于系统的各种调整方法,特别是止损的应用,可以改善业绩表现,降低风险。开发交易系统是一个困难且耗时的工作。
图22-4 最后优化的HAL系统的收益曲线
技术分析知识22-3
好的交易系统的标准
图沙尔·钱德(Tushar Chande)在《超越技术分析》(Beyond Technical Analysis)一书中讨论了好的交易系统的特征。钱德对于好的交易系统的主要原则归纳如下。
·正的预期值:年收益大于13%。
·交易规则数目不多:进场和离场规则不多于10条。
·能够在多种市场内交易:可以使用市场篮子来确定参数,但是规则在类似市场、不同股票、不同商品期货市场均起作用。
·包含很好的风险控制:以回撤定义的风险很小,不应该大于20%,不能持续超过9个月。
·完全自动:交易系统操作不需要做二次猜测。