四、期货量化回测详解
(一)单合约回测
1、海量数据回测模型

模型编写好后需要先对其进行效果测试,如果样本数据少,数据不精确,得到的测试结果就很难反映出模型的真实盈利效果。因此历史数据量和数据粒度决定了模型效果的测试深度,也反映出测试平台价值的高低。

(1)案例:国内合约提供从开市至今的全部历史数据

检验趋势模型的效果,通常需要选择连续且全面的历史数据作为测试样本,如果测试的数据不够多,无法包含市场各个阶段的行情变动,模型效果的真实性就会大打折扣。wh9提供合约从上市以来的所有数据,可以多维度剖析模型。如下图,是以股指主连合约上市至今的全部数据进行的效果测试。

(2)申请海量历史数据的操作方法

如下图所示,是如何在主图点击鼠标右键来申请合约数据:

相关问题解答:
1、因为网络断线或其他原因,存在错误的数据,如何将错误数据更正?
答:当您发现K线数据存在错误时,可通过k线图右键->补充历史数据,在弹出界面选择清除当前周期数据,这样错误数据就会被删除,然后再重新补充数据。
2、为什么在【补充数据】中找不到想补充的合约周期。
答:加载列表中所列出的合约周期是基础数据;其他周期的数据由这些基础数据合成,因此,在申请数据的时候只对基础数据做申请。
合成原则:
用tick合成的数据:逐笔回测数据。
用1秒合成的数据: 量能周期、秒周期,自定义秒周期。
用1分钟合成的数据:15min以下的周期,以及自定义分钟周期。
用15分钟合成的周期:15min,30min,1h,2h,3h,4h,自定义小时周期。
用日线合成的周期: 日线及以上周期
3、哪些周期需要补充数据?
答:理论上来说,做回测都需要提前补充数据。但考虑到逐笔TICK类数据量大,手动补充时间长,为提高操作效率,模型中用到MultSig逐笔TICK函数时,回测的时候软件会在后台自动补充数据,不需要手动补充。除此之外,其他的模型都需要提前补充好回测需要的基础数据。
4、滑点是什么意思,设置多少合适?
答:滑点是指委托价格与成交价格之间的差值。
回测参数中设置滑点,目的是为了让回测效果最大限度拟合实盘的成交情况,具体设置多大的滑点要根据交易的合约和委托方式调整。
例如,以对价方式发委托,可以设置1-2个滑点,使回测结果尽可能的贴合品种行情特征,更接近实盘效果。
5、为什么已经补充了数据,但是选择信号计算起始时间不能选择到补充的时间?
答:回测之前需要将数据合约和交易合约的数据都补充一致再回测。
例如,模型中含有Trade_Other:Auto; 函数指定了交易合约再加载到加权合约上测试时,数据合约是加权合约,交易合约是主连,补充了加权合约数据之后,还需要同步补充主连合约的数据再进行回测,如下图操作。
6、为什么无法补充全部的数据,在补充数据中只能看到最近几个月?
答:这种情况是因为回测合约选择的是具体月份合约,所以只能补充到自合约上市以来的数据。如果需要使用连续的历史数据进行回测,建议使用加权合约。
如:沪铜1805是2017年5月上市交易,所以只能申请到2017年5月上市以来的数据,而沪铜加权则支持1996年品种上市以来全部数据。
7.如何查看RB1505等已交割合约的数据?
答:在K线图界面右键->选择历史年度合约,可以查看到历史年度合约的具体行情数据。
2、回测报告分析检测模型好坏

模型回测需要计算每一笔历史交易的盈亏、回撤等进而得到收益率、最大回撤、胜率等我们关注的指标数据,这些数据如果全靠手动计算几乎是实现不了的。量化交易软件充分利用了计算机强大的运算能力,可瞬间出具含有众多参考项目的详细报告,分分钟就能检验模型好坏。

(1)案例:国内合约提供从开市至今的全部历史数据

下图是一个分析报告的一部分,图中①④指标是我们通常最关注的数据,很多人会认为收益率高,胜率高的模型就是好模型,真的是这样的么?让我们再来看看图中的②③⑤衡量指标。

