在我刚入股票市场的时候,曾经在学校图书馆F编码区,翻过非常多的投资书籍,各种指导交易的方法可谓千奇百怪,通过这些书籍,我了解到了有基本面分析和技术面分析这样两种分析方法。
对于基本面分析的书籍,上来就是行业分析、企业估值、财务报表分析,打开看不到几十页,就感觉内容逐渐看不懂,畏难心理让我觉得这应该是经济学家和职业投资人才会使用的方法。尤其是对于企业的经营情况分析,接受到的有效信息非常少,还参杂了各种假消息,再加上网上弥漫的对A股上市公司的不信任氛围,让我更加坚信普通人解读基本面是不靠谱的。
再对比技术面分析方法,随便找一本技术派的书籍,读完前两章就会感到大受鼓舞,顿时产生:“原来如此,价格已经包含了所有的信息,只要看懂K线和各种指标的结构,满足这样那样的条件开仓进去,再满足这样那样的条件平仓,亏损的时候一定要及时止损,这样就能赚到钱”。
看技术分析的书籍,我记录了好多的笔记。站在当下的视角,就来依次梳理反思一下,技术面分析都有哪些问题,以及有哪些可取之处吧。若有错误的地方,还请指正。
技术分析的归纳总结
技术分析的鼻祖,可以追溯到《道氏理论》这本书,也就是道琼斯指数的作者:查尔斯·亨利·道。
道氏理论
道氏理论的开篇提出了三个根本前提: 1. 主力不能主宰趋势:主力能够通过操纵权重股来间接操纵指数的日内波动,但是对于指数的主要运动是无法操纵的。 2. 指数吸收一切因素:指数是市场中的乐观悲观情绪、所有金融消息、投机者趋势者价值投资者等的一切参与者、市场预期等的综合体现,因此未来将会发生的事件的影响都会被指数吸收,进而体现在指数变动上。 3. 止损和仓位管理是必要的:严谨的分析也会出错,因此必须要做好止损、风险控制、仓位管理。
孤立来看,这三条前提针对指数都是能够成立的,是一个好理论,但是在指导个股交易上,却留了大坑。遗憾的是,有很多技术理论开篇就是“价格反应一切因素”,然后在此前提下,通过各种奇形怪状的指标方法形态等作为开仓、止盈、止损的触发条件。
K线形态分析方法
市面上有一种非常奇怪的分析方法,就是基于数根K线的形态,构成例如头肩底、头肩顶、双重顶、双重底等,然后在什么形态下进行什么操作。更让我惊喜的是,在我输入这些词的时候,MacOS的输入法自动联想出了“头肩顶形态”和“头肩底形态”。
假设有一个随机数,每过一秒钟,就在上一次的数值基础上完全随机地变动+1
或-1
,那么下一秒其变动为+1
的概率我们可以简单的认为是50%。对于这里提到的K线形态分析方法,其假定市场在某种形态下,后续可以大概率往预期的方向走,而不是概率上的50%,因此本质上这是一种基于统计的概率分析方法。基于概率的方法,后面统一总结。
蜡烛图形态分析方法
这种分析方法针对单根K线,可以是短周期,也可以是长周期。其形态有诸如刺透形态、吞没形态、射击之星……听起来略微中二,但是与上一个方法一样,在满足什么形态的情况下,进行某种开加减平操作。尽管说的玄乎其玄,但其本质也是基于统计的概率方法,是能够进行量化回测的。
技术指标分析法
这种方法通过一些数学运算,将过去的所有价格信息、成交量等作为输入条件,通过一套算法,得到一组指标值,指标值可以是离散的也可以是连续的函数,当指标满足某种条件时进行开加减平操作。每个交易软件上都有大量可选的指标,常见的诸如MA、MACD、KDJ等。这种方法也是基于统计的概率方法,可量化回测的性质最强。
波浪理论
还有一种我愣是没理解的波浪理论,认为价格就是波浪,比如江恩理论、道氏理论、缠论等。波浪理论总能够很好地天衣无缝地进行事后解释,乍听起来他好像说的很有道理,但是稍作思考就会发现,说的都是屁话,就好比:“这个价格跌了,是因为趋势背离了”。那不是废话,趋势没背离它价格能跌么。这是一种难以量化的极其主观的概率方法。
总结,技术面分析基本上可以看成是一个基于统计的概率方法,无论是头肩顶形态、射击之星还是MACD金叉死叉,都是基于“当满足这个条件后执行这种操作的获利更大”的统计结果。
严格的交易系统
技术派非常强调要严格执行交易系统,其本质是当概率赌错时,要进行及时的止损。碰巧我有幸也了解过很多交易系统,如果要说一个有代表性的交易系统,那非【海龟交易法则】莫属。
海龟交易法则
海龟交易系统有一套完备的要素,包括了入市策略、退出策略、头寸计算、仓位管理、建仓模式、严格止损、风险管理、进入退出的信号过滤器等内容,是我接触的第一个交易系统。其有长周期和短周期两种进出策略: - 短周期策略:利用四周20个交易日价格突破作为入市信号;利用两周10个交易日价格反向突破作为退出信号。 - 长周期策略:利用11周55个交易日价格突破作为入市信号;利用4周20个交易日价格反向突破作为退出信号。
同时还设置了风险可控的仓位管理和金字塔式的加仓方法,不过很遗憾,海龟交易方法在回测中暴露出了大问题,下面以螺纹钢期货主力合约的回测结果举例。
我们先来介绍一下回测所使用的交易系统,再给出回测结果。注:回测结果的单位为合约价格变动单位,不计算手续费。
40日突破进入,2ATR止损
- 进入退出信号:以40个交易日的价格突破作为进入点;以两倍ATR的反向突破作为退出点。
- 风险资金:2%的总金额,通过风险资金和止损宽度来计算交易头寸的规模。
- 止损:两倍ATR(26日)。
- 建仓方式:设初始止损宽度为
N = 2 * ATR
,之后正向每变动N,就更新止损值,正向变动2N后开始加仓,从正向变动2N开始,每变动一个N,就增加一个交易规模的头寸。
从理论上,在开仓进入后,如果第一个止损点位都没有更新到,就触发了止损,会损失2%的本金;而假设更新了第一个止损点后再触发的止损,则会亏损掉手续费;加仓一次后止损也一样,亏损掉手续费。需要加仓两次后,才能够抵消开仓即止损的情况下产生的亏损,经过连续的加仓才能够实现较大的盈利。
回测结果:从2009年6月份到2012年2月份,交易集中在主力合约上,一共产生了22笔交易,交易情况如下: - 亏损的笔数:6笔,分别为:-138, -175, -83, -121, -130, -116
。 - 持平的笔数:10笔,滑点总亏损:-37
。 - 盈利的笔数:6笔,分别为:+71, +3854, +291, +53, +76, +99
。 - 总利润3644
,胜率27.3%
看起来回测结果非常棒,有很大的利润,那再看一下2017年的数据: - 亏损4笔,分别为:-214, -198, -196, -218
。 - 持平1笔。 - 盈利1笔:+534
。 - 总亏损292
。
同样的方法,换一个年份的数据,就变成亏损了呢。那么我们来看看其他方法呢。
TEMA 10日线与20日线交叉入场,2ATR止损
- 进入信号:以TEMA指标的10日线与20日线出现交叉作为进入点;以两倍ATR的反向突破作为退出点。
- 风险资金:2%的总金额,通过风险资金和止损宽度来计算交易头寸的规模。
- 止损:两倍ATR(26日)。
- 建仓方式:设初始止损宽度为
N = 2 * ATR
,之后正向每变动N,就更新止损值,正向变动2N后开始加仓,从正向变动2N开始,每变动一个N,就增加一个交易规模的头寸。
回测结果:取2017年全年数据,交易情况如下: - 亏损7笔,分别为:-212, -64, -198, -80, -14, -192, -113
。 - 持平0笔。 - 盈利1笔:+43
。 - 总亏损840
。
看起来被震荡行情给反复打止损了,那我们再换个进入退出条件,把止损宽度拉大试试。
40日突破进入,3ATR止损
依然取2017年全年数据,交易情况如下: - 亏损2笔:-321, -312
。 - 盈利1笔:+269
。 - 总亏损364
。
怎么还是亏了,再换个方法。
20日突破进入,2ATR或20日反向突破止损
- 进入信号:以20个交易日的价格突破作为进入点;以两倍ATR或20个交易日的反向突破作为退出点
- 止损:两倍ATR(26日)或20个交易日的反向突破。
取2017年全年数据,交易结果如下: - 亏损2笔:-176, -218
。 - 持平2笔。 - 盈利1笔:+579
。 - 总盈利185
。
类似的回测结果还有很多,我在主要的期货品种上都做了回测,回测结果喜忧参半。(数据来源:上期、郑商、大商,工具:python)
大量的回测结果可以发现,亏损是由频繁触发止损导致的,止损放得宽,可以增大胜率,但是单笔止损扩大又会导致盈亏比下降;而缩小止损宽度,虽然可以扩大盈亏比,但是胜率下降,会产生大量的止损单。下面从理论上说明要做到正期望有多难。
K线图的抽象分析
对tick数据进行处理,假设参数X
表示忽略回调值≤X
的波动,对原始数据做平滑操作,统计结果表明,经过平滑处理的数据基本符合正态分布的右半边,如下图所示。
假设在经过平滑处理的数据上,设定一个策略:只要从最高点或最低点回调的幅度>X
,就进场开仓,且设定一个止盈值Y≤X
和止损值Z=X
,根据统计结果,即使不考虑手续费,也几乎很难做到盈利,其原因是波动分布太贴近于正态分布了。
如果设定止盈过大,例如Y=X
,则分布图中,需要>X
的数量比<X
的数量多,才能做到盈利。如若将止盈降低,即Y<<X
,则虽然>Y
的数量可以比<Y
的数量多,即胜率增大,但是同时盈亏比也降低了,即Y/(Y+X)
降低。
若设定浮动止盈,即当(Y-extra)>X
时才止盈或止损,则能够保证当X取值在某个区间内的正收益。
胜率与盈亏平衡分析
除了海龟系统外,我还回测了三十多种从各种论文上扒拉下来的交易系统,其结果是都存在很大的不确定性。如果读者也在评估技术派交易系统,可以考虑从胜率与盈亏平衡的角度分析。
假设有如下六个变量,分别为: - \[ P \]:止盈点位(元) - \[ Q \]:止损点位(元) - \[ F \]:开平手续费(元),当\[ F \]为浮动值时,\[ F = M * N * f \] - \[ f \]:开平手续费率万分比(%%) - \[ M \]:当前价格(元) - \[ N \]:交易单位
则可以计算出胜率与盈亏: - 盈利为:\[ P * N - F \] - 亏损为:\[ Q * N + F \] - \[ F \]为定值时,盈亏平衡值为: \[ (Q * N + F) / ((P * N - F) + (Q * N + F)) = (Q * N + F) / ((P + Q) * N) \] - \[ F \]为浮动值时,盈亏平衡值为: \[ (Q * N + F) / ((P + Q) * N) = (Q + M * f) / (P + Q) \]
盈亏平衡值表示当胜率在这之上时,才能够实现盈利,否则会产生亏损。
万物皆可机器学习
写了这么多东西,似乎都是陈年老皮的过时方法,那么结合我计算机的背景,写一点来自跨界算法领域的降维打击吧,只要把思路大开,既然技术分析全是在那折腾计算数据的话,就应该引入稍微高级点的数学。
根据我们前面的分析,除去难以量化的主观性很强的波浪理论外,其他技术分析方法,都可以很容易地进行编程回测和设计程序化交易,这些技术分析方法的本质都是基于历史数据统计的概率方法。
说到统计和概率,那不就是分类嘛,机器学习可就有话说了!都说市场千变万化,没有什么方法能一成不变,都需要结合市场进行策略更新重组,但是机器学习本身就已经包含了最新数据高权重的自学习能力,可以说对传统的方法构成了降维打击。以后有机会专门写一篇机器学习算法在资本市场交易中的应用。
我们把思路进一步打开,都已经是计算机量化交易了,把交易频率提高,不就得到了高频量化交易嘛。在超高频下,每次只赚1个点差,同时1个点差止损,即使是价格完全随机变动的情况下,也能保证盈亏平衡,那么再结合机器学习算法,把胜率进一步提高,同时跟期货商协商一个更低的手续费,那么在小资金量的情况下,就可以做到曲线非常平滑的稳定盈利了。
量化是个好方向,为此我专门开通了永安期货的CTP席位,以后有机会再写写。前面通篇是对技术分析的介绍,下面我们要开始批判了。
技术面分析的优点继承
在资本市场,能赚到钱的方法就是好方法,有人能够通过技术分析赚钱,说明概率统计是有用的,但是同一种方法不会永远有效,概率分析说是赌博也不为过,有一个很大的原因,便是没有能力没有耐心去学习基本面解读,“基本面分析不适合中国”只不过是借口罢了。
批判与继承是对立统一的,我们取其精华去其糟粕,学一下技术派的优点吧。技术派建立起来的交易系统,是有很多优点值得我们学习的,基本上,除了进入和退出策略,以及建仓模式外,其他的都可以参考。
- 仓位管理:仓位管理可以尽可能扩大盈利,以及在基本面分析错误时尽可能降低损失。
- 风险管理:尽量降低本金的损失。
- 头寸计算:尽量避免在左侧交易时满仓一步到位。
- 严格止损:基本面不对时要当机立断进行止损。