技术分析与量化研究的对话(一)
由polll创建,最终由polll 被浏览 15 用户
哈利最近又有点烦(咦这个“又”字哪来的……),这市场变化太快,到底存不存在择时的空间呢。说没有吧,你看均线那套似乎又有点准;说有吧,技术分析那套看着又心里发毛。思来想去,又找来了自己在私募打(搬)拼(砖)的好兄弟波特。
**哈利:**兄弟,你快来跟我说说,这靠技术分析择时到底靠谱不?
**波特:**你怎么又来了啊。。。
![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='250' height='350'></svg>)
How old are you?(怎么老是你)
引子
**波特:**我觉得技术分析这个话题太大,有人说K线图从18世纪就有了。这个体系里既包含精华又有糟粕。实际上,Andrew Lo之类的大神曾经将一些技术分析代码化。
**哈利:**那像比如TA-lib这种技术包里的那些模型,你觉得有没有道理呢?
**波特:**这包里模型太多了,我只能说我知道的。很多技术分析框架,比如均线系统,就是非常值得尊敬的系统。在那个时代想出这么一个集合了信号、阈值和仓位调整的完整系统,同时又简单好用,堪称天才。可惜大部分人只知其然却不知其所以然,完全浪费了这么宝贵的框架和思想。
哈利:
![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='162'></svg>)
为啥我一直是这个表情
**波特:**其实均线模型包括了很多有意思的东西在里面,但是大部分书籍在介绍均线模型时候都只介绍说“当X日均线高于Y日均线就多,X日均线低于Y日均线就空或平”之类,完全不探讨背后的思想。这就导致使用者只知道按部就班的使用这个模型,却不知道如何改进,怎样推广。实际上,均线系统和量化分析有很强的联系。
**哈利:**兄弟你最棒,给我讲讲呗?
**波特:**其实这涉及策略开发了,不过至于框架……倒也不至于是机密什么的,好吧!那我们就展开讲一下均线系统和量化分析的关系吧。
**哈利:**我赶紧搬小板凳来听好。
量化角度看择时策略
**波特:**我先不过度展开,只考虑单因子的情况。我们做量化的一般是从信号出发,研究一个信号S,是否统计上与收益率R有关系。例如,alpha策略的开发步骤就是找到一个因子维度S,每个股票在这个维度上的取值是S(也就是信号),且该取值与股票在当日的收益率R是正相关的。于是,我就可以多S取值大的股票、空S取值小的股票,从而构造出一个alpha策略,对吧?
**哈利:**没错,不过我们谈论的技术分析不是时序上的么……
**波特:**你其实可以做个类比,也就是像下面这样:
把创业板过去一年每日的收益率序列 ,类比成:股票池中各个股票的收益 ;把对创业板t日收益率 有预测能力的、在t日之前发生的信息所构造出的信号 ,类比成:对股票收益率 有预测能力的信号 把对创业板每日择时导致的应持有的仓位水平 ,类比成:对T日某只股票应持有的仓位水平
这样,你就可以把在时间截面上构造alpha的各种模型和方法,类比成开发在时间维度上进行择时的策略和方法,也就是说,相当于把一个垂直于时间的截面“躺倒”在了时间维度上,把一天发生的事情分到了两年发生。
**哈利:**哦哦,经过你这个类比我明白了。就是你把每天的创业板收益率,看成是一个个独立的股票在同一时刻的收益率,就可以用类似构造alpha的方法构造择时信号了。
**波特:**思想是没错,但是具体到细节,在时间维度的信号肯定和股票截面维度不一样嘛,而且alpha策略相当于把很多天的事情放到了一天发生,自然夏普率可以做到很高;而择时策略相当于只有一个维度,夏普率很难上去。这导致择时策略很难用非常复杂的信号,因为证伪需要的时间太久了。
**哈利:**你这个类比我听懂了,但这跟均线系统有毛线关系啊?
**波特:**你先别着急,我先给你举个简单的例子,你就能看懂了。
一个例子:单均线策略
**波特:**双均线的推导太复杂,我先跟你说单均线吧,单均线的大概定义你知道把?
**哈利:**大概就是“比较T日价格和T-N到T日均价看孰高,若前者大于后者则满仓,前者下于后者则空仓”?
**波特:**差不多就是这个意思,我们转化成数学表达,是不是就是比较对t日:
这个不等式是否成立?如果成立,我就在t日满仓,获取t到t+1日的收益,否则就空仓?
**哈利:**嗯差不多就是这个意思。
**波特:**那我开始推导了。很显然这个等式等价于:
然后改写成:
左右同时除以 ,有:
我们知道对于 (x远小于1)有:
对于不太大的 i ,我们可以认为 $和 比较接近,亦即我们可以令:
则我们可将上面的不等式写成:
左右同时乘以-1,即有:
很显然,对每一个 ,我们有:
这里我们采用了通常的对数收益率的定义。将上式带入前面的公式就是:
这个式子可以化简为:
如果我把 看看作是 的权重,上面这个式子是不是就相当于比较过去n日的收益率r的一个加权平均 和0的关系,如果这个加权平均大于0就于t+1日满仓,否则就空仓?
**哈利:**所以……其实单均线可以看作是构造了一个信号,这个信号是过去一段时间窗内的日收益率的加权平均,然后这个信号大于0就在t日满仓,否则就空仓;然后持续不断地对t+1、t+2日重复计算,从而连续得到每天是满仓还是空仓?
**波特:**你可以进一步想,既然我的投资决策是理性的,就说明这个信号和t+1日预期收益率正相关,否则我就不会在这个信号大于0时满仓、而小于0时空仓了。
**哈利:**所以从这个角度,你就连续地把t日的单均线变成了一个信号,这个信号与t+1日的收益率有相关性?这样你就可以通过滚动地考察t日的信号与t+1日收益率的相关性,也就是IC,来验证这个信号是否有效了?
波特:你说得对,不仅如此,通过上面的推导,我把单均线交叉变为了我们量化分析中熟悉的收益率。这样我就能看明白单均线策略的信号,实际相当于过去一段时间收益率的加权平均(也就是卷积),且权重是随着时间的推移逐渐降低的。这时候我就可以思考,这样的权重分布(也就是窗函数)是否有意义?
哈利:也就是说,你通过推导,说明了单均线其实相当于一个窗函数和收益率时间序列的卷积,而这里的窗函数是一个直角三角形?这样你就可以看出来,基于某个均线模型,哪段时间的收益率对t+1日的收益率贡献的信息量更大,从而知道这个均线模型的优缺点?
**波特:**没错,通过这样的推导,我就可以所有的均线模型归纳成卷积形式: ,通过分析窗函数w,就可以知道这个均线的意义。而且,卷积存在结合律和分配率,通过简单变化就可以变成各种均线的衍生指标,比如MACD。
**哈利:**我还是没听明白,老哥你再详细说说呗?
各种均线对应的窗函数举例
**波特:**实际上,双均线对应的窗函数是一个非直角三角形,也就是下面这样:
![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='887' height='417'></svg>)
为了懒省事花了个等腰三角形
也就是说,对于一个长线=200天,短线=50天的双均线,其意义就是:
取过去200天的日收益率r计算其加权平均数,其中:对于0-50日,权重从0线性上升;对于50-200日,权重线性下降到0权重之和=1
然后当这个算出的平均数>0时满仓,否则空仓。为了验证结果,可以看下用双均线和卷积计算出的平均数,这两者在沪深300上测试的历史结果:
![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1164' height='536'></svg>)
可以看到几乎完全重合。
**哈利:**你这解释看着有点牛逼啊,所以其实我也可以取其他权重画出各种均线?
**波特:**没错,权重其实可以取任何的窗函数,比如以下这些各种:
![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1093' height='593'></svg>)
**哈利:**那其实我就可以看出来,对于比如(50,200)这个双均线来说,用来预测t+1日收益率时,新信息的贡献很少,信息贡献度最大的其实是50日前?
**波特:**没错,通过窗函数你就可以开始思考,到底应不应该用某种均线,它的利弊是什么?例如,如果去看历史上收益率的自相关系数,你会发现并没有什么神奇的点,与t+1日的相关性显著高于其他日期
![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1133' height='575'></svg>)
典型的自相关系数,可以看到没有什么特殊点
**哈利:**那是否说明了,其实各种均线预测效果其实都差不多,纠结太复杂的均线模型没有意义?
**波特:**其实AQR的论文里研究过相关问题,他们认为各种均线做出来的信号是高度相关的。我个人也认为既然各个均线做出的效果差不多,不如用个最简单的。但是这样会有仓位突变的问题,你需要额外的技术来解决。类似双均线这样的系统可以一个指标解决信号、仓位调整等所有问题,但也因此,很多用双均线的人浅尝辄止,并没有进行更深入的研究。
**哈利:**你的意思是,正因为双均线每次新加进去的信息很少,移出去的信息也很少,所以很稳定,仓位变化很慢,因此不需要额外的技术来平滑仓位的变化?
波特:没错,但因此双均线也成为了一个很迟钝的信号。我觉得像这种放慢信号的技术,对以前交易成本很高的市场很好,因为你不想频繁交易。但如今,这种信号就太慢了,我们完全可以分离信号本身和仓位变化这两者,兼顾新信息的权重和仓位的调整,用一些其他技术来解决频繁交易的问题。而且,其实均线系统暗示的,是过去一段收益率的加权平均(历史平均收益率)对未来的收益率有预测性。而这个信号明显是可以优化得更好的,在均线系统里实际只进行了非常粗糙的处理。同时,一般均线系统不会告诉你,策略能运行的前提,是一个收益率时间序列本身有趋势性,而这个趋势性强弱可以通过简单窗函数构造出的信号的IC测试得出。如果一个简单的窗函数IC测试通不过,那你再怎么构造窗函数,基本只等于过拟合。
**哈利:**你的意思我大概听明白了,其实我们更需要的是一个可以度量的,比如0-100分的信号,当这个信号较强时加仓,较弱时减仓,类似alpha策略那种做法:对alpha强的股票重仓、多仓,对alpha弱的股票轻仓、空仓。但是均线系统给出的这个平均收益率,在历史上不同时间可能是不具有可比性的,也就是说在样本集内不稳定,因此需要调整。
**波特:**没错,其实我们可以从很基本、很简单的角度出发,对均线信号进行调整,就可以得到一个稳定得多、而且连续的信号了。
对于双均线,用最开始的那个、把收益率时间序列看作股票集收益率的说法,就是用【t日的过去50日均线减去200日均线是否大于0】作为信号Y,把【t到t+1日收益率】看作股票X,通过Y是否大于0把X分成两个集合,对于Y>0的就做多,否则不做或者做空。这其实是个很粗糙的分层方法,而且信号也是离散的,我们更喜欢的是连续的信号,这样就可以将股票集(也就是这里的时间序列)分成很多个集合,并且对比各个集合的特点了。
**哈利:**那你快告诉我怎么做咧?
**波特:**今天聊了太多啦,下次细细跟你说!
(待续。。。)