报告显示该模型在这段交易过程中,最大回撤高达1211300,最大回撤比已达到71%,说明这并不是一个稳定的模型。如此大的回撤一方面会在实盘中带来权益的锐减,另一方面也会使交易者的心态受到严重的影响。再看⑤指标,空头交易的盈亏比率较低,说明该模型的空头交易绝大多数是亏损的,在实盘交易中该模型的做空操作很可能成为短板。

所以在衡量一个模型的好坏时,我们要充分利用软件提供的测算报告,根据各个测算指标全面考量模型。

(2)案例2:效果测试结果的升级应用

回测报告中的各项统计数据也为我们拟合一些其他的经典理论提供了数据基础和计算依据,可以更深层次的挖掘模型的隐含特性,全方位剖析模型效果。

例如著名的凯利公式:f* =(b*p -(1-p))/b (其中f* 为开仓最佳资金比例、b为模型的盈亏比率、p 为胜率)。我们从回测报告中可以直接得到胜率和盈亏比的数值,将这些数据代入到公式中进而得到该交易系统的最优开仓比例,投资者可以根据自身交易系统所计算出的f* 值乘以心理承受损失的比例去控制最大仓位。

(3)进行收益率测算的操作方法

如下图所示是如何进行模型的回测。

相关问题解答:
1、如何修改回测时初始资金等相关参数?
:设定信号计算起止时间。
:设置回测参数,如初始资金,开仓手数,保证金,手续费等。
:装入到模组后台运行,将k线图上回测的合约和模型加载到模组中运行。
:查看回测报告
:查看信号明细
2、wh9是否支持逐笔回测?
答:支持;模型中写入MultSig函数时,支持逐笔回测。
3、效果测试指标项说明:
注:对于盈利、亏损的计算,带有*的是都是以从开仓到持仓为0算一次交易计算盈亏,未标注*的是按照一开一平来计算盈亏。
测试天数 从回测数据开始到结束的自然日
测试周期数 从回测数据开始到结束的K线根数
信号个数 信号出现的总个数
执行信号个数 信号执行的总个数
信号消失次数 信号消失的总次数
初始资金 初始化的资金
初始资金使用率 手数*每手保证金率*第一个信号的开仓价*交易单位/初始资金
最大资金使用率 在持仓周期内(开仓保证金/当前权益)的最大值
平均资金使用率 ((开仓保证金/当前权益)求和)/持仓周期数
杠杆倍数 杠杆倍数 = 最大资金使用率 / 保证金率
回测期间最大权益 回测期间最大的权益
整个测试过程中每个周期已缴保证金+剩余可用资金+持仓浮盈所得结果中的最大值
回测期间最小权益 回测期间最小的权益
整个测试过程中每个周期已缴保证金+剩余可用资金+持仓浮盈所得结果中的最小值
最终权益 包括当前的可用资金和浮动盈亏
收益 总盈利-总亏损(已扣除手续费)
收益率 收益/初始资金
年化单利收益率 收益率/(测试天数/365)
月化单利收益率 收益率/(测试天数/30)
年化复利收益率 (最终权益/初始资金)^(365/测试天数)-1
月化复利收益率 (最终权益/初始资金)^(30/测试天数)-1
平均保证金收益率 (单次交易收益/开仓保证金)求和/交易次数
=(Σ((每次交易盈利数值-手续费)/保证金))/交易次数
扣除最大盈利后收益率 (最终权益-最大盈利-初始资金)/初始资金
扣除最大亏损后收益率 (最终权益+最大亏损-初始资金)/初始资金
夏普比率 (年化单利收益率-无风险利率)/收益率的标准离差率
计算公式:夏普比率=[E(Rp)-Rf]/σp;
其中:
E(Rp):年化单利收益率
Rf:无风险利率(大约是1.5%)
σp:收益率的标准差率(年化标准差率)=标准差率/sqrt (测试天数/365)
标准差率=标准离差/初始资金
索提诺比率 (年化单利收益率-无风险利率)/下行收益率标准差
其中:
年化单利收益率=收益率/(测试天数/365)
无风险利率=1.5%
下行收益率标准差=下行标准差率/sqrt(测试天数/365)
下行标准差率=下行标准离差/初始资金
下行标准离差=
n=交易次数
r=每次收益
=平均收益
if r<,f(t)=1
if r>=,f(t)=0
权益离散度 权益离散度=单次盈亏的平方和/交易次数,再开方
权益离散系数 权益离散系数=权益离散度/初始资金*100%
权益最大回撤 从回测开始到结束,动态权益计算出来的波段从高点到低点回撤的最大值
权益最大回撤时间 权益最大回撤出现的时间
权益最大回撤比率 (权益回撤/权益回撤时的权益)的最大值
权益最大回撤比率时间 权益最大回撤比率出现的时间
权益最长未创新高周期数 权益最长未创新高周期数
权益最长未创新高时间段 权益最长未创新高时间段
损益最大回撤 从回测开始到结束,动态损益计算出来的波段从高点到低点回撤的最大值(损益最大回撤是以持仓等于0时的资金为标准计算的)
损益最大回撤时间 损益最大回撤出现的时间
损益最大回撤比率 (损益回撤/损益回撤时的权益)的最大值
损益最大回撤比率时间 损益最大回撤比率出现的时间
损益最长未创新高周期数 损益最长未创新高周期数
损益最长未创新高时间段 损益最长未创新高时间段
本金风险率 (初始资金 - 回测期间最小权益)/初始资金
年化收益风险比率 年化单利收益率/本金风险率
胜率 (盈利次数+持平次数)/交易次数
*盈亏比率 盈利交易的平均每次盈利/亏损交易的平均每次亏损
平均每次盈利 = 总盈利/盈利交易次数
平均每次亏损 = 总亏损/亏损交易次数
*平均每次盈利 平均每次盈利交易的盈利=总盈利/总盈利次数(计算手续费)
*平均每次亏损 平均每次亏损交易的亏损=总亏损/总亏损次数(计算手续费)
*平均每次盈利/权益最大回撤 平均每次盈利/权益最大回撤
*平均每次盈利率/平均每次亏损率 平均每次盈利率/平均每次亏损率
平均每次盈利率 = SUM(单次盈利率) / 计算单次盈利率次数
平均每次亏损率 = SUM(单次亏损率)/ 计算单次亏损率次数
单次盈利率 = 上一次持仓为0到今次持仓为0期间的盈利占初始资金的百分比 (盈利/初始资金)
单次亏损率 = 上一次持仓为0到今次持仓为0期间的亏损占初始资金的百分比 (亏损/初始资金)
*平均每次收益/平均每次亏损 平均每次收益/平均每次亏损
平均每次收益 平均每笔交易的收益=(总盈利-总亏损)/ 交易笔数(总成交量的 1/2)
最大每手盈利 每手盈利的最大值(每手盈利:对于每次交易,用该次交易的盈利值除以这次交易过程中的成交手数)
最大每手亏损 每手亏损的最大值(每手亏损:对于每次交易,用该次交易的亏损值除以这次交易过程中的成交手数)
平均每手每次收益 平均每手每次交易的收益
总盈利/总亏损 总盈利/总亏损
总盈利 盈利的总和
总亏损 亏损的总和
*单次最大盈利 单次交易盈利的最大值
*单次最大亏损 单次交易亏损的最大值
单次最大盈利占比率 单次最大盈利/总盈利
单次最大亏损占比率 单次最大亏损/总亏损
收益/单次最大盈利 收益/单次最大盈利
收益/单次最大亏损 收益/单次最大亏损
*交易次数 发生交易的次数
*盈利次数 盈利的交易次数
*亏损次数 亏损的交易次数
*持平次数 持平的交易次数
*最大持续盈利次数 最大持续盈利的次数
*最大持续盈利次数出现时间 最大持续盈利的次数出现的时间
*最大持续亏损次数 最大持续亏损的次数
*最大持续亏损次数出现时间 最大持续亏损的次数出现的时间
空仓周期数 空仓的周期数
最长连续空仓周期数 最长连续空仓的周期数
*最长持仓周期数 持仓最长周期数
平均持仓周期数 平均多少根K线发生一笔交易=测试周期数/交易次数
*平均盈利持仓周期数 平均多少根K线发生一笔盈利的交易=测试周期数/盈利次数
*平均亏损持仓周期数 平均多少根K线发生一笔亏损的交易=测试周期数/亏损次数
平均持仓手数 每根K线的总持仓的累加 / 持仓周期数
最大持仓手数 在持仓周期内持仓手数最大值
平均资金使用金额 开仓保证金求和/持仓周期数
最大资金使用金额 在持仓周期内,开仓保证金额最大值
最大资金使用金额时间 在持仓周期内,最大资金使用金额的时间点
手续费 手续费合计
手续费/收益 手续费合计/收益
滑点损耗 滑点损耗合计
滑点损耗/收益 滑点损耗合计/收益
成交额 成交额合计
成交额=成交价*(开仓或者平仓手数)*交易单位
模型得分 根据盈利能力、稳定性、风险暴露、敏感度计算的综合得分
4、深度分析各图表项说明
收益/风险:
 
