挤牌策略在A股的应用及优化 自从我开始在公众号上发布美股上的交易策略相关的文章以来,已经有很多人问过我这些策略在A股上是否同样有效,其实我自己也有同... |
您所在的位置:网站首页 › 银河证券tradestation平台 › 挤牌策略在A股的应用及优化 自从我开始在公众号上发布美股上的交易策略相关的文章以来,已经有很多人问过我这些策略在A股上是否同样有效,其实我自己也有同... |
来源:雪球App,作者: _至简量化_,(https://xueqiu.com/8185159194/166825996) 自从我开始在公众号上发布美股上的交易策略相关的文章以来,已经有很多人问过我这些策略在A股上是否同样有效,其实我自己也有同样的好奇,所以这篇文章就打算介绍一下挤牌策略在A股上的应用效果。我前期已在“JC的必杀技--挤牌策略及改进”一文中介绍了John Carter的原始挤牌策略以及个人改进后的策略,并在MES的历史数据上展示了两种策略的回测效果,本文主要侧重挤牌策略在A股的实践,不熟悉相关理论的朋友建议先看上面这篇文章。 01 Tradestation简介 Tradestation是国外很流行的一个交易平台,它与我们之前文章中多次提到的thinkorswim平台相比至少有三大优势: 1、Tradestation提供的开发语言easylanguage是一套完善的面向对象语言,比thinkorswim平台的thinkscript语言强大得多。 2、Tradestaion平台的回测报告数据十分全面,而thinkorswim平台的回测报告只有简单的几条。 3、Tradestaion平台的策略可以执行自动交易,而thinkorswim平台的策略只能用于回测。 近年来Tradestation先后被国内的国信、银河等券商引进。本文将在银河证券的tradestaion平台上结合A股的具体情况重新实现挤牌策略,并做一些优化尝试。不懂编程的朋友可以根据文末提供的下载方式获取代码,加载到银河Tradestation客户端即可使用。 02 挤牌在A股的应用 美股和A股的交易机制有很多不同,为了适应A股的交易机制,我们对挤牌策略增加两条限制: 1.A股是T+1交易,美股是T+0交易。为此A股上的挤牌策略只考虑在日线图或更大的周期上实现,不考虑日内交易。 2.A股不允许做空,美股可以灵活做空。为此A股上的挤牌策略将只生成做多和平盘信号,不生成做空相关信号。
首先看原始挤牌策略的表现,选用的数据是2年期的平安银行(000001.SZ)的日线历史数据。(猜猜为什么要选这支股呢?因为它刚放了颗卫星?并不是,只是因为tradestation打开“图形分析”页面后默认加载的就是它……)
这张图里其实加载了两个东西,一个是k线下方的挤牌指标,一个是直接加载在k线上的挤牌策略。 Tradestaion将指标和策略严格分开,指标以图像的形式展示,用于辅助决策,策略没有图形,直接根据逻辑下买卖订单,生成策略回测报告。 这里出现了槽点一:在图形最左侧,调用内置的线性回归函数生成的动量柱线严重失真,这个问题在所有股票上都存在,好在左侧对实际交易没有参考价值。 我们放大其中一段看效果,挤牌指标图上0线上的红点表示进入股价窄幅震荡,可能在酝酿大趋势,一旦从红色变成绿色则表明趋势触发。今年10月13日,平安银行的k线走出窄幅震荡的红色区间,触发趋势,当时指标图上的动量柱线大于0,因此认为向上的趋势形成,买入持仓,10月30日,动量柱线开始下降变为蓝色时认为趋势结束,卖出平盘。0线下方的红点代表买入,0线上方的红点代表卖出。 挤牌策略与挤牌指标的逻辑一样,只是没有图形,直接在k线图上显示买卖订单。
回测假设每次买卖1手,也就是100股。下面是一些回测数据。
这个数据比我们之前在美股期货MES上的回测效果好太多了,简直可以用惊艳来形容。这是不是意味着以后可以用这个策略在A股大杀四方了呢?还是不要太乐观,我们再找个别的数据回测一下,这次换个指数型的,就用嘉实沪深300ETF(159919.SZ)吧。
先不看回测报告,直观看图就会发现,几个大的上行趋势都没捕捉到,反而在震荡区域频繁交易,这显然是要亏钱的。打开回测报告看具体数据,确实是亏了……
这么快就翻车了吗?其实谈不上翻车,每个策略都有它适合的资产标的和市场环境,指望靠一个策略包打天下是不可能的。交易员或投资者需要先靠自己的经验分析他要交易的标的在特定的市场环境下适合什么策略,然后再用这个策略交易,可能还需要针对不同的情况设置不同的策略参数。这一步理论上也可以自动化,但目前至少我还做不到。 03 挤牌策略的最新改进 关于John Carter的原始版本就介绍到这里,这是个不错的策略,但是我还想再进一步改进一下,希望能抓住下图中红圈部分的大趋势并过滤掉下图绿圈中震荡区的交易。这个改进版本跟“JC的必杀技--挤牌策略及改进”一文中介绍的版本还不一样,可以算第八版改进了。
为了实现上述两种改进需求,我们在挤牌的基础上引入平均趋向指标(Average Directional Indicator,简称ADX)。ADX也是一个著名的指标,一般认为当ADX上升时趋势增强,当ADX下降时趋势减弱。有种判断趋势的方法是当ADX上涨超过20时,可认为趋势形成,当ADX跌破40时认为趋势终结。从下图直观来看大体是不错的。
我们将ADX引入挤牌,做以下两种判断: 1. 增加买入逻辑:当以下四种情况同时出现时,认为上涨趋势形成。 (1) 三个连续上涨的收盘价。 (2) 三个连续上涨的ADX值。 (3) 三个连续上涨的挤牌动量线。 (4) ADX大于某个阈值(默认15)。 2. 增加过滤逻辑:当原始挤牌走出窄幅波动区,但是动量线比前值低或ADX连续下降两次,则忽略这个买入信号。 将改进后的指标和策略作用在平安沪深300ETF上,得到下面的效果图。
这里出现了槽点二:指标和策略明明是使用完全一样的逻辑,但是左侧红圈中上面的策略的买卖点和下面的红圈中的两个买卖点完全对不上。这种情况也经常出现,好在也跟槽点一一样也总是出现在图形左侧,只影响回测效果,对实际交易没有影响。 不管圆圈中的交易是不是应该触发,整体看起来这次的效果好多了,我们再来看一下回测报告。
在这个回测数据上改进后的策略确实表现更好,但是有个问题,我们用的数据周期太短了,只有两年,交易笔数只有9笔,样本太小了,缺乏说服力,因此需要使用更多数据进行验证。我们分别在平安银行、嘉实沪深300ETF和贵州茅台的十年期的历史数据(已经是极限了,银河tradestation只有2010年至今的历史数据)上验证改造前后的策略。 原始策略十年平安银行历史数据回测:
改进策略十年平安银行历史数据回测:
原始策略沪深300ETF回测:
改进策略沪深300ETF回测:
原始策略贵州茅台回测:
改进策略贵州茅台回测:
可以看出,改进后的策略在有限的数据上表现更为稳定。 03 基于遗传算法的参数优化 不要被这个小标题吓到,我们不需要自己实现遗传算法,甚至不用深入理解它,Tradestation已经帮我们实现了这一功能,我们只需要知道这是一种高效的参数优化算法就可以了。
上图是改进后的策略的输入参数,有8个之多,这些默认值都是凭主观经验设置的,理论上作用于不同的资产应该设置不同的值,但是要同时优化所有参数是一项计算量很大的工程,好在Tradestation提供了基于遗传算法的优化方式,可以让我们在较短的时间内求出针对特定资产的参数设置最优解。 我们需要针对每个参数设置优化范围和增量,但是有个局限是只能优化数值型参数,一个解决方案是将true和false分别改为1和0来完成优化,这里我们就先不优化它了。 选择优化方式为遗传,类型为标准。
大概经过40多秒完成优化后,可以看到右上角优化后的参数列表。
优化后的回测报告如下,可以看到确实比优化前好了有了大幅提升。
但是也有人指出,参数优化的效果只是过拟合的结果,在未来未必比优化前的参数更有效。到底要不要优化,什么情况下应该优化,这就见仁见智了。 04 总结 总体而言,基于我们有限的测试数据,挤牌策略在A股上的表现比在美股有过之而无不及。但是每种策略都有它适合的市场条件,挤牌策略作为一种趋势跟踪策略还是适合趋势明确的市场。在使用策略前需要交易员根据经验判断当前股票所处的市场周期是否适合,可能还要针对特定的股票对参数进行调优,然后才能真正启用。 关注公众号“至简量化实验室”并在后台回复“A股挤牌”即可获得文中所有指标和策略的下载方式。限时免费1天!!!
PS:最后补充银河Tradestation的第三个槽点,文中所说的前两个槽点到底是银河的锅还是Tradestaion本身的锅不好确定,但最后这个槽点绝对是银河的锅--就是银河的TradeStation会在每天晚上22:25准时弹窗提醒我“正常交易时段即将开始”……咱能把人家默认的美股交易时段调整到A股的北京时间吗? #量化观察# $平安银行(SZ000001)$ $嘉实沪深300ETF联接(LOF)A(F160706)$ $贵州茅台(SH600519)$ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |