5.1 模型回测
模型回测可以被认为是程序化交易与其他交易最为不同的地方。下面先来看一下下模型回测的流程。
5.1.1 模型回测的流程
模型罔测的流程一般包括7 个步骤, 具体如下:
(1) 建立程序化交易模型;
(2) 选撵交易模型要测试期货合约,井显示其K 线图;
(3) 双击交易模型,把交易模型先加载应用到该模型上;
(4) 回测报告;
(5) 资金曲线;
(6) 参数优化。
5.1.2 程序化交易模型在历史K 线上的效果
要测试程序化交易模型在历史K 线上的效果, 首先要编写程序化交易模型。第3 章和第4 章已讲解了程序化交易模型的编写方法。为了方便模型回测,这里使用前面已编写的程序化交易模型即可。
打开赢智程序化交易软件,单击导航栏左侧的"模型" , 然后再单击"自编",就可以看到"均线与MACD 指标结合"文件,如图5.1 所示。

双击"均线与MACD 指标结合"文件,就可以打开该模型文件,就可以看到要测试的模型程序化代码,如图5.2 所示。

为了后面的参数优化, 需要把该模型的5 日均线和10 日均线的常量,利用参数来表示,在这里设置两个参数,分别是N1 和N2。
N1 的最大值为100 ,最小值为1 ,缺省值为5; N2 的最大值为100 ,最小值为1 ,缺省值为10 ,然后再修改代码如下:

在测试之前,先来看一下程序化代码语法是否正确。单击菜单栏中的"检测/语法检测"命令,如果语法正确,就会显示"恭喜您,测试成功!",如图5.3所示。

这样程序化交易模型的第一步就完成了。先关闭"均钱与MACD 指标结合"文件, 即单击该文件有上角的关闭按钮即可。
下面来应择交易模型要测试期货合约, 这里选择的期货合约是"IF1706" ,即股指期货1706 合约。
双击"IF1706" , 显示该合约的日K 线图,如图5.4 所示。

双击"均线与MACD 指标结合"文件,把该模型文件加载应用到股指期货1706 合约上,如图5.5 所示。

下面就可以看回报报告了。
选择"均线与MACD 指标结合"文件,然后单击右键,弹出右键菜单, 选择"编辑公式"命令,如图5.6 所示。

单击"编辑公式"命令,打开" My Language (麦语言)趋势跟踪模型编写平台-均线与MACD 指标结合"对话框,如图5.7 所示。

然后单击菜单栏中的"检测/设置回测参数"命令,弹出"重设回测参数"对话框,如图5.8 所示。

在这里可以看到,测试的合约为IF1706 ,初始资金为500000 元, 开仓手数为1 ,在这里参数采取默认,然后单击"确定"按钮。
接着单击菜单栏中的"检测/回测报告"命令,弹出"模型回测报告"对话框,如图5.9 所示。

在"模型回测报告"对话框中,可以看到各项回测参数,如报告生成时间、初始资金、合约、K 线周期、数据开始时间、数据结束时间、单位、手续费、初始资金比例等信息。
5.1.3 回测报告检验模型好坏的方法与技巧
对一个模型进行测试时我们需要计算每一次历史交易的盈亏、回撤等来得出收益率、最大回撤、胜率等我们需要的数据,但这些数据如果全靠手动计算几乎是不现实的。程序化交易软件充分利用了计算机强大的运算能力, 可针对测试的模型瞬间出具一份含有众多参考数据的详细报告,分分钟就能检验模型好坏。
回测报告的各个参数中,最主要关注的参数有3 个,分别是权益最大回撤(或权益最大回撤比)、盈利率、胜率,如图5.10 所示。

回测报告显示该模型在效果测试中最大回撤为50520 ,最大回撤比为8.83% ,这就意味着该模型是一个稳定的模型。需要注意的是,如果最大回撤比过大, 一方面会在实盘中带来权益的锐减, 另一方面会使交易者的心态受到严重的影响。
盈利率为10.25% ,这表明该模型的盈利率不高,需要进一步优化。
胜率为100% ,这表明该模型胜率是相当好的。
所以在衡量一个模型的好坏肘,我们要充分利用软件提供的测算报告,根据各个测算指标全面考量模型。
5.1.4 回测报告效果测试指标项的意义
下面来看一下回测报告效果测试指标项的意义。需要注意的是,对于盈利、亏损的计算,带有*的是都是以从开仓到持仓为0 算一次交易计算盈亏,未标注*的是按照一开一平来计算盈亏。效果测试指标项的意义如表5.1所示。



5.1.5 资金曲线
资金曲线有两种,分别是全局缩图和局部细节。
全局缩略,是指软件会自动显示加载起止时间所有的数据,以及完整的资金曲线形态,投资者可清晰看到软件资金曲线的整体情况。
"模型回测报告"对话罹中,单击"资金曲线"选项卡,默认状态下看到的就是资金曲线的全局缩略,如图5.11 所示。

资金曲线的全局缩略,可非常直观的看资金曲线的变化情况,从而去检查模型的效果是否符合我们的预期要求。
资金曲线的局部细节,显示模型的局部细节信息。单击"资金曲线显示"对应的下拉按钮,然后选择"局部细节",这时就可以看到资金曲线的局部细节,如图5.12 所示。

5.1.6 查看模型成交明细
资金最大回撤发生在哪一根K线?出现资金最大回撤时的几笔交易的盈亏都是多少?模型测试的每笔交易的时间和价格具体是多少?这一系列问题都可在"成交明细"中找到答案。成交明细以表格的形式给出了模型完整的成交明细,让我们深度了解模型。
在"模型回测报告"对话框中,单击"信号明细" 按钮,弹出"效果测试成交明细"对话框,如图5.13 所示。

5.1.7 测试模型的敏感性
两个盈亏比相同的模型,滑点对盈亏比影响小的那一个,显然是更优的模型。而敏感性测试图能以情点和平均盈利/平均亏损为横、纵坐标,用线的形式直观显示出滑点变化对平均盈亏的影响,帮助我们找到更好的模型。除了以滑点和平均盈利/平均亏损为横纵坐标外,还可显示以手续费和收益率、开仓手数和平仓盈亏等多种参数为横纵坐标的测试图,从各个方面测试模型的敏感度。
敏感性测试图的横坐标,可以为手续费适应性、滑点适应性异仓手数上限、开仓手数下限、参数1 、参数2 、参数3 、参数4 、参数5、参数6 ,如图5.14 所示。

敏感性测试图的纵坐标,可以为收益率(盈利率)、胜率、平均盈亏、平均盈利/ 平均亏损、平均盈利/权益最大问撤、权益最大回撤比、总交易次数,如图5.15 所示。

把横坐标设为"手续费适应性",纵坐标设为"权益最大回撤比",然后单击"计算" 按钮,这时敏感性测试图如图5.16 所示。