(1)损益曲线图

 
(2)权益曲线图

 
(3)损盈分布图

 
(4)损盈直方图

 
(5)权益回撤直方图

 
(6)连续亏损次数

 
浮动盈亏: 
 
(1)权益面积图

 
(2)浮盈面积图

 
(3)浮亏面积图

 
(4)浮盈分布图

 
(5)浮亏分布图

 
(6)浮盈直方图

 
(7)浮亏直方图

 
阶段分析: 
 
(1)月度统计

 
(2)日统计

 
效率分析: 
 
(1)总效率分布图

 
(2)建仓效率分布图

 
(3)平仓效率分布图

 
损盈分析: 
 
(1)胜率分析

 
(2)盈利分析

 
(3)亏损分析

 
(4)回撤分析

 
3、敏感性测试了解模型脾性

模型的效果受很多因素影响,如滑点、手续费、杠杆倍数等,我们将模型的这种特性称之为模型的敏感性。敏感性小的模型是更稳定、更好的模型。

将模型的敏感性绘制成图表,就可更直观的分析出模型的优劣。例如,在分析滑点对模型收益率的影响时,用横坐标表示滑点,纵坐标表示收益率,很明显滑点对收益率影响小的模型是更优的模型。

(1)案例:盈利的模型就是好模型么?

