财新传媒
位置:博客 > 何诚颖 > 股指期货程序化交易策略研究之一——基于Dual Trust的股指期货交易策略实证研究

股指期货程序化交易策略研究之一——基于Dual Trust的股指期货交易策略实证研究

Dual Thrust交易策略是由Michael Chalek在上个世纪80年代开发的,该策略是一个趋势跟踪系统,曾长期位于《Future Truth》杂志评选的最赚钱的策略之列。Dual Thrust策略的优点在于适用范围广、思路简洁、拟合参数少等特点,从而被广泛应用在股票、债券、期货等市场。该策略对于市场趋势有较强的把握能力,可以为投资者带来长期稳定的收益。

金融资产的价格趋势大致可以分为两类,即趋势行情和震荡行情。震荡行情指价格在一定的区间内波动,这种波动是随机的因而难以判断价格的运动方向。而在趋势行情中,价格的动向比较容易判断,交易的胜率也会大大提高。Dual Thrust系统的目的是过滤掉震荡行情,抓住趋势从而获得收益。

Dual Thrust策略的基本方法如下:

Step1.

首先HHNCHCLL分别表示如下:

:过去NHigh的最高价

LC:过去NClose的最低价

HC:过去NClose的最高价

LL:过去NLow的最低价

Step2.

利用这些数据计算出震荡区间的上轨和下轨,其中 为参数。

Step3.

交易规则:

ž   没有头寸时:当价格突破上轨时开多仓,当价格突破下轨时开空仓

ž   持有多头时:价格突破下轨时平多仓,并以相同价格开空仓

ž   持有空头时:价格突破上轨时平空仓,并以相同价格开多仓

Open

上轨

下轨

做多

做空

HC-LL

HH-LC

HC

HH

LC

LL

 

我们选取沪深300指数期货当月主力合约作为交易对象。由于20159月中金所大幅调整沪深300、上证50和中证500三大指数期货的保证金水平和交易费用导致成交量锐减,因此我们暂且选取该调整之前的历史数据进行测试。具体的时间段为201411日至201591日,共计409个交易日。从下图可以看出,期货价格在20141月至11月之间处于震荡行情,12月起先是经历了一个上涨-震荡-上涨的行情,随后又出现爆跌。我们就Dual Thrust策略是否能够把握住市场趋势这一问题,分别观察策略在这三个阶段的表现。本研究所使用数据来源于Wind资讯。

 

我们按行情将历史数据大致分为三段,首先分别对数据进行简单的统计分析如下:

1数据分段统计

 

第一阶段

第二阶段

第三阶段

交易日

200

153

49

累积涨幅

5.39%

117.1%

-29.9%

