21.12 相对于参数变化所再次进行的测试

    一个测试系统的优化过程永远不会结束。如果在系统开发完成之后所选择的参数值依据最新的样本外数据进行检验,那么你就可以证明相关的概念。在交易程序启动之前,你必须对所有数据进行一次测试,同时应用更多数据的系统能够提供一个更加强大的解决方案。另外,最后选择的参数可能与之前的数值略有不同,但不应有显著的改变——某种大的变化情境就是对出现问题的警告模式,即测试周期太短或参数值选择不当。

    在步进测试(step-forward testing)的过程之中,一些分析师更倾向于定期使用固定数量的数据来重测系统,摒弃最古老的数据。然而,较长的测试间隔总是更好的,除非我们有理由相信最古老的数据不再相关。同时,某些情况存在结构上的变化,比如在欧洲货币单位出现之前的形成期,其间各参与国之间的汇率是被控制的。一个新的流动性较低的市场在初期可能被认为是,其与更积极的当前市场行情的条件不符,而复检模式能够调整相关系统,使之适应新的数据特性。

    图21-17 连续测试模式

    复检模式应考虑相对于之前情境而言的测试区间,其中,5%~10%的新数据是可用的。我们以二元变量的检验方式为例,其所预期的最佳变化区域则如图21-17所示。

    因为只有少量的数据被添加,图21-17中的变化应该是小的;如果发生大的行情移动模式,那么我们就应该考虑两种可能性:

    (1)数据出现异常波动的情境或之前从未见过的模式,在这种情况下,参数的变化是合理的。

    (2)原始测试的数据周期较短,其间没有包括足够的模式以使参数的选择性增强,少量测试数据配以更快交易模式的情境被选中的可能性更大。随着数据的变化,快线交易模式则不会再好;如此,参数可能会跳至一个非常缓慢的模型当中。

    21.12.1 大幅行情之后的复检模式

    当你的系统不能像所预期的那样运行时,那么相关情境通常出现在价格冲击之后,而此时,我们会很自然地怀疑系统的参数是否正确?趋势是否足够快?止损点是否设的太近?如果你在初始的测试当中应用了足够的数据,那么相关情境很可能再也不会发生任何改变;如果你创设了新的规定来固化前述问题,那么你会因此而过度填充,进而一事无成。虽然应用更多数据进行测试的方式永远是最安全的,但是市场行情将继续运行新的模式,即其可能出现比历史情境更大的波动范围且生成更多的风险。

    21.12.2 模型是否失效的判定方法

    根据经济情况,一些交易系统的生命是有限的。一个完整的技术程序(比如移动平均线)应该随着时间的推移而适应不同区间的行情趋势,攫取或大或小的利润并削减相应的损失。判断一个模型是否按预期的模式运行的方法是,测量相关跌幅的规模与持续时间,同时将其和测试的收益结构进行比较。另外,我们也要理解,随着数据量的增加,相应系统可能会生成较大的利润和更大的损失。如果我们应用一个新的系统进行交易,其一直呈现损失情境,直至达到以前的最大跌幅规模,那么系统很有可能存在错误,因为系统不应该在第一天的交易当中就开始衰减。

    同时,行情跌幅大于阈值P的概率值(probability of a drawdown)可以这样计算: [1]

    上述公式假设了一个正态分布的收益情境(虽然收益率的分布情境应该有一个较长之右倾的尾部形态),数值μ是基础资产行情变化的均值(收益率)、σ是收益率的标准差。相关方程所给出的概率情境是:相应资产价格每天自峰值下降的幅度将大于或等于P;相同的公式也被用于月度数据的测试当中,例如在测试过程中,年化收益率为30%,日间收益率σ/μ=9,基于250个交易日,应用公式(Ry /R01/y -1(R为收益率,y为天数)计算出日间均值μ=(1.3/1)1/250 -1,如此,μ=0.00105;然后,因σ=0.00945,指数项的2μ/σ2 =23.51。如果我们的置信水平是95%,那么,最后一步是P=(1-95/100)1/23.51 =0.880。然后,我们可以预期在5%月的时段内,行情下跌的概率至少是12%。

    第23章有另外一种风险度量的方式,其中包括应用残差发现单期区间内行情下降的概率,同时确定基础资产价格于特定时段内低于阈值的概率情境。

    [1] John R.Wolberg,Expert Trading Systems(New York:John Wiley & Sons,2000),181-183.