如下图所示,这是一个盈利的模型,也许40.92%的胜率和8.44%的最大回撤会让我们觉得这个模型还算可以,但这一定是一个好模型么?

让我们从一个二维关系去审视这个模型,看一下滑点和收益之间的关系:从下图可很明显的看出,滑点每增大一点,收益率就会大幅下降;当滑点为3个最小变动价位的时候模型已经失去了盈利能力。而实际交易的时候,我们很难做到0滑点,这个模型也就很难盈利。

分析报告得到的是各衡量指标的独立数据,而敏感性测试可告诉我们一些重要指标的变化对盈利、胜率等的影响,让我们深度了解模型的脾性。

敏感性分析横坐标提供手续费、滑点、开仓手数、杠杆倍数以及模型参数等影响因素;纵坐标提供收益率、胜率、平均收益、盈亏比率、平均每次收益/权益最大回撤、权益最大回撤比率、总交易次数和权益最大回撤指标。投资者可以根据策略的分析侧重点自由搭配组合,测算模型的敏感性。

(2)进行敏感性测试的操作方法

如下图所示,是如何进行敏感性测试。

4、参数优化让模型达到最优

交易过程中有时会发现在一段时间内表现很好的模型,过了一段时间就好像失效了一样,这种情况是由于模型参数不再适应当前行情引起的,我们需要尽快寻找新的最优参数,而在海量的历史数据中仅凭人工去寻找如大海捞针,费时费力,机会渺茫。 "参数优化",可在指定的参数范围内用计算机很快筛选出最适合当前行情的参数。

(1)案例:利用参数优化,让止损参数顺势而为

下图是对螺纹品种跟踪止损策略模型的回测资金曲线。结束了小半年的单边上涨行情后,市场极速下跌进入调整形态,从图上可清楚的看到资金曲线在近下半年不再保持稳定上升形态,说明原来的止损价差参数已经不能适应现在的市场,模型已经失效。我们可以利用参数优化功能,对当前的参数进行优化,筛选出符合当前行情的参数组合。

下图是利用参数优化对模型的参数进行枚举和遗传后的结果。参数优化功能可以在指定的范围内利用计算机筛选出最适合当前行情的参数。在使用新参数后,黄色资金曲线更平滑稳定,新的参数更能适应市场行情,使模型真正达到顺势而为的效果。

