Bootstrap

Lyndon的量化修炼之路——布林通道优化策略(一)

//期市妖风大,小心被刮飞。本文不构成任何实质性建议,也不对任何依此进行的交易结果负责

经过某位大佬的提醒,原来大白有另外的含义,侵权了侵权了(原谅我孤陋寡闻),所以还是简单点好。
===================== =我也不知道我在哪的分割线 = ======================

布林通道和均线一样,是很多投资者经常使用的趋势指标,其由上、中、下三条轨道构成,中轨为一条均线,上下分别为均线加减n个标准差,通常上轨也被叫做压力线、下轨成为支撑线。(这里就不对布林通道过多介绍了,配合百度百科食用更加)

与均线策略不同的是,对于布林通道在实际应用上的方法,不同投资者往往有不同的观点,虽然John Bollinger出版过一本书对于布林通道的理论基础的应用方法做过详细的描述,但在百度随意搜索,包括各类学术期刊发表的关于布林通道的应用在内,会发现这一理论已经经过了无数“变种”和“发展”。

虽然谈不上正确,但为了简化和统一接下来的分析,采用以下交易规则:
① 价格由上向下穿越上轨时,发出做空信号;由下向上穿越下轨时,发出做多信号。
② 若持有多单,在价格由下向上穿越中轨时平仓;持有空单时,价格由上向下穿越中轨时平仓。
③ 当上下两轨缩紧时预示较大趋势即将出现,当敞口足够大时表明该趋势能量即将耗尽。
根据这一规则,以文华PTA指数为例,如下图所示。
在这里插入图片描述

回测虽然看起来还不错,那是因为我选择了一个看起来还不错的区间,能让读者不会感到太过无趣。现在泼瓢冷水,将回测的范围扩大,仍然给出2张表格。

项目
交易品种文华PTA指数
交易策略布林通道策略
期初余额10,000元人民币
持仓手数(比例)1手
保证金比例10%
手续费郑商所手续费标准(开3,平今免收)
回测时期2013年1月1日 ~ 2015年12月31日
K线周期1天
均线周期26根
标准差计算周期26根
项目
期初余额10,000元人民币
期末余额1,252元人民币
盈利率-87.48%
年化单利收益率-29.24%
胜率54.55%
盈亏比0.29
权益最大回撤102.42%

有谁比我惨!!!

很多人认为趋势指标本身不应该用来作为量化的理论基础,因为观察趋势对交易作出提示是基于对基本面等其他因素的综合判断之下作出的,但这样的观点很明显忘记了趋势指标最本质的特征:价格变化本身就是所有信息最真实的表现。无论是供需关系的变化还是资本操作,最终都会体现在价格中,但就基本面消息或是研究机构报告而言,其真实性和准确性对普通人而言都十分难以掌握和辨别,但价格不会骗人。

而一个趋势指标之所以被人们认可,是因为其自身所隐含的理论基础在一定条件上是能够站得住脚的,而作为后来人需要做的就是不断地去拓宽趋势指标可以使用的范围,让指标变得更加动态,使之也能随势而动,并最终成为量化交易的一柄利剑,通过一时之成效来判断一个指标是好是坏显然是错误。

而对于布林通道策略的优化主要通过两个方面进行:1)参数优化:2)状态指标化。但在此之前,我认为最要紧的是对布林通道策略的交易信号发出规则进一步的充实。

交易规则优化

上述布林通道交易策略显然对于有一些状况是难以应付的,比如当出现一段持续时间较长的单边市时,价格会不断上探压力线,甚至多次回穿压力线但仍保持上行趋势,如下图所示,策略给出的交易信号将带来大面积的损失。
在这里插入图片描述

因此,当已经持有空仓时,价格又一次向上穿过压力线时,需要反手多单来弥补之前的错误判断。在程序中加入判断持仓情况和新的交易指令后,观察一下同样回测期间内的表现情况,并于前者进行对比。

项目
期初余额10,000元人民币
期末余额2,166元人民币
盈利率-78.34%
年化单利收益率-26.19%
胜率36.36%
盈亏比0.90
权益最大回撤89.38%

在这里插入图片描述

除了在部分数据上有所改观面外,整体似乎变化不大,一方面是这样的单边大趋势并不常有,一方面有些较短的趋势使得纠正错误带来的收益无法覆盖因此而产生的成本。

此外,有时单边趋势的势头并不算猛烈,但趋势延续的时间又足够长,因此引入另一观点:当持有多单,但K线长期徘徊于中轨线以下时,应该认为价格仍处于下行区间,故需反手空单,反之亦然。

根据这一观点,在程序中加入新变量以记录价格处于中轨线以下(以上)的K线根数,当变量值触及阈值时发出交易信号,触发的变量值初始化为10。运行后得到结果如下:

项目
期初余额10,000元人民币
期末余额20,614元人民币
盈利率106.14%
年化单利收益率35.48%
胜率50.52%
盈亏比1.49
权益最大回撤22.12%

在这里插入图片描述

很显然,在两种交易规则的优化下,在回测期内,策略的表现实现了正收益,且回撤不算太大。这样的规则主要是让程序得以捕捉在时间维度上延续较长的趋势,简单地实现“追涨杀跌”,但更为重要的是其本身也具有止损的功能。

~~~~~~~~~ ~ 我是一个快乐的小尾巴 ~ ~~~~~~~~

;