超长k线数据案例一:超长k线数据测试

前言

问题一:超长的K线数据有什么用?
以上期所的螺纹钢合约为例,螺纹钢2009年挂牌交易至今,已经有超过10年的历史数据。前8年的历史数据囊括了2009年的急涨急跌行情、2011年的震荡行情、2015年的V字形翻转行情,这些数据为模型的回测提供了充足的数据样本和各种极端行情变化。
我们可以使用前8年的数据进行模型的优化,然后使用最近两年的数据对模型进行最终的验证。这样即可以判断模型是否过度优化,也能检验模型是否能够适应当前的行情变化。

问题二:k线数据的准确性至关重要
超长k线数据案例一:超长k线数据测试

  这些看似不符合正常行情变化的“异常K线”是错误数据吗?经过文华多方面求证,确认这些数据都是准确无误的,是极端行情的真实反应。
类似的极端行情还有很多,2012年橡胶合约交易单位扩大至每手10吨,导致大量橡胶日内模型持续亏损;2013年上期所正式上线贵金属夜盘交易,导致大量贵金属策略失效;2015年股指期货大幅提高保证金,导致多家投资机构资金大幅回撤。。。   只有准确无误的历史数据才能确保策略回测的真实有效,才能全面检验各种极端行情对策略收益的影响,从而防止“黑天鹅”事件的发生。

问题三:文华为你提供的超长的、准确的k线数据
保证数据的准确性,仅依靠计算机自动处理是远远不够的,数据在网络传输、软件处理过程中是无法避免出错的,必须由有多年数据处理经验的专业人士来进行人工校验。
文华财经创立于1996年,是国内四家期货交易所官方授权行情转发商,具有20多年行情转发和数据处理经验。
为了保证数据准确,我们配备了一支专业的数据处理团队,从交易所的数据源到文华数据中心,再到文华客户端,在各个环节进精准的校对和修正。

优势

  • 国内所有期货品种挂牌交易以来全部历史k线数据。
  • 国内四家期货交易所官方授权行情转发商。
  • 多层次校验,确保数据准确。

使用足够多的历史数据进行测试,才能反映出一个模型的真实情况,少量的历史数据往往带有欺骗性,容易使交易者对策略进行错误的评估。

模型:金肯特纳策略

 

测试合约周期:铁矿15分钟

 

模型代码:

测试1:

Params
   Numeric AvgLength(40);	//三价均线参数
   Numeric AtrLength(40);	//真实波幅参数
   Numeric Lots(DefaultVol);	//交易手数
Vars
   NumericSeries MovAvgVal(0);	//三价均线
   NumericSeries UpBand(0);	//通道上轨
NumericSeries DnBand(0);	//通道下轨
   NumericSeries LiquidPoint(0);	//出场条件
Begin
   // 三价均线
   MovAvgVal =Ma((High + Low + Close) / 3, AvgLength);
   // 通道上轨
   UpBand = MovAvgVal + AvgTrueRange(AtrLength);
   //通道下轨
   DnBand = MovAvgVal - AvgTrueRange(AtrLength);
   // 出场条件
   LiquidPoint = MovAvgVal;
   // 画线
   PlotNumeric("movAvgVal", MovAvgVal);
   PlotNumeric("upBand", UpBand);
   PlotNumeric("DnBand", DnBand);
   // 三价均线向上,并且价格上破通道上轨,开多单
   If ( MarketPosition != 1 And MovAvgVal[1] > MovAvgVal[2] And High >= UpBand[1] ) BK(Lots, Max ( Open, UpBand[1] ) );
   // 三价均线向下,并且价格下破通道下轨,开空单
   If ( MarketPosition != -1 And MovAvgVal[1] < MovAvgVal[2] And Low <= DnBand[1] ) SK ( Lots, Min ( Open, DnBand[1] ) );
   // 持有多单时,价格下破三价均线,平多单
   If ( MarketPosition == 1 And BarsSinceEntry >= 1 And Low <= LiquidPoint[1] ) SP ( DefaultVol, Min ( Open, LiquidPoint[1] ) );
   // 持有空单时,价格上破三价均线,平空单
   If ( MarketPosition == -1 And BarsSinceEntry >= 1 And High >= LiquidPoint[1] ) BP ( DefaultVol, Max ( Open, LiquidPoint[1] ) );
End

 

从16年1月1日开始测试至今,初始资金1万元,固定手数为1手

从回测报告来看,这是一个年化收益率达180%以上,最大回撤控制在40%以内,看起来还不错的策略

 

超长k线数据案例一:超长k线数据测试

 

测试2:

 

将测试时间修改为从上市日起至今,则发现同样的策略竟然在15年就已经严重亏损,早就爆仓出局了。

 

超长k线数据案例一:超长k线数据测试

 

对比分析:

 

回顾一下铁矿的历史数据不难发现,在14年底,铁矿有长达三个月的震荡行情,使得价格在三价均线上下反复徘徊,产生大量的连续亏损信号。事实上,在这种相对极端的行情下,很多趋势类策略都很难产生较好的收益,而我们的金肯特纳策略也恰恰无法适配从而导致爆仓。

 

由此可见,一个看似还不错的策略,如果没有长时间历史数据测试的支撑,在极端行情下可能会面临着很大的风险。为了避免这种情况的发生,拉长历史数据、进行样本外回测,不失为一种规避风险的方法,而这一切的基础,便是要拥有足够长时间的历史数据。