(2)进行参数优化的操作步骤

① 先使用枚举功能,进行大范围海选,如下图所示是如何进行枚举:

设置参数关系减少参数优化时间:
有些模型各个参数间有严格的逻辑管理,以下面的回测模型为例:
Params
  Numeric Length1(5);
  Numeric Length2(10);
Vars
  Numeric MA5;
  Numeric MA10;
Begin
  MA5=Ma(Close,Length1);
  MA10=Ma(Close,Length2);
  If(CrossUp(MA5,MA10))
    BK;
  If(CrossDown(MA5,MA10))
    SP;
End

模型中的两个变量必然遵循一大一小规则,这样的模型我们可以首先为他们设置参数关系,如N1<N2,这样在优化时,所有比N2大的N1值都不用参加计算,运算量可以减少1/2.这样每配置一个参数关系,计算次数就减少一半;配置4个,就减少到原来的1/16,以此类推,有效减少了参数优化时间。

② 参数优化计算完会以排序的方式显示优化出来的参数组,可按下图步骤将优化后的参数保存至备选参数组或直接替换为默认参数组。

③ 如需对枚举的结果进一步精调,可在参数优化列表选择要优化的参数组->预览主图,如下图,用枚举出来的新参数对K线图回测,再对新参数进行遗传。

④ 如下图所示设置好优化的精调范围,参考标准的比重后,点击“确定”按钮,开始进行精调。

⑤ 按照和枚举同样的方法来保存精调后的结果,以便进行回测(如下图所示)。

⑥ 如下图,在K线图右键菜单->设置技术指标/量化模型->选择模型->调入参数,在参数界面选择参数优化后保存的参数组,使用新参数进行回测。

相关问题解答:
1、为什么有“枚举”和“遗传”两种参数优化方式,原理是什么?
答:枚举是在每个参数最小值与最大值之间抽选几个效果最好的参数值,是对参数的初步海选;遗传是在枚举好的参数值基础上进行微调,让参数达到最优。
(1)枚举:
根据设置的"步长"挑选出所有满足条件的参数,进行全排列,在其中挑选出最优参数值。
(2)遗传:
使用枚举得到的参数组,按步长1上下变动每一个参数,分别与剩余参数组合找到最优参数组。
2、参数优化页面上的参考标准表示什么含义?
答:参考标准是用于投资者在参数优化后,根据个人的分析需求对各项指标按权重划分,对优选出的参数进行排序显示。权重数值大小根据个人偏好来设置,可以对关注度高的指标设置大一点的权重。
例如,设置总盈利率权重为60,平均盈亏为40,优化后的参数组将按照总盈利率排名*60%+平均盈亏排名*40%的加权排名来排序显示。
(二)多合约回测
1、单模型多合约批量回测选最优合约

交易策略是不具备普适性的,我们很难构建出一个适用于所有合约的交易系统,但针对一个合约制定一个适合的模型则相对简单,同样的,针对一个模型也势必会存在一组最佳的交易合约。

软件的“批量回测”功能,可同步回测多个备选合约,快速出具各个合约的独立分析报告,投资者通过对比关注的收益指标便可快速挑选出符合策略的最佳合约。

(1)案例:多合约同步回测,批量筛选最优合约

比如,用同一个策略模型对上期所部分加权合约进行批量回测,筛选最佳交易合约。回测后每一个合约都生成一份独立的回测报告和独立的资金曲线图,投资者点击合约名称可切换回测报告分析,极大程度的简化了操作步骤。

如上图,是沪铜合约的回测资金曲线,盈利效果还算不错,那它是否就是最当前策略的最佳交易合约呢?当我们展开各指标项进行横向对比时,可以看到沪铜合约盈利率虽高,但是权益最大回撤竟高达62950,扣除掉最大盈利后的收益率已为负值,看来沪铜合约在测试期间的盈利并不稳定。

而沪锡收益率、盈亏比率、夏普比率等都是所有备选合约中最高的,回撤也是较小的,在测试阶段内一直保持着稳定的盈利效果,是当前策略最佳的交易合约。

如下图,优选交易合约后,可以直接一键添加到模组实际运行。