平均对数收益率(

0. 26404

5.1

-7.9

平均振幅

33.41

115.52

255.26

上涨比例

41.50%

59.48%

40.82%

从表1中可以看出,第一阶段期货指数整体平稳,平均收益率和振幅都比较小,200个交易日的振幅仅为5.39%。从K线图也可以看出,该段数据前半段处于震荡行情,随即在一个短暂的上涨趋势之后重新恢复为震荡行情。该段数据可以测试出策略在震荡行情中的表现。第二段数据为一个中期的牛市,期货指数在153个交易日内上涨了117.1%,平均对数收益率和振幅较前一段数据都有显著提升,因此本段数据是测试策略能否把握上涨趋势的最佳样本。在第三段数据中期货指数在短短的49个交易日中下跌了29.9%,平均振幅更是高达255.26。因此本段数据将检测出交易策略能否应对突如其来的股灾,在暴跌中是否能够迅速应对并调整仓位。

2015年中金所前后多次调整股指期货保证金水平,从最初的10%几次上调至最后的30%。另一方面,本研究的侧重点在于策略对多空方向的判断,因此为了简化计算,我们不考虑保证金问题,同时把佣金定为交易费用的5%

我们首先测试最初的Dual Thrust策略,即一旦入场后不再退出,只进行方向调整,始终保持持仓数量为1,一直到交易日的最后一天再平仓退出。在该策略下我们选取 。在对历史数据计算后,我们得到结果如下:

2策略测试结果

 

全部交易

多头交易

空头交易

累积利润

1,002,246

698,904

303,342

总盈利

3,257,391

1,920,696

1,776,957

总亏损

-2,255,145

-1,221,792

-1,473,615

盈亏比

1.44

1.57

1.21

交易次数

135

67

68

获胜次数

62

30

32

失败次数

73

37

36

胜率

45.93%

44.78%

47.06%

平均利润

7,424

10,431

4,461

平均盈利

52,539

108,580

101,793

平均亏损

-30,892

-60,950

-62,643

最大盈利

232,188

232,188

180,120

最大亏损

-99,708

-99,708

-68,868

最大连胜

15

11

6

交易费用

123,102

   

最大回撤率

-23.05%

   

       401个交易日中,策略一共进行了135次交易,其中62次交易盈利,73次亏损,胜率为45.93%。尽管获胜次数要少于失败次数,但策略的平均盈利要大于平均亏损,因而整体是盈利的。这表明策略在判断失误之后能够及时调整仓位,从而避免进一步的损失。

策略在震荡行情中多空变换较频繁,而对于趋势的把握表现较好,上涨时多持有多头,下跌时多持有空头,总体的多空把握较好。从收益可以看出,策略在震荡行情中表现较差,盈亏相当并且收益较低;而在之后的上涨和下跌趋势中盈利和亏损都大幅上升,同时胜率有也有提高。值得注意的一点是第三阶段出现了很多亏损较大的交易日,而这些亏损主要出现在市场暴跌中“回光返照的时候。

 

我们进一步分析每次交易的盈亏,即每次调整仓位带来的收益。图4展示了按交易划分的盈亏,可以看出前期策略整体胜率并不算高,但平均盈利要大于平均亏损。

 

我们以策略入场时的期货价值为初始资金,在不考虑保证金的前提下计算得到了策略的累积收益和资本回撤。策略的最终收益优于期货指数,但在第一阶段却在指数之下,因此有必要分阶段观察策略的表现。

3策略在各阶段的表现

 

第一阶段

第二阶段

第三阶段

交易次数

71

48

16

获胜次数

28

23

11

胜率

39.44%

47.92%

68.75%

分别对三个阶段的表现进行统计之后,我们可以看出策略在第一阶段的胜率很低,仅为39.44%,同时最大回撤也处于较高水平;而策略在第二、三阶段的趋势行情中胜率有所提高,同时收益也超过了基准。


 

对策略的改进可以从几方面进行,一是优化对参数的选择,二是加入止盈和止损,三是在考虑保证金的情况下调整杠杆大小。本报告中我们主要考虑参数的选择问题,因此我们选取不同的参数以检测各参数对策略结果的影响。

参数1

参数2

参数3

参数4

对四组参数分别进行测试后,得到结果如下:

4各参数的测试结果对比分析

 

参数1

参数2

参数3

参数4

累积利润

1,002,246

1,055,826

1,195,806

290,166

交易次数

135

147

155

86

最大回撤率

-23.05%

-17.96%

-24.62%

-41.86%

最大连胜次数

15

15

9

10

总胜率

45.93%

46.94%

45.16%

-33.94%

第一阶段胜率

39.44%

41.10%

34.48%

33.33%

第二阶段胜率

47.92%

51.85%

53.85%

50.00%

第三阶段胜率

68.75%

55.00%

75.00%

50.00%

从四组参数的测试结果可以看出,当N1增大至2之后,策略的交易次数、累积利润、最大回撤率、胜率等各方面都显著降低。K1减小后策略在第二阶段胜率有所提高,但在第三阶段胜率却显著降低了;K2减小后策略在第二阶段小幅提升,在第三阶段则大幅提高。由上表可以看出,参数的变动在不同的行情中效果是不尽相同的。如何选择合适的参数是优化策略的关键所在。

对于Dual Thrust策略来说,导致亏损的原因是策略发出了错误的信号,而错误的信号又可以分为以下两种:

A类错误:策略发出了错误的交易指令

B类错误:策略未能发出正确交易指令

显而易见的是,如果我们令Range扩大,策略发出的交易指令会减少,因此错误A的概率会降低,同时错误B的概率会增大;反之Range减小,策略会更频繁地发出交易指令,因而错误A的概率会增大,错误B的概率减小。具体关系如下图所示:

减小

增大

A类错误

B类错误

灵敏

稳定

参数

基于以上错误的分类,我们对参数1的亏损交易日进行了分类,结果如下:

5亏损交易日类型及平均亏损额

 

总数

第一阶段

第二阶段

第三阶段

总亏损天数

199

114

66

19

A类错误

122

71

40

11

B类错误

77

43

26

8

A类平均亏损

-14,588

-5,735

-21,511

-46,553

B类平均亏损

-5,100

-2,057

-8,019

-11,963

可以看出,B类错误的平均亏损较之A类错误要小得多,减小参数 可以减少A类错误的次数,同时会增加B类错误的次数,从而使得总体的平均亏损减小。

       ,我们可以得到如下关系:

 

信号正确时可获得的利润

信号错误时产生的亏损

<  

首先假定测试样本内的数据都是已知的,基于上面的思路,我们对

的分布进行了分析后将参数选择为 ,从而得到

6优化参数后的测试结果

 

全部交易

多头交易

空头交易

累积利润

1,380,013

888,386

491,627

总盈利

3,507,464

2,030,913

1,890,457

总亏损

-2,127,451

-1,142,527

-1,398,830

盈亏比

1.65

1.78

1.35

交易次数

199

99

100

获胜次数

86

41

45

失败次数

113

58

55

胜率

43.22%

41.41%

45.00%

平均利润

6,935

8,974

4,916

平均盈利

40,784

85,548

77,944

平均亏损

-18,827

-36,680

-38,681

最大盈利

195,770

194,011

195,770

最大亏损

-58,223

-58,223

-48,876

最大连胜

9

7

6

交易费用

177,172

   

最大回撤率

-14.79%

   

5优化参数后的多空示意及单日盈亏

 

6优化参 数后单次交易盈亏图

与图3对比后可以显著看出,经过参数优化后策略少了亏损极大的交易日,单日亏损被控制在一个较小的水平,有效地降低了风险。

7优化参数后的累积收益和最大回撤率

与图6对比后可以看出,经过参数优化后,策略在第一阶段也能够优于基准,最大回撤也从23.05%大幅降低至14.79%,收益和风险两方面都显著提高。

7优化参数后策略在各阶段的表现

 

第一阶段

第二阶段

第三阶段

交易次数

111

68

20

获胜次数

43

32

11

胜率

38.74%

47.06%

55.00%

从上表可以看出,策略的胜率并没有明显的提高,总体收益的提升主要来自于单次平均亏损的降低。

 

优化参数的时候,我们假定整段数据都是已知的,这在实际投资中显然是不合理的。因此我们将上面的方法更进一步,利用每个交易日前 天中的统计数据得出当日的参数。这样就得到了一列时变的参数 ,如下图所示:

 

我们利用 计算出每日的BuylineSellline,测试后得到如下结果:

8引入时变参数后的测试结果

 

全部交易

多头交易

空头交易

累积利润

1,451,998

924,376

527,622

总盈利

3,409,729

2,046,170

1,846,724

总亏损

-1,957,731

-1,121,795

-1,319,102

盈亏比

1.74

1.82

1.40

交易次数

197

98

99

获胜次数

91

43

48

失败次数

106

55

51

胜率

46.19%

43.88%

48.48%

平均利润

7,371

9,432

5,330

平均盈利

37,470

79,296

71,036

平均亏损

-18,469

-35,595

-38,387

最大盈利

208,781

192,201

208,781

最大亏损

-59,249

-59,249

-52,771

最大连胜

9

7

6

交易费用

174,963

 

 

最大回撤率

-11.98%

   

从上表中可以看出,时变参数策略的平均盈利和亏损都有所降低,但平均亏损降低的幅度要大得多,从而保持了平均利润与原始策略几乎持平,总盈利则增加了约45%,最大回撤率也降低到了11.98%

 

 

可以看出时变参数策略的单次交易亏损保持在更加低的水平上,这表明时变的参数减少了很多A类错误。

11引入时变参数后累积收益和最大回撤率

在引入时变参数之后,策略的累积收益进一步增加,最大回撤率进一步降低,并且在振荡行情中也能保持与基准相当。

9引入时变参数后策略在各阶段的表现

 

第一阶段

第二阶段

第三阶段

交易次数

109

63

25

获胜次数

42

36

13

胜率

38.53%

57.14%

52.00%

总体来说,引入时变的参数并不能让胜率大幅提高,尤其是在第一阶段的胜率依然保持在较低水平。但时变参数让策略整体更加灵活,减少了A类错误的发生从而让平均亏损大幅度降低。因此可以认为在Dual Thrust模型中引入时变的参数是有效可行的。

 

Dual Thrust作为一种经典的交易策略,至今依然活跃在市场中,表明了该策略的有效性,而实证分析的结果也证实了这一点。另一方面,从对比分析的结果也可以看出,参数的选择对于策略的效果影响非常之大,因此合理地选择参数是最核心的问题之一。

在对参数选取进行优化之后,较之原始策略的累积收益提高了38%,最大回撤率从23.05%降低至14.79%,最大单日亏损和最大交易亏损也都显著下降,策略效果提升明显。而在引入了时变的参数之后,这种提升更加明显,累积收益提高了45%,最大回撤率降低至11.98%。这表明了在Dual Thrust策略中加入时变的参数是可行的。

值得注意的一点是,三种策略在第一阶段的胜率都没有超过50%,表明Dual Thrust在震荡行情中的表现不尽理想,这主要是由策略中退场机制的缺乏引起的。当前的策略一旦入场之后没有退出机制,导致了震荡行情中只能换边不能退出因而随价格的波动出现损失。在下一篇报告中我将就这一点做出改进,加入止盈止损策略从而在必要的时刻可以平仓退出,避免进一步的损失。此外,保证金和杠杆也会纳入考虑范围之中。

 

 

了解抗疫现场,参看财新“万博汇”:

推荐 9