构建一个技术分析策略需要考虑哪些因素?
发布时间:2018-01-11 | 来源: 川总写量化
作者:石川
摘要:构建一个技术分析策略大致需要考虑基础、风控和微调三大部分。随着时代的发展,传统技术分析的光环逐渐褪去。
1 引言
技术分析(technical analysis)是量化投资的一个重要组成部分。技术分析通过研究投资品历史量价信息来预测价格走势、决定投资策略。技术分析只考虑市场的价格行为,认为“历史会不断重演”、试图借由大量的统计资料来预测行情走势。技术分析的发展长河已有百年历史,在这其中出现了很多“大神”、也诞生了很多家喻户晓的技术指标,比如人们耳熟能详的 MACD、KDJ 以及布林带(Bollinger bands)等。与基本面投资不同,技术分析完全不考虑投资品(比如股票或者商品期货)的基本面信息,仅仅根据量价的特征来产生开仓、平仓信号,捕捉交易机会。因此,与基本面投资相比,技术分析对投资者的要求更低,更容易被普通投资者掌握。此外,作为技术分析代表的海龟交易法在上世纪七、八十年代的大获成功更是让人跃跃欲试。
毫无疑问,技术分析是任何量化投资的践行者必须掌握的一项技能。那么,使用技术分析手段来构建投资策略都需要注意些什么呢?本文抛砖引玉,谈一些我们的理解。构建一个技术分析策略大致需要考虑以下六点、归类为三大部分:基础、风控和微调。
接下来的二、三、四小节会使用国内商品期货数据构建策略对这三部分进行说明。我们从一个“基础版”技术分析策略出发,随着文章的深入,把上述不同组成部分逐渐添加到该策略中,说明这些组件在构建一个成功的技术分析策略时发挥的作用。最后,本文会探讨以下在当下技术分析是否还能“大展拳脚”。
2 基础篇:确定市场形态 & 选择技术指标
在技术分析中,首先要考虑的是希望交易的市场形态。市场形态可以从多个角度解读,比如从市场趋势可以把策略分为趋势追踪和均值回归策略;从交易的频率可以把策略分为以日频(或周频)数据为主的中低频策略、和以分钟及小时数据为主的日内中高频数据。假设我们选择以日线数据构建一个趋势追踪类的技术分析策略。
在确定了要交易的市场形态后,紧接着就是选择适合自己的技术指标了。任何技术指标,都是根据历史量价数据计算而来。技术指标仅仅是对量价数据的一个高度提炼、降噪的过程,以期捕捉到一些更泛化的信息;它们并不能提供任何量价以外的信息。同一类的技术指标多少都有一些大同小异。
以趋势追踪策略为例,我们在《趋势追踪:均线 vs 通道突破》比较了两大类趋势技术指标 —— 均线和通道突破,通过实证解释了它们在风险收益特征上的差异(下图)。投资者需要根据自己的风险偏好选择适合自己的技术指标。对于不同的技术交易指标和系统,Kaufman (2013) 是一本很不错的参考书。作者本人也是技术分析大牛,这本书写的非常清楚。
针对日频趋势追踪策略这个目标,我们采用唐奇安通道(Donchian channel)突破作为技术指标,构建我们的“基础版”策略。唐奇安通道由期货交易大师 Richard Donchian 发明、是海龟交易法的重要部分。它利用一段时间窗口的最高价和最低价作为通道,以价格突破通道上、下限作为多、空的开仓信号。具体的,我们的“基础版”策略如下:
在没有任何头寸时的开仓信号:
如果当日的收盘价高于前 50 日的最高价,则按下一日开盘价做多;如果当日的收盘价低于前 50 日的最低价,则按下一日开盘价做空。
平仓信号:
当持有多头头寸时,如果当日收盘价低于前 10 日的最低价时,则在下一日开盘时平掉多头仓位;当持有空头头寸时,如果当日收盘价高于前 10 日的最高价时,则在下一日开盘时平掉空头仓位。
仓位计算:
在计算每次开仓的仓位时,我们以分配的资金对于目标交易商品收益暴露为 1 这个原则(即如果目标商品收益率变化 1%,我们的净值也变化 1%)。
交易成本:
交易成本方面,假设每笔交易(包括开多、开空、平多、平空)的手续费和滑点一共为千分之一。
为了测试这个交易策略,我们使用下列来自国内商品交易所的商品的合成指数作为投资标的。回测期为 2011 年 1 月 1 日到 2017 年 6 月 23 日。
该“基础版”策略在回测期内的净值和最大回撤曲线如下图所示。它虽然取得了惊人的年化 71.01% 的收益率,夏普比率为 1.07,但是它的最大回撤却高达 -71.14%。
这样的结果说明以下两点:
1. 以唐奇安通道作为技术指标的趋势追踪策略在收益端非常有效;
2. 该“基础版”策略有着不当的风险收益特性;它的风险过大,在风险端的控制非常失败。
下面我们就来看看如何在风险端改进上述策略。
3 风控篇:仓位控制 & 跟踪止损
在风控方面,技术分析策略的两大利器是“仓位控制”和“跟踪止损”。仓位控制相当于在交易前就有针对性的计算好每笔交易的最大可能亏损,以此来确定仓位。跟踪止损则相当于在交易后随着价格走势是否有利于交易的方向来决定是否及时平仓、退出该交易。为了解释“仓位控制”和“跟踪止损”,就不得不先说另外一个指标 —— ATR(average true range,真实波动幅度均值)。它通过过去一段时间的最高价、最低价和收盘价计算出投资品的波动范围。比如一个投资品现在的价格是 500,而它的 ATR 是 20,这意味着它最近一段时间的交易区间在 500 上下 20 左右。ATR 有助于帮助我们判断某商品的价格在未来一段时间的波动范围。这对于风控至关重要。
在进行仓位控制时,常见的目标是“计算仓位以使得每次交易的最大亏损不超过给定上限”。具体实施上面,假设每笔交易的给定损失是 2% 的资金量,使用一定倍数的 ATR 计算仓位(比如 4 倍)。举个例子,假如通道上限被突破,我们选择做多。但在建仓后,投资品的价格开始下跌。那么,当价格下跌到达 4ATR 时(一个非常差的情况,即投资品的跌幅较我们的开仓价来说是 4ATR / 开仓价 × 100%),我们要求本次的交易仅仅亏损资金量的 2%,以此反推计算出仓位。加入了上述仓位控制后,策略的风险较“基础版”得到了明显的控制,虽然牺牲了很多收益,但是夏普率却较“基础版”有了显著提高,说明“基础版 + 仓位控制”策略有着更好的收益风险比。该策略的年化收益率为 33.45%,夏普比率提升至 1.25,最大回撤 -24.25%;净值和最大回撤曲线如下。
上面我们仅仅考虑了开仓前的仓位控制。在风控方面,开仓之后的止损也至关重要。具体的,止损有两个目的:
1. 当价格走势和我们的开仓信号相左时,我们的开仓量并不能够保证亏损不超过限制。这是因为如果技术指标没有发出平仓信号,那么哪怕是投资品价格下跌已经超过我们的资金量所愿意承受的亏损时,我们仍然不会平仓,而是会继续等待平仓信号。这时,如果策略中存在止损线,那么就可以在此时强行止损。
2. 当价格走势和我们的开仓信号相同时,如果趋势不强,那么在趋势结束时平仓信号给出的交易价格不一定优于我们的开仓价格。换句话说,在趋势弱的时候,我们虽然会在持仓过程中有浮盈,但是最终还会“竹篮打水一场空”。针对这种情况,一般采用动态改变止损线(称为跟踪止损),这有助于策略锁住一部分利润。比如当我们做多时,随着价格的上升,我们的止损线也相应上移。当价格回调时,如果它触及了上移后的止损线,策略就会平仓,锁定那部分利润。
假设我们用每天的收盘价 ± 2ATR 作为相应的空、多单的止损线,并根据最新的收盘价进行跟踪止损。把这个想法加入到上述“基础版 + 仓位控制”策略之上,得到新的“基础版 + 仓位控制 + 跟踪止损”策略。该策略的年化收益率为 28.09%,夏普率 1.20,最大回撤 -22.66%;净值和最大回撤曲线如下。该策略的夏普率虽然略逊于不带跟踪止损的版本,但它进一步降低了最大回撤。
“止损”是一把双刃剑。它确实能够规避价格继续向不利于交易的方向发展的风险,但同时以牺牲“价格在到达止损线之后发生反转从而减小亏损甚至产生收益”为代价。不当的止损线更是会大大降低策略的表现。但是从控制风险的角度,止损无疑是技术分析策略中的重要一环。
4 微调篇:多指标确认 & 波动率过滤
清晰的技术指标加上合理的止损,我们的趋势策略已经有了不错的基础。本节就来看看常见的微调(fine tuning)手段。这主要包括多指标确认和使用波动率对投资品进行过滤。对于围绕任何技术指标构建的策略,胜率和盈亏比都是鱼和熊掌不可兼得的一对矛盾。一个系统的胜率越高,它的盈亏比通常越低,反之亦然。为了提高胜率,技术分析领域常见的做法时同时使用多个技术指标,当这些指标均发出开仓信号时才交易。
在实证中,我们给唐奇安通道加入一个新的动量指标,用来描述趋势的强弱。该指标是 Stochastic oscillator(随机波动指标),也是根据过去一段时间的最高、最低和收盘价计算得来。它的取值范围是 0 到 100 之间,越高说明买入的动量越强;越低说明卖出的趋势越强。有人使用它作为超买超卖的指标,但大量实证显示,它被当作动量指标使用效果更好。将它和唐奇安通道突破结合,我们的开、平仓规则改为:
在没有任何头寸时的开仓信号:
如果当日的收盘价高于前 50 日的最高价且当日随机波动指标大于 70,则按下一日开盘价做多;如果当日的收盘价低于前 50 日的最低价且当日随机波动指标小于 30,则按下一日开盘价做空。
平仓信号:
当持有多头头寸时,如果当日收盘价低于前 10 日的最低价或当日随机波动指标小于 50,则在下一日开盘时平掉多头仓位;当持有空头头寸时,如果当日收盘价高于前 10 日的最高价或当日随机波动指标大于 50,则在下一日开盘时平掉空头仓位。
此外,同样考虑仓位控制以及跟踪止损,由此得到新的“基础版 + 仓位控制 + 跟踪止损 + 复合指标确认”策略。该策略的年化收益率为 27.02%,夏普率 1.27,最大回撤 -17.26%;净值和最大回撤曲线如下。较之前的版本,该策略将系统的胜率从 43% 左右提高至 48% 左右,且获得了更高的夏普率和更小的最大回撤。
由于同类型技术指标之间的高相似性,基于单一指标的策略的相关性非常高。构建策略时切记不宜使用过多的指标。使用的指标越多,样本内拟合的越精准,策略在样本外的普适性就越低。一般来说,使用两个技术指标来确认交易信号足以。
最后再来看看另一种微调思路,即使用波动率来过滤投资品。对于趋势追踪策略,实际上就是“做多波动率”。只有大起大落的投资品才能产生明显的趋势,那些死气沉沉、价格在买一卖一之间来回扭的投资品则没有趋势交易一展身手的空间。从这个观点出发,我们可以给策略加一个波动率过滤器,动态的过滤掉在当前波动率不足的投资品,而仅仅交易那些波动率高的品种。具体的,利用过去 60 天的收益率计算其标准差作为波动率的代理指标。每当某品种产生交易信号时,如果它的波动率在所有投资品中处于后 20% 则放弃该信号,不进行交易。如此,我们得到最终的“基础版 + 仓位控制 + 跟踪止损 + 复合指标确认 + 波动率过滤”策略。该策略的年化收益率为 23.41%,夏普率 1.21,最大回撤 -15.97%;净值和最大回撤曲线如下。
由于交易的品种减少,该策略更有效的控制了回撤,但是夏普率却不及前者。此外,由于我们是根据历史波动率来判断投资品未来的波动程度、决定这个投资品是否交易,这相当于变相择时,也注定加入了不确定性。
5 廉颇老矣,尚能饭否?
本文从一个基本的趋势追踪策略出发,依次加入了构建技术分析策略的重要组成部分:仓位控制、跟踪止损、多指标确认、以及波动率过滤。希望通过本文的介绍让小伙伴们看到,在开发一个技术分析策略时,哪些因素是必须考虑的,以及它们之间是如何取舍的。这五个策略的表现汇总于下表。从风险控制的角度来说,每一个因素的加入都有效降低了最大回撤。但是,这个市场上从来就没有“圣杯”,因此每一个因素的加入有都会改变策略本身的风险收益特征,需要我们根据自己的风险偏好来取舍。
技术分析的最大价值在于它能由计算机产生明确的交易信号;一个全自动化的交易系统更能够代替人来自动进行交易,从而完全摒除在面对交易时人性的弱点。正如我们在《海龟交易法则:逆人性投资》和《追求卓越,但接受交易中的不完美》阐释的那样,人性的弱点永远是交易中的最大障碍。如果交易者不能够严格按照技术指标给出的信号进行买、卖,而是掺杂了大量的主观操作,再好的策略也无能为力。
技术分析已经发展了百年,大多数现在被广泛使用的指标都是几十年前的东西。当时计算机尚未普及,绝大多数人还在看蜡烛线甚至是单一的收盘价交易。在当时,技术指标较蜡烛线和收盘价来说绝对有它的先进性;使用技术分析交易的人也绝对比那些眼儿瞪看线的人有信息优势。这些优势让技术分析的佼佼者在那个时代脱颖而出,成为一代传奇。而如今,随便一个看盘软件都能画出各种技术指标,像样一点的交易终端都可以通过简单的设定便能根据技术指标来交易。
随着使用技术指标的门槛大大降低,使用的人也越来越多。任何指标能够赚钱都是在利用了市场在某方面的非有效性,当越来越多的人使用它,这个非有效性就会降低,直至该指标失效。这就是为什么我们观察到在当下,技术分析策略越来越褪去神奇的光环。技术分析中对仓位和风险控制值得借鉴,但仅仅使用传统的技术分析就想取得非凡的投资收益的日子是一去不复返了。市场在发展,量化投资的践行者唯有不断学习新的知识和技术,才能跟上时代的步伐。
参考文献
Kaufman, P. J. (2013). Trading systems and methods + website (5th ed). John Wiley & Sons, Inc., Hoboken, NJ.
免责声明:入市有风险,投资需谨慎。在任何情况下,本文的内容、信息及数据或所表述的意见并不构成对任何人的投资建议。在任何情况下,本文作者及所属机构不对任何人因使用本文的任何内容所引致的任何损失负任何责任。除特别说明外,文中图表均直接或间接来自于相应论文,仅为介绍之用,版权归原作者和期刊所有。