(2)批量回测的操作步骤:

如下图,是批量回测的建立步骤。

2、多模型多合约组合回测分析整体盈利

“不要把鸡蛋放到同一个篮子中”,同理,我们在交易时也要避免单一品种或单一策略的运行模式,通过多合约、多模型组合的形式来合理分散交易风险,实现共振盈利。

单模型的回测只能看到一个模型的收益效果,如何才能查看一个策略组合的收益效果呢?软件的组合回测功能可对多模型、多合约组合进行回测,提供组合分析报告、资金统计和各类资金曲线分析工具,供交易者全面分析策略组合和各成员的盈利能力。

(1)案例:组合回测分析交易组合整体盈利

趋势行情下获利相对比较容易,趋势模型往往能够取得不错的回报,但在震荡行情下,由于趋势策略不能适应频繁波动的行情,反而会使盈利的资金回吐甚至反盈为亏,如下图。

对此,我们可以使用多模型组合的形式,在一个合约上同时运行趋势策略和震荡策略。如下图,是螺纹合约“趋势+震荡+波段”策略组合交易的回测效果,彩色线为组合成员的权益曲线,灰色线为组合整体的权益曲线。可见,在震荡行情下,震荡策略的盈利冲抵了趋势模型的亏损;在趋势行情下交易组合则共振盈利,实现了财富的双重增长!

如下图,是组合回测的资金曲线分析界面。右键菜单中还提供组合的权益资金曲线、净利润曲线、盈亏曲线以及资金详细信息等统计工具,帮助投资者深层分析组合的收益效果。

·权益资金曲线,记录每根K线上的权益波动;

·净利润曲线,记录平仓盈亏累加值的波动,每完整交易一次则统计一次;

·盈亏曲线,记录每根K线上的浮动盈亏累加值波动;

·资金详细信息,记录每根K线上的组合资金概况和组合中所有模型的具体交易信息,如下图,用户可结合合约明细和资金概况具体分析组合成员的盈利水平。

如下图,是组合回测的分析报告。利用各项指标将不可估量的市场风险量化展现给投资者,投资者可以此分析组合的风险-收益水平,调整交易组合,合理分散风险。

如下图,是组合回测的回撤贡献度分析报告。提供组合回撤贡献度和回撤比贡献度分析图表,计算组合成员的贡献度大小。投资者可以对得分较低的模型进行调整,提高组合整体收益和抗风险能力(回撤贡献度得分的计算方法详见本页常见问题7)。

如下图,是组合回测的阶段性分析报告。具体罗列了组合在各个周期阶段的交易和收益情况,方便投资者统计账户交易情况,进行风控管理。

(2)组合回测操作步骤:

如下图①-⑤所示是如何对组合策略进行测试:

相关问题解答:
1、已经进行过测试的组合,能否保存起来以便于下一次直接调出?
答:可以,通过下图所示的方法对当前组合进行保存。再次打开点击【打开现有组合文件】即可。
2、为什么添加组合成员后“进度”中显示的是未计算?
答:这是由于在添加组合成员时没有勾选【添加后自动计算】;选中未计算的组合成员,点击鼠标右键->更新,进行计算即可。
3、组合成员的资金曲线颜色可修改么?
答:选中要修改的组合成员,点击组合测试界面下方的【编辑】按钮,即可对组合成员参数进行修改。
4、已经添加的组合成员如何修改合约参数?
答:选中要修改的组合成员,点击鼠标右键菜单->编辑,即可对组合成员参数进行修改。
5、为什么组合测试界面的【回测】中,有左右两个纵坐标,分别代表什么?
答:左侧纵坐标为各策略组合后的资金曲线坐标,右侧纵坐标为各个策略的资金曲线坐标。
6、组合测试界面的【阶段总结】中,权益增长速度如何计算?
答:权益增长速度=(本期净利润-上期净利润)/本期期初权益 。
7、回撤贡献度得分越高越好么?
答:是的,回撤贡献度分数越高说明回撤越小,贡献越大。
回撤贡献度得分算法:
每个策略在每个时点上比较,回撤值最大的得1分,次之得2分,以此类推。每个策略总分就是每个时点得分之和。如在某一个时点上,策略A的回撤大,策略B的回撤小,那么策略A得1分,策略B得2分。每个时点上都会计算得分,策略A和策略B的得分分别加和就是各自的总得分。得分高说明策略的回撤小,贡献大。
注:回撤值=回撤前的最大权益-当前权益
回撤比贡献度得分算法:
回撤比贡献度以每个时点的最大回撤比(最大回撤/最大回撤前的最大权益)做比较,计算各个点的得分之后加起来计算总得分。
8、如何实现快速将同一模型加载至不同合约进行测试?
答:利用组合回测->回测一篮子合约可实现该想法。
先将要回测的合约加入到自选篮子中。如下图,在组合回测界面点击右下角【添加】按钮选择【一篮子合约】,在弹出的窗口中选择要加载的自选篮子,选好回测的模型、周期等参数,点击【确定】按钮,即可用同一模型对不同合约进行测试。
9、如何实现快速将同一合约同一周期加载不同模型进行测试?
答:利用组合回测->回测一篮子模型功能可实现该想法。
如下图,在组合测试界面点击右下角【添加】按钮,选择【一篮子模型】,在弹出的窗口中批量选入要加载的模型。在弹出窗口中设置一些选项,点击【确定】,可实现快速对同一合约同一周期加载不同模型进行测试。
10、我已经设置了回测参数,为什么还提示“没有设置参数的合约不能参与回测”?
答:弹出这个提示说明在回测之前没有对篮子中的合约设置参数,可以在软件右上角->量化->编写公式->设置->设置期货回测参数进行批量设置。
(三)期货主连链回测

期货是主力交易方式,为检验策略对主力合约的连续下单效果,一些投资者会将策略加载到主连上测试运行,这样便存在两个问题:

一方面,主连只是对主力合约数据的机械拼接,换月时产生的大幅跳空会影响信号计算; 另一方面,换月前后两个合约的持仓趋势可能发生改变,存在信号转换的风险,而无法体现出主力合约真实的连续交易效果。

针对这种情况,wh9特推出期货主连链回测,不再使用品种主连自身的K线数据计算信号,而是采用各个月份合约自挂牌以来的全部K线数据计算信号,规避品种主连K线数据换月跳空、新旧合约趋势相反等情况对量化计算准确性的影响,主力换月时,旧主力月份平仓,新主力根据月份合约的K线数据重新计算开仓信号。帮助投资者洞察策略效果,客观评价策略好坏。

案例:主连链回测分析主力合约连续交易效果

模型中不写入Trade_Other语句,直接加载到品种主连上,系统会自动调用主连链回测。如下图,回测后在K线图上点击鼠标右键->模型回测报告,可查看策略在主力合约上连续运行的效果分析报告和资金曲线,供投资者分析策略连续交易的整体效果,便于调试交易策略,降低试错成本。

如下图,在2019年12月6日螺纹2001换月到螺纹2005时,2001合约是空头开仓信号,2005合约是多头开仓信号,换月时,系统对2001合约进行了平仓操作,并重新计算了05合约的开仓信号,规避了2005合约行情上涨的损失。

如下图,主连链回测还提供从信号计算开始时间到数据结束时间范围内,所有主力合约的独立回测报告和资金曲线。可查看到策略在每一个主力合约上的盈利效果,对策略在不同测试区间内分段调试。

注:
1、加载合约必须是主连合约;
2、模型中不能写有Trade_Other函数;

主连链回测机制:
主连链回测针对多个年度的主力月份合约进行连续交易的模型回测计算,用长期的历史数据验证策略的有效性。
主力换月时,回测计算的处理机制如下:
旧主力合约,清仓;
新主力合约,延续使用旧主力清仓后的资金,但是重新计算信号。
注:
主连链回测只能用于分钟、小时、日线周期;
主连链回测不支持运行优化函数;
主连链回测不支持外盘合约;

相关问题解答:
1、主连链回测机制总结:
2、一开一平过滤模型在主连链回测时,资金曲线图上有连续的两个BK信号?
答:这个是正常的,在换月的时候,对旧主力合约平仓,在新主力上重新计算信号开仓,所以出现了两个连续的BK信号。“成交明细”列表中记录了这笔清仓的具体成交信息。
(四)独立算法交易模型回测

独立的算法交易模型通过挖掘盘口报价和逐笔成交数据,从极为短暂的市场变化中寻求获利,把交易策略应用到秒周期级别。这类高频率的下单策略在投入实盘使用前,往往需要进行更为精细的可行性分析。

Wh9的数据粒度可支持算法高频模型逐笔Tick精细回测,提供可视化的盘口算法模型回测平台,直观展现每一笔的下单情况和资金变动,为投资者提供精准的策略检验。

1、案例:盘口算法模型回测

wh9支持虚拟撮合的回测平台,帮你验证模型好坏。wh9的虚拟撮合机制既考虑到了委托价等于对手价时,对手盘挂单量不足,部分成交的情况,同时,当委托价等于排队价时,还会计算挂单成交比例,按比例撮合成交,虚拟真实交易过程。

如下图,软件提供可视化的盘口算法模型回测平台,能够同时展示TICK数据变化、持仓信息、挂单详情以及权益曲线变化过程。

回测后,提供360度视角的多维度回测报告,如下图,用户可结合模型回测报告、回测交易明细以及回测运行日志,详细的了解模型的虚拟交易效果,360度的了解自己的模型。

2、算法模型回测操作方法

在tick图界面上,加载独立的算法交易模型,即可对算法模型进行逐笔tick回测计算。

点击鼠标右键,可切换算法模型回测日期、调整回测速度、查看模型回测报告、回测交易明细以及回测运行日志等操作。

3、算法模型回测机制

(1)算法交易模型逻辑检测仅支持独立的算法交易模型类型;

(2)算法模型回测界面由左侧的tick图和右侧的持仓列表、挂单列表、资金曲线图组成:

①回测期间,显示买卖1-5档价格线,红线为买价,绿线为卖价;

②回测期间,在tick图上用射线显示现有的挂单,左边起点是挂单的时间点,红色为买挂单,绿色为卖挂单;实线为开仓挂单,虚线为平仓挂单;

(3)回测完成时,撤所有挂单,挂单射线和挂单列表也会清空;

(4)算法模型回测的合约,由Data数据区、Def_TickData和主图合约组成,包括国内外期货、套利和股票。

相关问题解答:
1、算法交易模型回测可以回测更远的数据吗?
答:不可以。算法交易模型属于高频日内交易策略,回测只提供一个交易日的tick数据,不支持更远的连续数据回测。
2、提示“当前交易日未收盘不支持算法交易模型回测”怎么办?
答:当天tick数据在收盘后30分钟可以回测算法模型,盘中可在K线图上点击右键->切换日期,选择历史交易日进行回测。
3、如何调整算法模型回测的资金参数?
答:工具条上“设置模型资金参数”,支持设置合约集中每个合约的资金参数;
(五)期货多因子分析

文华精选期货因子库囊括量价、动量、期限结构、持仓、基本面、BETA等一系列因子,以期货市场全品种为标的,提供单因子筛选、多因子排名分析等功能。可借助多因子综合排名信息,对多个品种在同一时间点的强弱情况进行对比分析,构建对冲组合,实现期货横截面交易策略。

案例:期货横截面交易策略

横截面策略是一种泛套利策略,主要是指的是在同一个时间点(或者同一个时间区间),同时做多、做空多个品种,形成一个多空对冲组合,以期多空两个方向交易的盈利之和为正的一类策略。

横截面策略盈利的逻辑是基于期货价格的变动:强者恒强/弱者恒弱的假设,即期货价格具有一定惯性,趋势行情具有延续性,前期上涨幅度较大的合约,后期还能够继续上涨的概率更大。

例如:使用期货品种筛选功能,对市场所有的期货品种按照涨跌幅和资金流向进行排序,根据综合排名结果做多前5的品种,做空后5的品种,形成一个对冲组合,买入上涨强势的品种,卖出处于弱势的品种进行对冲获利。

如下图,一周以后,共盈利639950元,收益率5.18%。

调用方法:

如下图,点击右上角菜单【量化】->期货多因子分析。

注:
① 多因子分析使用上一交易日的数据计算;
② 根据因子所选方向排序,并列排名时,下一排名需要加上并列排名个数;
③ 并列排名的品种,按代码顺序展示;
④ 空值排到最后,并列排名。